1

我正在使用 theos 模板为越狱的 iPhone 制作通知中心(因此它在 WeeApp 上运行)。这是一个天气小部件,我希望它能够获取手机的当前位置,以便它可以从最近的车站获取天气。我目前正在使用以下代码开始获取位置:

i_locationManager = [[CLLocationManager alloc] init];
i_locationManager.delegate = self;
i_locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
i_locationUpdated = NO;
[i_locationManager startUpdatingLocation];

我有一个didUpdateLocations方法。所有这些工作正常。问题在于手机用于获得使用该位置的权限的弹出窗口。首先,它表示 SpringBoard 想要使用该位置。有没有办法让它说出我的小部件的名字?

更重要的是,保存的权限不会保留。只要手机在运行,它们就会持续存在,但每次我重新启动并再次打开通知中心时,它都会重新请求使用该位置的权限。

当然,这不是一个致命的问题,但它很烦人。有没有办法让手机记住允许小部件使用当前位置?

4

1 回答 1

2

这可能会有所帮助

[CLLocationManager setAuthorizationStatus:YES forBundleIdentifier:@"com.apple.springboard"];

这将以编程方式授权 SpringBoard。第一次您可以显示弹出窗口并将其保存在用户授权您的位置。然后,您可以在每次需要位置时自己进行操作。

至于弹出窗口中的应用程序名称。您可以尝试挂钩返回应用程序名称的 UIApplication、SBApplication、NSBundle 方法。我认为没有更简单的方法可以做到这一点。

于 2013-05-09T00:41:27.900 回答