2013-06-22 18 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; 
     }