我目前正在构建一个应用程序,该应用程序利用 iOS 7 的静默推送通知来根据请求在后台唤醒应用程序。
正如我会做的那样,-applicationDidEnterBackground:
我启动了一个后台任务,-application:didReceiveRemoteNotification:fetchCompletionHandler:
如下所示:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
self.taskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:self.taskId];
self.taskId = UIBackgroundTaskInvalid;
completionHandler(UIBackgroundFetchResultNewData);
}];
}
虽然该应用程序成功注册了远程通知并-application:didReceiveRemoteNotification:fetchCompletionHandler:
在通知到达时被调用,但该应用程序在返回挂起状态之前仅在后台停留几秒钟,远短于给定的预期执行时间(在调用时-applicationDidEnterBackground:
),我认为大约是 3 分钟。
这是预期的行为吗?还是不能使用远程通知?