如何使用 Zend 框架收听 APN 反馈服务器


How do I listen to the APN Feedback Server using the Zend Framework?

老实说,我不是后端开发人员,所以我不知道如何正确地做到这一点。

我想使用 Zend Framework 2.x.x 向 iOS 和 Android 发送推送通知。我了解这里的大部分内容,所以我相信我现在可以轻松地向设备发送推送通知。

我现在陷入困境的是实现侦听器。引用文本:

APNS 有一个您必须收听的反馈服务。苹果公司表示, 他们监控提供商以确保他们正在收听此内容 服务。

反馈服务仅返回设备令牌数组和 时间。您可以使用这段时间来确保设备没有 自上次发送以来重新注册推送通知。

在下面附加此代码:

$apns = new Zend_Mobile_Push_Apns();
$apns->setCertificate('/path/to/provisioning-certificate.pem');
try {
    $apns->connect(Zend_Mobile_Push_Apns::SERVER_FEEDBACK_SANDBOX_URI);
} catch (Zend_Mobile_Push_Exception_ServerUnavailable $e) {
    // you can either attempt to reconnect here or try again later
    exit(1);
} catch (Zend_Mobile_Push_Exception $e) {
    echo 'APNS Connection Error:' . $e->getMessage();
    exit(1);
}
$tokens = $apns->feedback();
while(list($token, $time) = each($tokens)) {
    echo $time . "'t" . $token . PHP_EOL;
}
$apns->close();

实际上了解它是如何工作的,以及我应该如何处理服务器返回的反馈。我不知道的是,这个脚本是如何"监听"苹果推送通知反馈服务器的?我不认为我可以在文件中输入这段代码,然后奇迹般地期望Apple的服务器找到它。如何持续"侦听"反馈服务器,以便在 Apple 需要时调用此脚本?

Apple 不会调用你的脚本。您的脚本会定期调用 Apple 的反馈服务(例如,每天一次 - 您决定运行脚本的频率)。然后,处理反馈服务返回的设备令牌,并从数据库中删除过时的设备令牌。

每天查询反馈服务以获取设备令牌列表。用 用于验证设备令牌是否尚未 自生成反馈条目后重新注册。对于每个设备 尚未重新注册,请停止发送通知。APNs 监控提供商在检查反馈方面的勤奋程度 服务并避免向不存在的发送推送通知 设备上的应用程序。

您可以在此处阅读有关反馈服务的更多信息。