收到带有数据的远程通知时激活 iOS 应用程序

Posted

技术标签:

【中文标题】收到带有数据的远程通知时激活 iOS 应用程序【英文标题】:Activate iOS Application when remote notification with data is received 【发布时间】:2018-07-05 13:34:37 【问题描述】:

我正在为两因素身份验证创建一个 ios 应用程序。 我有一个用户登录的系统,我的服务器通过远程通知(推送消息)向我的 iOS 应用发送挑战。

当应用程序未激活时,我能够收到推送通知,这很好。 我不能做的是激活我的应用程序。我不知道该怎么做。 推送消息包含结构化数据(不是简单的警报文本消息)。

有可能吗?我可以在推送消息中设置一些标志吗?或者这是违反 iOS 准则的事情之一?

【问题讨论】:

我认为您无法通过推送激活 iOS 应用。 如果“激活”是指将应用程序带到前台,不,你不能。这可能对用户造成很大的破坏。如果用户允许,那么您可以显示一条通知,点击该通知时将使用通知负载启动您的应用程序。 【参考方案1】:

转到应用设置 -> 功能并为您的应用打开后台模式。检查最后一个选项,远程通知, 要了解更多信息,请查看本教程: This raywenderlich tutorial is all u need to get up and running with push notification


如果这不起作用,请将 : 'content_available' => true 添加到您的推送通知参数中 例如:


   "alert" :"",
    "badge" :"787",
      "Content-available" : "1" // or true,
       "sound" : ""
        

如果您为此键提供值 1,(如果用户打开您的应用程序处于后台或恢复状态)应用程序:didReceiveRemoteNotification:fetchCompletionHandler: 将被调用。

根据RemoteNotifications Programming content-available定义是

为该键提供值 1 以指示有新内容可用。包含此键和值意味着当您的应用程序在后台启动或恢复时,会调用 application:didReceiveRemoteNotification:fetchCompletionHandler:。(报亭应用程序保证每 24 小时窗口能够收到至少一次使用此键的推送。 )

【讨论】:

我认为他想激活应用程序,而不是在后台模式下运行代码。该问题明确指出他能够在后台接收消息,但不能激活应用程序。 然后他可以打开我上面给他的链接并在页面中搜索:“无声推送通知”他会找到他正在寻找的详细信息。 据我了解,静默推送通知不允许您激活应用程序。它可以让你运行代码,当然,但要激活它,不行。 没错,但“内容可用”:“1”和设置 -> 功能并为应用程序打开后台模式,肯定可以。 所以由他来决定满足他的需求是使用静默推送通知来静默唤醒他的应用程序以在后台执行一些任务或添加“内容可用”:“ 1" 参数,这将导致应用程序激活。【参考方案2】:

您可以参考有关Creating the Remote Notification PayLoad 的Apple 文档并查找“配置后台更新通知”。请记住,如果您的应用程序被强制退出,这将不起作用。确保您的应用程序正在 AppSwitcher 中显示,但处于非活动模式意味着您已经很长时间没有使用了。

【讨论】:

以上是关于收到带有数据的远程通知时激活 iOS 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

应用完全关闭时获取 FCM 远程通知 iOS

iOS - 当 wifi 或网络无线电激活时通知(不仅可用)

Xamarin 推送通知,在应用程序激活后处理远程通知

在 iOS 上,我的应用如何获取手机在后台时收到的通知数据?

带有 GCM 的 iOS 推送通知

应用程序未运行时的 iOS 10 远程通知