7

アプリにプッシュ通知を追加しようとしています。アドホック プロファイルを使用しています。appID にワイルドカードがありません。次のphpコードを使用しています...

$deviceToken="****";masked
$time = time();

 $apnsHost = 'gateway.sandbox.push.apple.com'; 

$apnsPort = 2195;
$apnsCert = 'apns-dev-maui.pem';

$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
if($apns)
{
echo "Connection Established<br/>";
$payload = array();
$payload['aps'] = array('alert' => 'It works!!', 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;

        print "sending message :" . $apnsMessage . "<br/>";
        print "sending payload :" . $payload . "<br/>";
        fwrite($apns, $apnsMessage);

}
else
{       
        echo "Connection Failed";
        echo $errorString;
        echo $error;
}
// socket_close($apns);
fclose($apns);

接続エラーは発生しません。フィードバック チャネルからは何も来ていないようです。

オーガナイザー コンソールと NSLog コマンドから deviceTokens を取得しました。このアプリの通知が設定メニューに表示されます。

私は ATT 3G と古い 2G を iPod として使用しています。どちらも機能しません。

見るエラーがないので、アイデアがありません。誰にも洞察がありますか?

ジェニファー

4

2 に答える 2

24

私はついにそれを理解しました。AdHoc プロビジョニング プロファイルで Sandbox を使用していました。アドホックは、明らかに開発ではなく本番と見なされます。プッシュ本番証明書を作成し、インストールして出来上がりです! できます。

于 2010-02-24T03:44:45.723 に答える
6

Mupsの答えは正しいです。同じ問題が発生した状況を追加したかった (他の人に役立つ場合)。プッシュセットアップがあり、正確に1つのiPhoneで動作していました(他のiPhoneではありません)。これは非常に不可解でした。問題は、動作する 1 つの iPhone にプログラムの「デバッグ」バージョンがインストールされていて、他の iPhone には「アドホック」バージョンがインストールされていたことです。APNSサーバーは、「開発」証明書とgateway.sandbox.push.apple.comを使用するようにセットアップされました

サーバー上の証明書を「本番」証明書に変更し、ホストをgateway.push.apple.comに変更しました

(その後、すべてのデバイス上のすべてのプロビジョニング プロファイルを削除し、プログラムの「アドホック」バージョンをインストールしました)

そして、私たちは行ってよかったです。

于 2010-08-26T15:10:00.037 に答える