当应用程序不活动时如何发送和确认服务器消息

Posted

技术标签:

【中文标题】当应用程序不活动时如何发送和确认服务器消息【英文标题】:How to send and acknoledge server message when app is not active 【发布时间】:2015-09-18 07:13:14 【问题描述】:

我们希望向我们的服务器发送确认消息,以确保用户收到某个推送消息。对于 android,这非常简单,因为我们可以使用“广播侦听器”推断 GCM 推送,但对于 ios,我找不到如何执行此操作以及是否可行。

我们不需要坚持使用 ios push,但我们确实更喜欢它。因此,任何建议解决方法的答案也可以。

为了更清楚一点:我们知道苹果不保证交付并且自己不发送任何确认。这就是为什么我们希望应用程序发送确认,但是当应用程序不活动时,应用程序如何知道推送何时到达。

提前致谢。

编辑:从答案和我们自己的研究看来,使用 APNS 无法实现我们想要的。如果在应用程序状态被终止并且我们想要接收和确认消息时完全可以向应用程序发送消息,是否有人知道解决方法?

【问题讨论】:

【参考方案1】:

最好的办法是通过推送负载中的content-available 键使用“静默”推送通知 - 描述为here

只要您的应用程序正在运行(在前台或后台),您的推送通知消息就会传送到您应用程序的委托对象。在这种方法中,您可以将确认发送回您的服务器,并在需要时显示本地通知以提醒用户。

我说这是您的“最佳选择”,因为不幸的是,如果您的应用程序没有在前台或后台运行,那么通知就不会发送到您的应用程序,它只是像标准通知一样显示。没有 100% 的方法可以知道 Apple 推送通知已发送到设备。

【讨论】:

感谢您的澄清,恐怕我们想要的在 ios 上根本不可能实现..【参考方案2】:

是的,在 iOS 中是可能的,我找到了一种解决方法。请参考以下链接中的我的回答,Apple push notifications - delivery receipt

【讨论】:

欢迎提供解决方案链接,但请确保您的答案在没有它的情况下有用:add context around the link 这样您的其他用户就会知道它是什么以及为什么会出现,然后引用最相关的您链接到的页面的一部分,以防目标页面不可用。可能会删除仅是链接的答案。

以上是关于当应用程序不活动时如何发送和确认服务器消息的主要内容,如果未能解决你的问题,请参考以下文章

发送消息后保持 textarea 处于活动状态

RabbitMQ如何保证消息99.99%被发送成功?

如何由于 Django 中的不活动而使会话过期?

当用户不打开应用程序时如何发送通知?

RabbitMQ消息确认机制—消息发送确认和 消息接收确认

知道如何更改 Digits 发送的消息以确认电话号码吗?