我正在创建需要在特定时间在后台唤醒的应用程序。
我努力了 :
UILocalNotification :但我不想使用UILocalNotification因为它需要用户交互才能点击通知,而不仅仅是应用程序会唤醒并启动位置管理器。
我还使用
[locationManager startUpdatingLocation];
了启用背景模式位置更新,这是可行的,但它会消耗大量电池。
因此,使用新的 iOS 7 功能Silent pushNotification
和didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:
方法我需要在后台启动位置管理器,
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
NSLog(@"Receive RemoteNotification in fetchCompletionHandler with UserInfo:%@",userInfo);
application.applicationIconBadgeNumber=0;
__block UIBackgroundTaskIdentifier bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
[self.locationManager startUpdatingLocation];
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
}
静默推送通知正常工作,
PushNotification 的负载:
{"aps" : {"content-available" : 1},"SilentPushId" : "07"}
但这不会启动位置管理器,请有人帮助我。
编辑:
如果不可能,请给我一些建议。