Apple 的反馈服务没有返回要删除的令牌

Posted

技术标签:

【中文标题】Apple 的反馈服务没有返回要删除的令牌【英文标题】:Apple's feedback service returned no tokens to be removed 【发布时间】:2014-08-01 11:58:20 【问题描述】:

我已经在我的 3 台 ios 设备上安装了 ios 应用程序并为它们注册了推送通知,当我发送测试推送通知时,它到达了所有 3 台设备。后来我从一台设备上卸载了应用程序并再次发送测试推送通知并在两台设备上收到测试消息。当我运行 cron 反馈服务调用但它没有返回任何响应以删除注册的令牌。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

尝试向您卸载应用程序的设备发送另一个推送通知,然后再次尝试反馈服务。

APNS 仅在尝试向其发送推送通知时识别出该应用程序已被卸载。这就是为什么卸载后发送的第一条消息允许 APNS 知道应用程序已卸载,并且只有在发送到该设备的第二条消息之后,反馈服务才会返回设备令牌。

【讨论】:

我已经向我卸载应用程序并调用反馈服务 API 的设备发送了另一个推送通知,但它仍然给出 NULL 响应。如果您与我分享工作示例/演示,那就太好了。 @mayurjadhav 你的代码可能有问题。请发布您的代码以访问反馈服务。 $streamContext = stream_context_create(); stream_context_set_option($streamContext, 'ssl', 'local_cert', 'apns-development-7ac5b639b8.pem'); $apns = stream_socket_client('ssl://feedback.sandbox.push.apple.com:2196', $error, $errorString, 60, STREAM_CLIENT_CONNECT, $streamContext); $token = unpack('Ntime/nlength/Htoken', $apns); $feedback_tokens = 数组(); while (!feof($apns)) $data = fread($apns, 38); if (strlen($data)) $feedback_tokens[] = unpack("N1timestamp/n1length/Hdevtoken", $data); $result = fread($apns, 38);回声'结果='。 $结果; fclose($apns);【参考方案2】:

我也在为此苦苦挣扎。 php technique to query the APNs Feedback Server

我也找到了

反馈服务不会标记已删除的应用,如果它是 设备上最后/仅推送启用的应用程序。要成功测试,您 将需要安装另一个启用推送的应用程序并离开该应用程序 在您删除正在测试的应用程序后安装。

我还没有测试自己。我不明白为什么会这样。

我的测试设备也用于个人用途,因此我有多个支持推送的应用程序,但我还没有在反馈服务上获得标记为已删除的令牌。

最后,请注意

反馈服务的列表在您阅读后被清除。每一次 你连接到反馈服务,它返回的信息列表 仅显示自您上次连接后发生的故障。

这是一场测试的噩梦。

【讨论】:

以上是关于Apple 的反馈服务没有返回要删除的令牌的主要内容,如果未能解决你的问题,请参考以下文章

PHP Apple Push Notifications 反馈服务

使用 Apple 登录刷新令牌验证仅返回访问令牌

用 PHP 处理 Apple Push Notification Service 的设备令牌的方法

PHP如何解压Apple APNS反馈数据

如何使用 java 编写 APNS 反馈服务?

从 APNS 收到的设备令牌的生命周期