ฉันเรียกใช้การดึงพื้นหลังโดยใช้การ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 มีอะไรใหม่ใน Multitasking (# 204 จาก WWDC 2013) แสดงสิ่งนี้:
มันบอกว่าแอปพลิเคชัน "เปิดใช้เป็นพื้นหลัง" เมื่อได้รับการแจ้งเตือนแบบพุชด้วยการcontent-available
ตั้งค่าสถานะ
ทำไมแอพของฉันไม่เปิดใช้งานเป็นพื้นหลัง
ดังนั้นคำถามที่แท้จริงคือ:
iOS จะทำงานพื้นหลังหลังจากที่ผู้ใช้บังคับให้ออกจากแอพหรือไม่
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions