content-available
푸시 알림 에서 플래그를 사용하여 백그라운드 가져 오기를 트리거하고 있습니다. 나는이 fetch
와 remote-notification
UIBackgroundModes
있었습니다.
AppDelegate.m에서 사용중인 구현은 다음과 같습니다.
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
NSLog(@"Remote Notification Recieved");
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.alertBody = @"Looks like i got a notification - fetch thingy";
[application presentLocalNotificationNow:notification];
completionHandler(UIBackgroundFetchResultNewData);
}
앱이 백그라운드에서 실행 중이면 정상적으로 작동합니다. (알림이 수신되고 앱은 위의 코드와 같이 "알림이있는 것처럼 보입니다"로컬 알림을 트리거했습니다.)
그러나 응용 프로그램이 실행되지 않을 때 와 푸시 통지가와 수신 content-available
플래그, 응용 프로그램이 시작되지 않고 및 didRecieveRemoteNotification
대리자 메서드는 호출되지 않습니다.
멀티 태스킹의 새로운 기능 WWDC 비디오 (WWDC 2013의 # 204)는 다음을 보여줍니다.
content-available
플래그 와 함께 푸시 알림을 받으면 응용 프로그램이 "백그라운드로 시작됩니다"라고 말합니다 .
내 앱이 백그라운드에서 시작되지 않는 이유는 무엇입니까?
실제 질문은 다음과 같습니다.
사용자가 앱을 강제 종료 한 후 iOS에서 백그라운드 작업을 수행합니까?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions