アプリケーションにC2DMを実装しようとしていますが、マニフェストの記述方法に関してドキュメントが少しわかりにくいと感じています。
マニフェストコードの例には、次のものが含まれています。
<!-- Only this application can receive the messages and registration result -->
<permission android:name="com.example.myapp.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.example.myapp.permission.C2D_MESSAGE" />
これは次のように説明されます。
applicationPackage + ".permission.C2D_MESSAGEは、他のアプリケーションがアプリケーションのメッセージを登録および受信するのを防ぎます。
しかし、これはどのように正確に機能しますか?私が理解しているように、これは許可を宣言してから、私のアプリに対してその許可を取得します。しかし、その許可は正確にどこで実施されますか?
登録用に指定されたコードは次のとおりです。
Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); // boilerplate
registrationIntent.putExtra("sender", emailOfSender);
startService(registrationIntent);
RegistrationIntentを受け取ったサービスは、どのような許可を確認するかをどのように知ることができますか?私が理解しているように(そしてここで間違っている場合は訂正してください)、パーミッションを宣言するときに、名前空間内の任意のパーミッション名(com.example.myapp.permission.WHATEVERなど)を選択できます。
または、C2D_MESSAGEは、使用する必要のある魔法の定数ですか?
また、ドキュメントには、インテントのレシーバーを実装する必要があると記載されていcom.google.android.c2dm.intent.C2D_MESSAGE
ますcom.google.android.c2dm.intent.REGISTRATION
。ただし、コード例では、レシーバーのフィルターには.intent.RECEIVE
とイン.intent.REGISTRATION
テントのみが含まれています。どこC2D_MESSAGE
に行きましたか、そしてそれは上記の私の質問と何か関係がありますか?
これが明白なことではないことを願っていますが、私はそれを理解していません...助けてください。