0

以下はクラスinternalRegisterのメソッドからのコードですGCMRegistrar

static void internalRegister(Context context, String... senderIds) {
        if (senderIds == null || senderIds.length == 0 ) {
            throw new IllegalArgumentException("No senderIds");
        }
        StringBuilder builder = new StringBuilder(senderIds[0]);
        for (int i = 1; i < senderIds.length; i++) {
            builder.append(',').append(senderIds[i]);
        }
        String senders = builder.toString();
        Log.v(TAG, "Registering app "  + context.getPackageName() +
                " of senders " + senders);
        Intent intent = new Intent(GCMConstants.INTENT_TO_GCM_REGISTRATION);
        intent.setPackage(GSF_PACKAGE);
        intent.putExtra(GCMConstants.EXTRA_APPLICATION_PENDING_INTENT,
                PendingIntent.getBroadcast(context, 0, new Intent(), 0));
        intent.putExtra(GCMConstants.EXTRA_SENDER, senders);
        context.startService(intent);
    }

コードの最後の行で、GCMサーバーに接続することになっているサービスを開始します。次に、GSMサーバーはブロードキャストcom.google.android.c2dm.intent.REGISTRATIONを送り返します。これはどのサービスですか?

4

1 に答える 1

0

インテントcom.google.android.c2dm.intent.REGISTRATIONは、2.2以降のAndroidOSの一部です。以前は、デバイスをGoogle C2DMサーバーに登録するために、このインテントに対してstartServiceを呼び出していました。GCMクライアントライブラリを使用せずに、GCMでも同じことができます。

この移行ガイドを参照すると、私が何を意味していたかがわかります:http: //developer.android.com/guide/google/gcm/c2dm.html

私の場合、GCMライブラリを完全にスキップし、com.google.android.c2dm.intent.REGISTRATIONインテントを直接使用して登録しました。

于 2012-07-02T22:35:41.290 に答える