-2

如果发件人成功向用户发送 apns 通知,突然用户将设备设置为飞行模式或请勿打扰模式,那么发件人如何知道设备是否收到通知。

将 Apns 通知发件人成功或失败。

----更新到下面的问题,IOS 应用程序有没有办法告诉发送 java 客户端收到的通知,而不需要用户启动应用程序或单击通知的操作。

例如,用户可能很忙,而设备可能处于空闲状态。在这种情况下,如果通知到达,IOS 中是否有方法或 API/方法向发送者发送确认,通知托盘中会修改带有“someID”的通知。

原因是,如果有人想对发送到设备的通知收费。如果用户没有收到它,则可能会导致问题。

4

1 回答 1

0

您需要正确理解 APNS 的概念。查看文档以更好地理解它 :) 不过,让我在这里添加一些关键信息来帮助你:)

您对 APNS 有几个错误的假设 :)

错误 1 ​​“如果发件人成功向用户发送 apns 通知”

我相信通过该声明,您的意思是使用应用程序的用户使用 APNS 向其他用户发送 APNS :)

抱歉 :) iOS 客户端应用程序不直接与 APNS 对话以发送推送通知 :) 发送推送通知的请求可能会在 iOS 客户端应用程序处生成(例如用户键入文本并单击发送)应用程序不会直接调用 APNS 和切换有效负载:) 还有一个重要的实体在后台扮演着非常重要的角色,那就是你的 App Server

当我使用 APNS 向其他用户发送文本时会发生什么?您的应用程序应该收集用户文本并将其发送到您的应用程序服务器:) 然后您的应用程序服务器与 APNS 建立双向握手:) 一旦成功,它就会以特定格式创建有效负载:) 获取它必须发送到的设备 ID数据并将其发送到 APNS,最后 APNS 将其发送到客户端应用程序 :)

错误2 将Apns 通知发送者成功或失败。

Apple 文档清楚地表明 APNS 是一项尽力而为的服务 :) 这意味着 APNS 不会对发送给它的每一个请求提供任何保证 :) 并且不提供有关在客户端成功交付包裹的任何反馈 :)

您的应用程序服务器发送到 APNS 的所有请求都会排队并在 APNS 可以自由处理它们时交付:) 如果请求 1 尚未处理并且请求 2 来自您的应用程序服务器到 APNS 请求 1 将被丢弃并且 request-2 将被处理:)

那么如何处理这种情况呢? 一旦收到消息,您的接收者 iOS 应用程序应该与您的应用程序服务器通信并通知它已收到消息/包:)

假设用户 1 发送 2 条消息 :) 假设消息 1 和消息 2 :) 现在您的应用程序服务器将消息 1 发送到 APNS,希望它将传递消息:) 如果 APNS 将其发送给用户 2,则用户 2 的应用程序应该与您的应用程序服务器通信并说嘿,我收到了消息 1 :) 现在,当用户 1 发送消息 2 时,您的应用程序服务器知道没有消息等待发送给用户 2 :)

如果当用户 1 再次发送消息 4 并且用户 2 通知他已收到消息 4 时,用户 1 发送消息 3 并且用户 2 没有从 APNS 收到任何内容,则您的应用程序服务器应该能够识别出它没有收到消息的反馈3所以它应该重新发送一次:)

还有 100 种其他方法可以让您的客户端和服务器保持同步 :)

提示 如果您正在开发依赖 APNS 的聊天应用程序是不可行的解决方案 :) 希望我至少指导了您的概念 :) 祝您编码愉快

于 2016-04-22T21:22:33.650 回答