我们公司有多个应用程序,当然都有不同的应用程序ID。我们最近看到的问题是推送通知是从应用X发送到设备的,而实际上它是为应用Y发送的
用户打开应用程序Y,我们的后端注册其设备令牌。用户使用该应用程序并存在 相同的用户现在打开app X,后端也会注册这个设备。
现在推送消息被发送到应用Y,用户收到此消息,但设备显示它就像应用X已经收到它一样。当点击通知应用程序X时,
注意:所有应用都使用单独的数据库
我们检查了我们使用的.pem文件(我们的后端向apns发送通知是用PHP编写的),这些都很好。连接管理器也使用正确的证书正确地发送给APNS。
这个问题会有什么问题,当然还有解决方案?
答案 0 :(得分:3)
您是否记得在与APNS通信的.php脚本末尾关闭与APNS服务器的连接?
将这一行放在最后:
fclose($fp);
其中$ fp是您之前声明的连接,如下所示:
$fp = stream_socket_client(
'ssl://gateway.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
您遇到此问题的原因可能是因为其他应用的连接尚未关闭。当它们保持打开状态时,会从最后一个打开与服务器连接的应用程序发送新通知。我的公司遇到了同样的问题,当我们为所有不同应用程序的所有APNS脚本结束时关闭连接时,问题就消失了。
如果这对您有用,请告诉我。