【问题标题】:How to remove location services request from PhoneGap iOS 6 app?如何从 PhoneGap iOS 6 应用程序中删除位置服务请求?
【发布时间】:2013-06-22 16:56:38
【问题描述】:

我正在使用 PhoneGap 2.8 创建一个 iOS 6 应用程序。我在 XCode 中构建它,而不是使用 PhoneGap Build。我的应用程序不需要位置服务,但使用相机。每次从 camera.getPicture() 调用返回时,它都会显示一个对话框以允许我的应用程序使用位置服务。如果我说不,或者位置服务被禁用,照片不会传回我的应用程序。

即使我在隐私设置中拒绝相机应用位置服务,也会发生这种情况。我还编辑了我的 config.xml 并删除了对 CDVLocation 的所有引用。我的 javascript 代码中没有对 navigator.geolocation 的引用。

为什么要求定位服务?我的 XCode 项目中是否还有其他地方需要删除此权限,或者排除 phonegap 模块? iOS 6 是否会向任何使用摄像头的应用显示此提示,即使用户已经阻止摄像头使用定位服务?

感谢您的帮助。

【问题讨论】:

    标签: ios6 geolocation cordova


    【解决方案1】:

    Phonegap 似乎会自动将 EXIF 数据添加到使用相机拍摄的 Jpeg 图像中,从而触发位置服务警报。 有两种方法可以防止这种情况发生:

    1 - 指定 PNG 为捕获图片的格式(默认 phonegap 使用包含 EXIF 数据的 JPEG)

    encodingType=navigator.camera.EncodingType;
    
    function capturePhotoEdit() {
            navigator.camera.getPicture(onPhotoDataSuccess, onFail, { encodingType: encodingType.PNG, destinationType: destinationType.DATA_URL });
        }
    

    2 - 如果您想使用 JPEG 而不是 PNG 图像,您必须在 CordovaLib/Classes/CDVCamera.m 中的 312 和 322 行之间注释掉这些行。这是代码将 EXIF 数据添加到图片中。

            NSDictionary *controllerMetadata = [info objectForKey:@"UIImagePickerControllerMediaMetadata"];
            if (controllerMetadata) {
                self.data = data;
                self.metadata = [[NSMutableDictionary alloc] init];
    
                NSMutableDictionary *EXIFDictionary = [[controllerMetadata objectForKey:(NSString *)kCGImagePropertyExifDictionary]mutableCopy];
                if (EXIFDictionary) [self.metadata setObject:EXIFDictionary forKey:(NSString *)kCGImagePropertyExifDictionary];
    
                [[self locationManager] startUpdatingLocation];
                return;
            }
    

    【讨论】:

      猜你喜欢
      • 2013-10-06
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多