测试 VoIP 推送消息 - 消息仅到达应用内

Testing VoIP push messages - messages only arrive in-app

我有一个非常简单的 PHP 测试脚本,最初可以使用以下服务器配置:

$domain = "gateway.sandbox.push.apple.com";
$url = 'ssl://' . $domain . ':2195';

我每次都收到 PushKit 通知,包括 phone 被锁定时。然而,在尝试实现服务器端并将其转换为 HTTP/2 时一遍又一遍地测试它,它只是停止可靠地工作并且似乎只在我进入应用程序时触发。

应用程序内部:始终有效 在应用程序之外,包括刚刚后台运行的应用程序:开始工作,然后停止工作

如果我不知道即使是最基本的消息发送形式(通过 PHP 测试脚本是否有效),我也很难让它发挥作用。另外让我担心的是,如果用户发送过多消息(例如,妈妈试图连续 10 次从医院打电话),我的生产应用程序可能会遇到同样的限制。

我确实每次都会在我的 PushKit 代码路径中触发 CallKit,所以我认为我对 iOS 13 中 VoIP 推送的变化很满意。

随着时间的推移,造成这种差异的原因可能是什么?我如何(如果可能)阻止它?我怎样才能检测到它?

对于对我的问题投赞成票但没有找到回复的人:

关闭该应用程序会使 OS 认为它的优先级降低,并导致 OS 不再转发 VoIP 推送。作为开发人员,为了缓解这个问题,您需要在不启动应用程序的情况下启动调试器,这样当您从推送中打开应用程序时,它可以附加。然后仅通过 Xcode.

中的停止按钮终止应用程序

需要就此问题对测试人员进行指导。如果您确定该代码对您有效,但对测试人员无效,则他们需要卸载该应用程序,重新启动 phone 并重新安装。如果可能,永远不要手动终止应用程序。这很糟糕,我知道。