iOS – 从后台自动打开应用程序

是否可以以某种方式从后台模式重新打开应用程序? 例如,如果后台的应用程序正在检查服务器是否有某个标志,然后在触发时它会自动转到前台?

如果没有,我可以显示消息并播放声音,以便用户请求重新打开应用程序吗?

例如,WhatsApp如何实现这一目标?

无法自动打开应用程序,这意味着将应用程序显示给用户。

但是,可以使用推送通知在后台打开您的应用程序,以便它可以执行短任务。 这是通过使用content-available字段创建推送通知来实现的。

如果您的服务器在您的应用有新内容时向用户的设备发送推送通知,您可以要求系统在后台运行您的应用,以便它可以立即开始下载新内容。 此背景模式的目的是最小化用户看到推送通知与应用程序能够显示关联内容之间经过的时间。 应用程序通常会在用户看到通知的大致相同的时间唤醒,但仍然比您提供的时间更长。

要支持此后台模式,请从Xcode项目的“function”选项卡的“后台模式”部分启用“远程通知”选项。 (您还可以通过在应用程序的Info.plist文件中包含带有remote-notification值的UIBackgroundModes键来启用此支持。)

对于触发下载操作的推送通知,通知的有效负载必须包含内容可用密钥,其值设置为1.当存在该密钥时,系统会在后台唤醒应用程序(或将其启动到后台)并且调用app delegate的应用程序:didReceiveRemoteNotification:fetchCompletionHandler: method。 您对该方法的实施应下载相关内容并将其集成到您的应用中。

下载任何内容时,建议您使用NSURLSession类来启动和管理下载。 有关如何使用此类管理上载和下载任务的信息,请参阅URL加载系统编程指南


我可以显示消息并播放声音,以便用户请求重新打开应用程序吗?

是的,您可以使用本地通知或推送通知

根据Apple的应用程序在后台所有function将自动暂停,并将在应用程序再次激活时恢复。唯一可以做徽标或声音的本地通知请阅读此文档以获取更多信息通知

如果后台的应用程序正在检查服务器是否有某个标志,然后在触发时它将自动转到前台?

目前不可能。

我可以显示消息并播放声音,以便用户请求重新打开应用程序吗?

是。 当您发送本地通知时,会在用户屏幕上弹出警报。 添加本地通知的示例代码:

 UILocalNotification* localNotification = [[UILocalNotification alloc] init]; localNotification.alertBody = @"AlertBody"; localNotification.alertAction = @"AlertAction"; localNotification.timeZone = [NSTimeZone defaultTimeZone]; [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 

通过点击通知打开应用程序时,以下参数’launchOptions’将获得值:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

调试并找到launchOptions的值:

  [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];