私は自分のアプリケーションにC2DMを実装しようとしていますが、マニフェストの書き方に関してはdocumentationが少し混乱しています。C2DM:C2D_MESSAGEパーミッションの使用方法は?
マニフェストコード例はこれを含んでいます。次のように
<!-- 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
はどこに行きましたか?そして、それは私の上記の質問と一緒にやるべきことがありますか?
私はこれが何か明白ではないことを望みますが、私はそれを得ていません...助けてください。
C2D_MESSAGE権限を宣言して要求しないとどうなりますか? c2dmのブロードキャストを受信できなくなるのですか?これは、私の最初のコードブロックのコメントが実際に "c2dmブロードキャスト_at all_を受信できることを確認"する必要があることを意味します。 – user634618
この許可を宣言しないと、ドキュメントから判断すると、BroadcastReceiversを探すC2DMの部分意図を処理して(そして許可を持っている)試みるBroadcastReceiversが見つからないので、ブロードキャストはどこにも行きません。 私はそれを試していませんが、試してみるのはとても簡単でしょう。最初にドキュメントの例に従って、まずすべてがうまく動作していることを確認します。 – mbafford
ありがとう、私は再度BroadcastReceiverのためのドキュメントを読んで、今それを理解する。私が最初にそれを読むときに気づいていなかったのは、放送意図を明示的に許可する必要があるということです。 – user634618