可以处理远程通知并避免向用户显示吗?

Posted

技术标签:

【中文标题】可以处理远程通知并避免向用户显示吗?【英文标题】:It is possible to process remote notifications and avoid showing it to the user? 【发布时间】:2016-09-07 07:41:27 【问题描述】:

我在 ios 中有一个应用程序,它通过 GCM (Google Cloud Messaging) 和 APNS 接收推送通知。这些通知包含一些在向用户显示任何内容之前必须处理的数据。

数据处理后,我会生成一个本地通知,其中包含适当的信息给用户。

我看到了这种行为:

应用在前台时,我只能看到本地通知。 应用在后台时,我可以同时看到远程和本地通知。 即使应用程序未运行,也不会显示任何通知。

我可以在处理一些数据后只显示我的本地通知吗? (至少当应用在后台时)

我已经阅读了有关使用内容可用属性的信息,如 here 所述,但行为几乎相同。

【问题讨论】:

是的,你可以。看这里:***.com/questions/20741618/… 【参考方案1】:

终于我得到了解决方案(感谢@DmytroShvecov 提供的指针)。

需要按照官方文档here在服务器中按照以下步骤操作:

aps 内包含键 alertbadgesound,但值为空白。 包含 content-available 键和 1 作为值(如果您希望在后台处理通知而不与用户交互。 将任何acme 键包含在您的数据中,以将其视为自定义负载。

这是所有东西协同工作的一个例子:


  "aps": 
    "alert": "",
    "badge" : "",
    "sound":"",
    "content-available": 1
  ,
  "acme": 
    "what": "ever",
    "you": "want"
  

【讨论】:

以上是关于可以处理远程通知并避免向用户显示吗?的主要内容,如果未能解决你的问题,请参考以下文章

处理远程推送通知格式

远程通知令牌处理

远程通知无法按预期工作

使用应用程序 didReceiveRemoteNotification 处理程序获取推送通知消息

处理前一个时收到另一个远程通知操作

在Objective C(iOS)中向远程推送通知添加消息