-1

我们公司有多个应用程序,当然都有不同的应用程序 ID。我们最近发现推送通知是从应用 X 发送到设备的,而实际上它是为应用 Y 发送的

用户打开应用 Y,我们的后端注册它的设备令牌。用户使用该应用程序并存在相同用户现在打开应用程序 X,后端也注册此设备。

现在推送消息被发送到应用程序 Y,用户收到此消息,但设备显示它好像它已被应用程序 X 接收。单击通知时,应用程序 X 将打开。

注意:所有应用程序都使用单独的数据库

我们检查了我们使用的 .pem 文件(我们向 apns 发送通知的后端是用 PHP 编写的),这些都很好。连接管理器也使用正确的证书正确地发送到 APNS。

这个问题的问题是什么,当然还有解决方案?

4

1 回答 1

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 脚本结束时关闭连接时,问题就消失了。

请让我知道这是否对您有用。

于 2012-11-15T22:21:03.013 回答