0

そのため、アプリケーションを EC2 インスタンスに移動したところ、Apple プッシュ通知サービスが機能しなくなりました。同じ証明書、同じスクリプト、すべて同じものを使用しています。

  • EC2 インスタンスのセキュリティ グループでポート 2195 を開きました。
  • EC2 インスタンスから、telnet gateway.push.apple.com 2195 が動作します
  • 私のスクリプトはエラーを受け取りません...すべてが終了し、fwriteがtrueを返します...それでも、プッシュは受け取りません。

注意事項。

  • 私の EC2 インスタンスは、古いサーバーが http だった https 経由でアクセスされますが、スクリプトはローカルで実行され、Apache とは関係がないため、これが問題になる理由がわかりません。しかし、おそらくそうなので、お知らせします:D

私のスクリプト:

$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
$ssl = 'ssl://' . $apnsHost . ':' . $apnsPort;
$apns = stream_socket_client($ssl, $error, $errorString, 30, STREAM_CLIENT_CONNECT, $streamContext);
if($apns == false){
    echo "Error: $errorString";
    return false;
}
$payload['aps'] = array('alert' => $message, 'badge'=>$badge, 'sound' => 'default');
$payload = json_encode($payload);

$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $device_id)) . chr(0) . chr(strlen($payload)) . $payload;
if(fwrite($apns, $apnsMessage)){
    return true;
}
return false;

すべての変数を確認しましたが、設定されています。

どんな助けでも大歓迎です。これは私を夢中にさせています:P

4

1 に答える 1

0

間違ったデバイス ID を指定していたことが判明しました。データベースが異なっていて、何かをうまく保存できませんでした。:(

于 2013-05-29T20:27:10.663 に答える