簡體   English   中英

iOS無法接收推送通知

[英]iOS Not Receiving Push Notifications

我目前處於開發模式,並且已創建了所有開發證書,應用程序ID和APNS證書。 已下載AL1並將其安裝在鑰匙串上,而.p12已安裝在服務器中。

供應配置文件上的所有設備均已安裝該應用程序,並且均未收到該通知。

所有端口都是開放的,並且已經通過簡單的php應用程序進行了測試,並且可以運行,但不能從服務器運行。

什么東西少了?

說它與“一個簡單的PHP應用程序”一起工作有點含糊。 通過更多有關服務器上的事件流與“ php應用程序”之間的區別的信息,我們可能可以得出一些更合理的結論。

除此之外,如果你還沒有,看看這個由阿里Hafizji從raywenderlich偉大的教程(兩個部分)。 它詳細說明了您需要的所有內容,我自己使用了幾次(不過從那時起好像已經更新了)。 您說您正在服務器上安裝.p12,而我很確定他會將其與私鑰一起轉換為.pem文件。

還要確保服務器使用正確的令牌,因為您的設備令牌在開發中與在發行中有所不同。

您還應該在服務器端進行一些運行狀況檢查(在.php或用於建立與gateway.push.apple.com的連接的任何gateway.push.apple.com ),以確保服務器確實發送了任何內容。 IE,如果您正在使用mysql來訪問令牌,請放置if(!$connection){die(mysql_error());}或其他內容。 建立與Apple的連接時也應該這樣做。 使用php和stream_socket_client,您可以輸入如下內容:

$fp = stream_socket_client(
    'ssl://gateway.push.apple.com:2195', $err,
    $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);//$ctx=Stream context

if (!$fp)
    exit("Failed to connect: $err $errstr" . PHP_EOL);

實際推送通知,或者至少是我一直在使用的php方式, fwrite()返回一個布爾值(無論是否成功),因此您可以執行$result = fwrite($fp, $msg, strlen($msg)); ,如果失敗, $result將為0。

還要確保您已連接到要使用的系統(是否使用沙盒)。 我可能離這里很遠,但是我想我曾經嘗試在連接到Apple的Sandbox系統時使用生產配置文件將通知發送到我的設備,但是什么也沒收到。 您說您的證書是“開發中的”,請仔細檢查其他所有內容。

再說一遍,我的服務器上有這個.php代碼,但我不太確定“簡單的php-app可以工作,但服務器不起作用”是什么意思。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM