我的 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!":
}
即使在生产中,两者也没有出现任何错误。