2012-05-08 16 views
1

私が開発したAndroid C2DMプッシュアプ​​リには、送信側のリファレンスがあります(例: "[email protected]")がアプリケーション側のコードにあります。 ケース1: このアプリをAndroid搭載端末にインストールすると、端末のアカウントと同期設定に「[email protected]」というgmail IDが割り当てられます。 アプリケーションはC2DMで正常に登録されましたが、プッシュされたメッセージは何も受信されません。Android C2DM、プッシュアプ​​リ内の送信者ID

ケース2: Androidデバイスのアカウントと同期で同じ送信者ID( "[email protected]")を使用すると、私はプッシュするすべてのメッセージを受け取ります。

なぜケース1が失敗し、ケース2(送信者IDがすべてスルー)が成功したのですか?

+1

私のアプリではこのような動作は見られません - あなたのマニフェストを表示できますか? – ligi

答えて

0

gtalkアプリケーションからログアウトしていない場合は、携帯端末のgtalkアプリケーションからログアウトしていることを確認してください。そうすれば、gtalkとurパーソナルアプリの間にあいまいさがつきます。どのアプリにもメッセージを送信することはできず、例外もありません。プッシュ通知の詳細については

http://www.vogella.com/articles/AndroidCloudToDeviceMessaging/article.html

0

これはC2DMの動作方法で、https://developers.google.com/android/c2dm/

最高C2DMのtutorialisを確認してください。これは、registration idauthentication tokenの両方の電子メールアドレスが必要なので、この方法で動作することは意味があります。

プッシュメッセージを送信すると、サードパーティのサーバーは(おそらく) "[email protected]"上に構築された登録IDと、同じメールで作成された認証トークンを使用します。 Googleのサーバーは端末を探し、特定のメールアドレスのアカウントを見つけようとします。デバイスには複数のアカウントを置くことができますが、少なくとも1つはデバイスの登録に使用するアカウントでなければなりません。

Googleはどうしても問題がなければ、電子メールを要求するのはなぜですか?デバイスの一意のIDを直接使用する方がはるかに簡単でした。

+1

はい、それは私が観察したものです。私の見解は、Appの開発者として - 私はgmailのid(今これは[email protected] id)をアプリにハードコードする必要があります。ユーザーが自分の端末に自分のアプリケーションをインストールすると、彼は自分のAndroidデバイス用のpersonalid @ gmail.comをすでに使用しています。つまり、私のアプリケーションの機能は、ユーザーの個人IDに依存しません(personalidは、Android App Storeで永続性プレゼンスを維持するためだけです)。したがって、デバイス上でプッシュ通知を行うには、アプリ内のsenderidをハードコードする必要があります。私の理解は正しいのですか? – Zuliox

+1

いいえ。彼はC2DMを使用するためにあなたの電子メールを必要としません。彼は電子メールを使ってデバイスに登録することができますが、同じ電子メールで認証トークンを取得するには、サーバーにも「登録」する必要があります。その後、通信を確立することができます。私は、c2dmページに登録する際にGoogleがあなたのGmailアカウントを要求することを知っていますが、アプリケーションごとに1つの固有のアドレスを使用することを義務づけているとは思いません。 C2DMを使用し、2つ以上の電子メールに対して正常に機能するアプリケーションがあります。 –

関連する問題