ios - WeeApp iOS 通知中心小部件 : Location Services doesn't save permissions (jailbreak)

标签 ios objective-c cllocationmanager jailbreak theos

我正在使用 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/

相关文章:

ios - uiscrollview 中的多个 ImageView 在旋转设备时产生问题

ios - 在后台线程上安全保存 Core Data 托管对象上下文的正确方法?

ios - 协议(protocol)中 segue 标识符的条件

iphone - 每次都收到当前位置的警报

ios - 沿着最后更新的 GPS 坐标平滑地移动和旋转 GMSMarker Swift iOS

ios - 假 UINavigation 栏

ios - 在 iOS 7 中,如果我使用 `prefersStatusBarHidden` 方法隐藏状态栏,导航栏会缩小/失去高度。我可以停止这种行为吗?

objective-c - 为什么在不设置断点的情况下程序会暂停而不崩溃?

iphone - 关于 iPhone 和 iPad 的编程差异

ios - 快速获取另一个类(class)的位置结果