content-available
Anlık bildirimdeki bayrağı kullanarak arka plan getirmeyi tetikliyorum . Ben fetch
ve remote-notification
UIBackgroundModes
etkin.
İşte benim AppDelegate.m kullanıyorum uygulama:
- (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);
}
Uygulama arka planda çalışırken iyi çalışıyor. (Bildirim alınır ve yukarıdaki kodun yapması gerektiği gibi uygulama "bir bildirim var gibi görünüyor" yerel bildirim tetikledi).
Ancak, uygulama çalışmadığında ve content-available
bayrakla birlikte push bildirimi alındığında uygulama başlatılmaz ve didRecieveRemoteNotification
temsilci yöntemi asla çağrılmaz.
WWDC Video Çoklu Görevde Yenilikler (WWDC 2013'ten # 204) şunu gösterir:
content-available
Bayrakla birlikte push bildirimi alındığında uygulamanın "arka plana başlatıldığını" söylüyor .
Uygulamam neden arka planda kullanıma sunulmuyor?
Asıl soru şu:
Kullanıcı uygulamadan zorla çıktıktan sonra iOS arka plan görevlerini yerine getirecek mi?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions