0

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

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

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

感谢您的任何帮助。

4

1 回答 1

6

似乎 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-08-05T03:58:06.627 回答