0

これらは、それぞれ onStart() と onStop() でメイン アクティビティ内から呼び出される 2 つのメソッドです。

private void registerForMessages()
{
    Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
    registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0));
    registrationIntent.putExtra("sender", "my project id");
    startService(registrationIntent);
}

private void unRegisterForMessages()
{
    Intent unregIntent = new Intent("com.google.android.c2dm.intent.UNREGISTER");
    unregIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0));
    startService(unregIntent);
}

ここで、「my project id」は、Google API コンソールで Android 用の Google クラウド メッセージングが有効になっている 12 桁のプロジェクト番号です。これらが呼び出される両方の回で、次のログが表示されます。

08-10 15:07:19.370: D/GCM(791): [C2DMRegistrar.143] Send register result  null 0 0

マニフェスト ファイルは、他の人が設定したのとまったく同じように設定されています。とにかく、私の受信者クラスは決して呼び出されません.登録のここでのエラーはそこでそれを止めているようです. エラーメッセージが私に何を伝えているのか、誰にも分かりますか? このエラーの原因は何ですか?

Androidの公式ガイドで調べようとすると、少し混乱します。一部の手順は非推奨のメソッドを参照している可能性があり、一部の指示は互いに矛盾しています.それ。

4

2 に答える 2

0

実際、大丈夫です。それを行う方法は、実際には非推奨か何かでなければならないと思います。これはうまくいきました:

        gcm = GoogleCloudMessaging.getInstance(this);
    Thread thread = new Thread()
    {
        @Override
        public void run() 
        {
            try
            {
            Log.d("IM", "registration thread happening");
            String regid = gcm.register("project number");
            Log.d("IM", "id: " + regid);
            }
            catch (IOException e)
            {
                Log.d("IM register", "io exception: ");
                e.printStackTrace();
            }
        }
    };

    thread.start();

独自のスレッドにもスタックするまで IOException が発生していましたが、現在は問題なく動作しているようです。おそらく公式ガイドを更新する必要があると思います。

于 2013-08-11T02:59:18.467 に答える