检测用户是否已禁用APN的推送通知权限

时间:2016-12-06 23:16:25

标签: ios apple-push-notifications

据我所知,我们可以在iOS客户端添加代码来检测用户是否已禁用推送通知权限,我的问题是,是否可以仅使用APN进行操作?

我首先尝试使用Apple编程指南中的“反馈服务”:

  

Apple推送通知服务包括反馈服务   提供有关失败的远程通知的信息。当一个遥控器   无法发送通知,因为预期的应用程序没有   在设备上存在,反馈服务将该设备的令牌添加到   它的清单。在传递之前到期的远程通知是   不被视为交付失败,不会影响反馈   服务。通过使用此信息停止发送远程   通知将无法交付,您减少不必要的   消息开销并提高整体系统性能。

FeedBack Service payload

因此,“反馈服务”本质上为我们提供了失败推送通知的令牌列表。我尝试将推送发送到已禁用推送通知权限或已卸载应用的设备,但我的设备令牌未显示在此列表中。

Apple的文档还提到,一旦我们发送推送通知,我们将立即得到APN的回复:

  

如果您发送APN接受的通知,则不会发生任何事情   回。如果您发送格式错误或其他通知   难以理解,APN返回错误响应数据包并关闭   连接。在格式错误之后发送的任何通知   使用相同连接的通知将被丢弃,并且必须是   怨恨。图A-2显示了错误响应数据包的格式。

但是,无论我做什么,似乎返回状态都保持不变:启用/禁用推送通知权限甚至卸载应用程序......

事实上,我的假设是,即使用户已禁用推送通知,APN仍会将其视为成功发送,但iOS只是不显示它。来自APN的响应代码似乎都与禁用的推送通知无关。

我想知道是否有办法用APN做到这一点?谢谢!

参考:Apple Doc:https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/BinaryProviderAPI.html#//apple_ref/doc/uid/TP40008194-CH13-SW1

0 个答案:

没有答案