1

アプリ iPhone のプッシュ通知を開発するためのすべての証明書を作成します。開発者証明書によって作成されたファイル .pem でテストすると動作しますが、製品証明書によって作成されたファイル .pem を使用すると動作しません。

これは私のコードです:

public function push($deviceToken,$badge,$message,$deviceType) {

              $sound = "default";

              // Construct the notification payload
              $body = array();
              $body['aps'] = array("alert" => $message);

              if ($badge)
                    $body['aps']['badge'] = $badge;
              if ($sound)
                    $body['aps']['sound'] = $sound;

              $ctx = stream_context_create();
              stream_context_set_option($ctx, 'ssl', 'local_cert', 'apns-prod.pem');
              $fp = stream_socket_client("ssl://gateway.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);

              if (!$fp) {
                    print "Failed to connect $err $errstrn";
                    return;
              } else {
                    print "Connection OK\n";
              }

              $payload = json_encode($body);
              $msg = chr(0) . pack('n',32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack('n',strlen($payload)) . $payload;
              fwrite($fp, $msg);
              fclose($fp);

    }

何か提案はありますか?

4

3 に答える 3

0

スキームのプロパティを変更して、本番証明書を試すことができます。

  • Xcode ウィンドウの左上にあるターゲット スキームをクリックし、[スキームを編集] をクリックします。

  • 「Run yourTarget」タブで、Releaseビルド構成として設定し、「なし」をデバッガーとして設定します。

  • もちろん、ターゲットにはアドホック プロビジョニング プロファイルが設定されている必要があります。

  • iPhone を接続し、iOSDevice 構成で実行します。

それは動作しますか?

編集:Release私の謝罪、代わりに言いますAd-hoc(私はそれを修正しました)

于 2012-06-27T10:33:43.247 に答える
0

プロダクション プッシュ証明書は、アドホック配布証明書 (または最終リリース) で署名されたアプリに通知を送信する場合にのみ機能します。開発者プッシュ証明書は、開発者配布証明書で署名された (つまり、XCode からデバイスにインストールされた) アプリでのみ機能します。

于 2012-06-27T10:28:01.410 に答える
0

プッシュ プロセス用の証明書を作成した後、必ず新しいアドホックまたはアプリストア配布証明書を作成してください。プッシュ対応アプリのアドホック証明書とアプリストア証明書が変更されました。

于 2012-06-29T14:38:49.523 に答える