2013-06-22 20 views
0

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

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

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

感谢您的任何帮助。

回答

6

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

1 - 指定PNG的拍摄画面的格式(默认的PhoneGap使用JPEG包含EXIF数据)

encodingType=navigator.camera.EncodingType; 

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

2 - 如果你想要使用JPEG而不是PNG图像,则必须在第312行和第322行之间的CordovaLib/Classes/CDVCamera.m中注释掉这些行。这是将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; 
     }