Tôi đang kích hoạt tìm nạp nền bằng cách sử dụng content-available
cờ trên thông báo đẩy. Tôi có fetch
và remote-notification
UIBackgroundModes
kích hoạt.
Đây là cách triển khai tôi đang sử dụng trong AppDelegate.m của mình:
- (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);
}
Khi ứng dụng đang chạy ẩn, nó hoạt động tốt. (Thông báo được nhận và ứng dụng kích hoạt thông báo cục bộ "có vẻ như tôi đã nhận được thông báo", như mã ở trên sẽ làm).
Tuy nhiên, khi ứng dụng không chạy và nhận được thông báo đẩy bằng content-available
cờ, ứng dụng sẽ không được khởi chạy và didRecieveRemoteNotification
phương thức ủy nhiệm không bao giờ được gọi.
Video WWDC có gì mới với đa nhiệm (# 204 từ WWDC 2013) cho thấy điều này:
Nó nói rằng ứng dụng được "khởi chạy vào nền" khi nhận được thông báo đẩy cùng với content-available
cờ.
Tại sao ứng dụng của tôi không khởi chạy vào nền?
Vì vậy, câu hỏi thực sự là:
IOS sẽ thực hiện các tác vụ nền sau khi người dùng đã thoát khỏi ứng dụng?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions