2012-09-21 150 views
0

我一直在實現一個小的PHP腳本,它會將推送通知發送到Apple的APN服務器。 我有一個數據庫,其中包含所有設備令牌,用於在我的應用程序中註冊推送通知。 我的腳本將查詢數據庫中的令牌並將它們發送給Apple。 一切都很好,但是...我手動在我的表格中插入了一個錯誤的標記並再次執行腳本。發送錯誤令牌後的iOS推送通知錯誤

我已經意識到,之後,錯誤的令牌發送到蘋果,所有通知後,將不會到達設備。 如果一切正常,Apple似乎不會返回任何狀況,但如果出現問題,它確實會發送KO代碼。我從蘋果公司那裏得到了一個錯誤的令牌錯誤信息,但之後我沒有收到任何其他通知的迴應。

我只打開數據庫內所有令牌的一個連接。

我製備插座上下文與該行:

$streamContext = stream_context_create(array(
  'ssl' => array(
   'local_cert' => $this->signFile 
 ) 
 )); 

然後開始與APN服務器的通信信道:

$this->hFile = stream_socket_client(self::$serverUrl[$environment], $err, $errstr, 60, STREAM_CLIENT_CONNECT, $streamContext); 

最後,我發送消息:

fwrite($this->hFile, $command); 

我想爲每個通知設置一個新的連接,但我想首先詢問SO意見...

順便說一下,我知道PHP並不是最好的選擇,但它是來自其他地方的需求,我們被迫以這種方式設置系統。

謝謝,祝你有個愉快的一天,

Alex。

回答

0

我終於找到了一個解決方案: 一旦我檢測到一個令牌無效,我關閉連接並再次打開它,開始發送令牌後錯誤的。