如何从 PhoneGap iOS 6 应用程序中删除位置服务请求?
Posted
技术标签:
【中文标题】如何从 PhoneGap iOS 6 应用程序中删除位置服务请求?【英文标题】:How to remove location services request from PhoneGap iOS 6 app? 【发布时间】: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 是否会向任何使用摄像头的应用显示此提示,即使用户已经阻止摄像头使用定位服务?
感谢您的帮助。
【问题讨论】:
【参考方案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;
【讨论】:
以上是关于如何从 PhoneGap iOS 6 应用程序中删除位置服务请求?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法使用 worklight 6.2 或 phonegap 混合应用程序从 android 和 ios 中的另一个应用程序启动一个应用程序?
如何从 iOS 上的 PhoneGap 应用程序连接到 SignalR 集线器?
我无法使用 CDVPlugin 从 phonegap 2.7.0 中的 javascript 访问本机 iOS?
如何在phonegap ios中将设备令牌从Xcode抓取到javascript?
从PhoneGap Camera API返回时如何隐藏iOS7状态栏?
PhoneGap:iOS 7 中的 UIPickerView 不会像在 iOS 6 中那样自动调整字体大小。关于如何在 iOS 7 中实现的任何解决方案?