0

我的 ios 应用程序推送通知系统存在问题:它在开发中完美运行,但在生产中无法运行。现在我有一个疑问。在这里https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ProvisioningDevelopment/ProvisioningDevelopment.html 我读到 pem 证书必须“安装”在服务器上。

在开发时,我只将开发 .pem 复制到发送推送通知的 php 脚本的同一目录中,并让脚本使用它。在生产中(我的应用程序在应用程序商店中运行)我必须以某种方式在服务器上“安装”分发 .pem?

注意:为了验证一切都以正确的方式进行,我这样做:

   $fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
 if(!$fp){
     print "All ok!";
 }

    $msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack        ("n",strlen($payload)) . $payload;
    print "sending message :" . $payload . "n to device:".$deviceToken."</br>";
    $result=fwrite($fp, $msg);
    if (!$result)
        print "All ok!":
}

即使在生产中,两者也没有出现任何错误。

4

1 回答 1

0

您只需在服务器上复制您的 ssl 证书并从脚本中引用它即可安装它。

我的问题是,在包含我的设备令牌(将通知发送到)的数据库中,我的开发设备生成了一些设备令牌。如果您将开发令牌发送到生产苹果服务器,它会终止连接,避免您在同一连接上发送任何其他通知。非常感谢苹果服务器!

于 2013-03-29T10:26:49.020 回答