我正在使用 theos 模板为越狱的 iPhone 制作一个通知中心(因此它在 WeeApp 上运行)。这是一个天气小部件,我希望它能够获取手机的当前位置,以便从最近的站点获取天气信息。我目前正在使用以下代码开始获取位置:
i_locationManager = [[CLLocationManager alloc] init];
i_locationManager.delegate = self;
i_locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
i_locationUpdated = NO;
[i_locationManager startUpdatingLocation];
我有一个 didUpdateLocations
方法。所有这些都很好。问题在于手机用于获取使用该位置的权限的弹出窗口。首先,它说 SpringBoard 想要使用该位置。有什么方法可以让它说出我的小部件的名称吗?
更重要的是,保存的权限不会保留。只要手机在运行,它们就会持续存在,但每次我重新启动并再次打开通知中心时,它都会重新请求使用该位置的权限。
当然,这不是一个致命的问题,但它很烦人。有什么方法可以让手机记住允许小部件使用当前位置?
最佳答案
这可能有帮助
[CLLocationManager setAuthorizationStatus:YES forBundleIdentifier:@"com.apple.springboard"];
这将以编程方式授权 SpringBoard。第一次你可以显示弹出窗口并保存在用户授权你的地方。然后,您可以在每次需要位置时自行完成。
至于弹出窗口中的应用程序名称。您可以尝试 Hook 返回应用程序名称的 UIApplication、SBApplication、NSBundle 方法。我认为没有更简单的方法。
关于ios - WeeApp iOS 通知中心小部件 : Location Services doesn't save permissions (jailbreak),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15572753/