2013-03-22 39 views
1

我正在使用theos模板为越狱iPhone创建通知中心(因此它在WeeApp上运行)。这是一个天气部件,我希望它能够获取手机的当前位置,以便能够从最近的电台获取天气。我目前使用下面的代码开始变得地点:WeeApp iOS通知中心小部件:位置服务不保存权限(越狱)

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

,我有一个didUpdateLocations方法。所有这一切都很好。问题出在手机用来获取使用位置的权限弹出。首先,它表示SpringBoard想要使用该位置。有没有办法让它说我的小部件的名字呢?

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

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

回答

2

这可能有助于

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

这将编程授权跳板。您第一次可以显示弹出窗口并保存在某个用户授权的位置。然后你可以自己做,每次你需要位置。

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

+0

谢谢!你知道是否有类似的方法将授权状态清除回“kCLAuthorizationStatusNotDetermined'?替换“NO”似乎将其设置为“kCLAuthorizationStatusDenied”。 – drewmm 2013-05-09 06:11:13

+0

对不起,没有。要清除授权状态,我将从/var/root/Library/Caches/locationd/clients.plist中删除有关我的应用程序的所有信息。在你的情况下,它是com.apple.springboard然后我杀死定位进程来应用这些更改,否则他会忽略它们。 – creker 2013-05-09 13:37:02

+0

完美!那会很好。非常感谢。 – drewmm 2013-05-09 14:34:51