假设我有一个 native iOS 应用程序,它呈现两个或多个请求位置服务权限的 Web View 。
例如,想象一个应用程序比较给定查询的 map 结果 - 例如,用户提交一个地址,一个 WebView 显示来自 google map 的结果,另一个 WebView 显示来自 bing 的结果,等等。
是否有任何方法可以避免每个离散的 Web View 通过破坏性警报 View 请求位置服务许可?
如果应用程序的唯一目的是比较各种基于位置的 Assets ,那么我的应用程序似乎应该询问用户一次他们是否批准使用位置服务的应用程序。我的 WebView 如何继承此权限,或者位置服务架构不可能实现这一点?
如果无法聚合访问位置服务的权限,是否有办法保留每个离散提供商的权限?例如,用户不必每次运行应用程序时都批准对每个 map 的访问...从而产生三个警报 View (应用程序和两个 WebView ),每次启动时都询问相同的事情。
避免这种行为的唯一方法是对 map 提供程序而不是 webview 实现 native API 调用吗?
欢迎任何意见。
最佳答案
是的,你可以做到这一点。为此,请使用您的 appDelegate 类。如果位置交互代码很简单,只需在appDelegate中创建一个获取授权状态的方法,并在didFinishLaunching方法中调用即可。
我用类似的方法做这样的事情:
- (BOOL)setupLocationMgr
{
CLLocationManager *locationMgr = [[CLLocationManager alloc] init];
locationMgr.purpose = @"Location tracking for XXX app.";
return [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized;
}
然后,appDelegate 保留 CLLocationManager 对象,并可以将其返回到任何需要它的 View 。
关于objective-c - 避免多个位置服务警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10452093/