是否可以通过某种方式从后台模式重新打开应用程序? 例如,如果后台的应用程序正在检查服务器是否有某个标志,然后在触发时它会自动转到前台吗?
如果没有,我可以显示消息并播放声音,以便用户请求重新打开应用程序吗?
例如WhatsApp如何实现这一目标?
答案 0 :(得分:7)
无法自动打开应用,这意味着向用户显示应用。
但是,可以使用推送通知在后台打开您的应用程序,以便它可以执行短任务。这是通过使用content-available
字段创建push notification来实现的。
如果您的服务器在您的应用有新内容时向用户的设备发送推送通知,则可以要求系统在后台运行您的应用,以便它可以立即开始下载新内容。此背景模式的目的是最小化用户看到推送通知与您的应用程序能够显示关联内容之间经过的时间。应用程序通常会在用户看到通知的大致相同的时间唤醒,但仍然比您提供的时间更长。
要支持此后台模式,请在Xcode项目的“功能”选项卡的“后台模式”部分中启用“远程通知”选项。 (您还可以通过在应用的
UIBackgroundModes
文件中添加remote-notification
值和Info.plist
值来启用此支持。)对于触发下载操作的推送通知,通知的有效负载必须包含内容可用密钥,其值设置为1.当存在该密钥时,系统会在后台唤醒应用程序(或将其启动到后台)并调用app delegate的application:didReceiveRemoteNotification:fetchCompletionHandler:方法。您对该方法的实施应下载相关内容并将其集成到您的应用中。
下载任何内容时,建议您使用NSURLSession课程来发起和管理下载内容。有关如何使用此类管理上载和下载任务的信息,请参阅 URL Loading System Programming Guide 。
我可以显示消息并播放声音,以便用户请求重新打开应用程序吗?
答案 1 :(得分:0)
根据Apple的说法,当应用程序处于后台时,所有功能都将自动暂停,并在应用程序再次激活时恢复。只有您可以使用徽章或声音进行本地通知,请阅读此文档以获取更多信息Notification
答案 2 :(得分:0)
如果后台的应用程序正在检查服务器是否有某些标志,并且 那么当被触发时,它会自动转到前台吗?
截至目前尚不可能。
我可以显示消息并播放声音,供用户请求应用 重新打开?
是。当您发送本地通知时,将在用户屏幕上弹出警报。添加本地通知的示例代码:
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];