【发布时间】:2015-08-27 12:47:14
【问题描述】:
是否可以通过某种方式从后台模式重新打开应用程序? 例如,后台的应用程序正在检查服务器的某个标志,然后当触发时,它会自动转到前台?
如果没有,我可以显示一条消息并播放声音让用户请求重新打开应用程序吗?
例如 WhatsApp 如何实现这一点?
【问题讨论】:
标签: ios
是否可以通过某种方式从后台模式重新打开应用程序? 例如,后台的应用程序正在检查服务器的某个标志,然后当触发时,它会自动转到前台?
如果没有,我可以显示一条消息并播放声音让用户请求重新打开应用程序吗?
例如 WhatsApp 如何实现这一点?
【问题讨论】:
标签: ios
无法自动打开应用程序,这意味着将应用程序显示给用户。
但是,可以使用推送通知在后台打开您的应用程序,以便它可以执行一个简短的任务。这是通过使用content-available 字段创建push notification 来实现的。
如果您的服务器在您的应用有新内容可用时向用户的设备发送推送通知,您可以要求系统在后台运行您的应用,以便它可以立即开始下载新内容。这种后台模式的目的是尽量减少从用户看到推送通知到您的应用能够显示相关内容之间的时间。应用程序通常在用户看到通知的大致同一时间被唤醒,但这仍然会给您比其他情况更多的时间。
要支持这种后台模式,请从 Xcode 项目的 Capabilities 选项卡的 Background mode 部分启用 Remote notifications 选项。 (您还可以通过在应用的
Info.plist文件中包含UIBackgroundModes键和remote-notification值来启用此支持。)对于触发下载操作的推送通知,通知的有效负载必须包含值设置为 1 的内容可用键。当该键存在时,系统会在后台唤醒应用程序(或将其启动到背景)并调用应用程序委托的application:didReceiveRemoteNotification:fetchCompletionHandler: 方法。您对该方法的实现应下载相关内容并将其集成到您的应用中。
下载任何内容时,建议您使用NSURLSession 类来启动和管理您的下载。有关如何使用此类管理上传和下载任务的信息,请参阅URL Loading System Programming Guide。
我可以为用户显示一条消息并播放声音以请求重新打开应用程序吗?
【讨论】:
根据 Apple 的说法,当应用程序在后台运行时,所有功能将自动暂停,并在应用程序再次激活时恢复。您唯一可以通过徽章或声音进行本地通知的方法请阅读此文档以获取更多信息 Notification
【讨论】:
如果后台的应用程序正在检查服务器的某些标志,并且 那么触发时会自动转到前台吗?
目前不可能。
我可以为用户显示一条消息并播放声音来请求应用程序吗 重新打开?
是的。当您发送本地通知时,用户屏幕上会弹出一个警报。添加本地通知的示例代码:
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];
【讨论】: