-1

私たちの会社には複数のアプリがあり、もちろんすべて異なるアプリIDを持っています。最近、プッシュ通知がアプリ X から送信されたようにデバイスに送信され、実際にはアプリ Y に送信されたという問題が見られます

ユーザーがアプリ Y を開くと、バックエンドがそのデバイス トークンを登録します。ユーザーはアプリを少し使用し、存在します 同じユーザーがアプリ X を開き、バックエンドもこのデバイスを登録します。

プッシュ メッセージがアプリ Y に送信され、ユーザーはこのメッセージを受け取りますが、デバイスはアプリ X によって受信されたかのように表示されます。通知アプリ X をクリックすると、アプリ X が開きます。

注: すべてのアプリは別々のデータベースを使用します

使用する .pem ファイルを確認しました (apns に通知を送信するためのバックエンドは PHP で記述されています)。接続マネージャーは、適切な証明書も使用して APNS に適切に送信します。

この問題の問題点と、もちろん解決策は何でしょうか?

4

1 に答える 1

3

APNS と通信する .php スクリプトの最後で、APNS サーバーへの接続を閉じることを覚えていましたか?

この行を最後に置くだけです:

fclose($fp);

$fp は、以前に次のように宣言された接続です。

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

この問題が発生する理由は、他のアプリからの接続が閉じられていない可能性があります。それらを開いたままにしておくと、サーバーへの接続を開いた最後のアプリから新しい通知が送信されます。私の会社にも同じ問題があり、さまざまなアプリのすべての APNS スクリプトの最後で接続を閉じると、問題はなくなりました。

これがうまくいったかどうか教えてください。

于 2012-11-15T22:21:03.013 に答える