1

GoogleCloudMessagingにプッシュ通知を作成させようとしています。デバイスを登録し、登録IDをサーバーに保存してから、プッシュメッセージをデバイスに送り返すことができます。

私はこれらすべてを行うことができ、catLogはプッシュメッセージがデバイスに届いたことを示しました。しかし、デバイスではプッシュ通知メッセージは表示されませんでした。

これの原因は何でしょうか?

念のため、デバイスを登録する方法は次のとおりです。

        GCMRegistrar.checkDevice(this); 
        GCMRegistrar.checkManifest(this);

        final String regId = GCMRegistrar.getRegistrationId(this);
        if (regId.equals("")) 
        {
            // Automatically registers application on startup. 
            GCMRegistrar.register(getApplicationContext(), SENDER_ID); 
        } 
        else 
        {        
            // Device is already registered on GCM, check server. 
            if (GCMRegistrar.isRegisteredOnServer(getApplicationContext())) 
            { 
                // Not sure what to do here :)
            } 
            else 
            {
                if ( user_id != null )
                {
                    GCMRegistrar.register(this, SENDER_ID); // google register         
                    setRegistrationId ( user_id , regId ); // saves id on server
                }
            }
        }

onPostExecuteで終了GCMRegistrar.setRegisteredOnServer(getApplicationContext()、true);を実行します。

これが私のGCMIntentServiceのonMessage()メソッドです

  @Override
  protected void onMessage(Context ctxt, Intent message) {
    Bundle extras=message.getExtras();

    for (String key : extras.keySet()) {
      Log.d(getClass().getSimpleName(),
            String.format("onMessage: %s=%s", key,
                          extras.getString(key)));
    }
  }

これは多分問題ですか?実際にはどうあるべきですか?

ありがとうございました!

4

1 に答える 1

2

これの原因は何でしょうか?

ここにいくつかの可能性があります:

  1. GCMIntentServiceアプリにサブクラスがありません。

  2. あなたはそうしますが、それはマニフェストに登録されていません。

  3. あなたはそうしますが、あなたはオーバーライドしませんでしたonMessage()

  4. あなたはそうしましたが、あなたonMessage()はイベントを適切に記録していないか、そうでなければイベントが発生したことをあなたに知らせていません。

于 2012-10-23T10:50:14.560 に答える