특정 시간에 백그라운드에서 깨어나야하는 앱을 만들고 있습니다.startUpdating 자동 푸시 알림을 통한 LocationManager의 위치
UILocalNotification을 :
나는 시도하지만이 일어나 위치 관리자를 시작합니다 통지에 만 응용 프로그램보다 활용할 사용자 상호 작용이 필요하기 때문에 나는 UILocalNotification을 사용하지 않습니다.
배경 모드로 활성화 된
[locationManager startUpdatingLocation];
도 사용했습니다. 위치 업데이트는 작동하지만 배터리가 많이 소모됩니다.
그래서 새로운 아이폰 OS 7 기능 Silent pushNotification
및 didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:
방법을 사용하여 내가 PushNotification를 들어,
-(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;
}];
}
자동 푸시 알림이 제대로 작동, 배경 위치 관리자를 시작
페이로드가 필요합니다
{"aps" : {"content-available" : 1},"SilentPushId" : "07"}
하지만 위치 관리자를 시작하십시오 누군가 제발 도와주세요.
편집 :
나에게 몇 가지 제안을주지하시기 바랍니다 할 수없는 경우.
앱은 포 그라운드로 될 수 있습니까? – Mani
@iMani : 아니요, 그렇지 않습니다. – Optimistic
항상 위치 관리자를 백그라운드에서 시작하지 않았거나 때때로 실패하고 백그라운드에서 시작합니다. – Mani