2013-03-20 68 views
0

我的推送通知系统针对ios的应用程序存在问题:它在开发中完美工作,但不适用于生产。 现在我有一个疑问。这里https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ProvisioningDevelopment/ProvisioningDevelopment.html 我读过,必须在服务器上“安装”pem证书。如何为推送通知安装ssl证书?

在开发过程中,我只将开发.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!": 
} 

即使在生产中,两人并没有引发任何错误。

+0

我使用编辑中写的两段代码来验证套接字打开。他们好吗?他们不会发出任何错误。设备令牌似乎是生产版本,因为我从应用程序商店安装了我的ipad上的应用程序,使得我的php脚本以这种方式将应用程序接收到的令牌写入我的数据库,然后发送推送,但没有运气。在我的目标中,发布的代码签名标识包含我的公司名称和“Iphone发行版”的配置文件。没关系?这是问题:一切似乎都没问题。已经两天了,我正在为此而苦苦挣扎。这是让我疯狂的^^'' – 2013-03-20 14:23:27

+0

哦,好吧,问题是,似乎所有人都以正确的方式前进,但没有任何通知到达任何设备。我也试过在我从未安装应用程序的设备上进行全新安装。 – 2013-03-20 14:25:27

回答

0

您不需要在服务器上复制您的SSL证书,并从脚本中引用它来安装它。

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