从后台唤醒应用程序 iOS
Posted
技术标签:
【中文标题】从后台唤醒应用程序 iOS【英文标题】:Waking up app from background iOS 【发布时间】:2015-02-15 13:45:48 【问题描述】:我正在使用静默通知从后台唤醒我的应用。当我关闭我的应用程序时一切正常,但是当我终止它(向上滑动)它停止工作。我可以感觉到(振动)静音通知已发送,但我的应用程序没有处理它。我做了一个本地通知,当静默通知到达时应该触发。在我的 .plist 中,我启用了远程通知和后台获取。在 AppDelegate.m 我有这个:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
UILocalNotification *notification_ = [[UILocalNotification alloc]init];
notification_.alertBody = [NSString stringWithFormat:@"Psst!"];
notification_.soundName = UILocalNotificationDefaultSoundName;
[notification_ setFireDate:[NSDate dateWithTimeIntervalSinceNow:2]];
[notification_ setTimeZone:[NSTimeZone defaultTimeZone]];
[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification_]];
【问题讨论】:
【参考方案1】:application:didReceiveRemoteNotification
仅在您的应用程序实际在前台和后台运行时执行。这就是为什么在您终止应用程序后不会调用上述方法的原因。
当您的应用未运行并从通知中打开时,应改为在application:didFinishLaunchingWithOptions
中处理通知。 launchOptions
字典应包含键 UIApplicationLaunchOptionsRemoteNotificationKey
,它指的是通知负载。
有关更多信息,请查看Local and Remote Notification Programming Guide 的“处理本地和远程通知”部分
【讨论】:
我需要提供静默推送以每天在后台运行一次我的应用程序,现在我有点困惑。要在应用程序终止时完成此操作,我需要在application:didFinishLaunchingWithOptions
中使用 UIApplicationLaunchOptionsRemoteNotificationKey
?
对不起,我没有注意到那里的静音部分。尽管如此,AFAIK 静默通知只是将content-available
作为其有效负载一部分的通知。在application:didFinishLaunchingWithOptions
中处理它并没有那么大的意义。
应用终止时如何处理静默推送?
显然,当应用程序终止时,您无法处理静默通知。更深入的解释见this answer。
所以没有办法在后台唤醒我的应用程序?以上是关于从后台唤醒应用程序 iOS的主要内容,如果未能解决你的问题,请参考以下文章
Phonegap 每 5 分钟在后台唤醒应用程序以检查位置 iOS