2013-03-20 93 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證書,並從腳本中引用它來安裝它。

我的問題是,在包含我的設備令牌的數據庫,它發送通知,有一些設備令牌由我的開發設備生成。如果您向生產蘋果服務器發送開發令牌,則會終止連接,從而避免在同一連接上發送任何其他通知。非常感謝你的蘋果服務器!