0

私は何かを誤解したと思います。そのために残念。

アプリにプッシュ メッセージを実装しようとしています。

  1. GCM Web コンソール (「API アクセス」) でプロジェクトを追加し、プロジェクト全体で同じように見える API キー (このコンテキストでプロジェクトが意味するものは何でも) と、apps.googleusercontent.com で終わる clientID を取得しました。私のアプリのそれぞれ。

  2. 次に、Google から gcm-client の例をコピーし、コンパイル エラーを削除し、ライブラリを追加して、エミュレータではなく電話で実行しました。ここで送信者 ID が必要ですが、これは API アクセス URL の「projectid」のようですよね?

ここまでは順調ですね。

サーバーを実装するには、API キーが必要です。これは、下部にある GCM API プロジェクト ページ (「Simple API Access」) の 1 つです。さらに、登録IDが必要です。最初の実行時に私のアプリによって計算されているようですよね? この ID をアプリからサーバーにコピーする必要がありますか?

しかし、GCM 経由でアプリから直接登録 ID を取得する方法はありますか? 例)Play ストアでアプリを取得した場合、アプリをダウンロードしたデバイスの ID を取得するにはどうすればよいですか? 申し訳ありませんが、GCMメカニズム全体に少し混乱しています:(

編集:登録解除のプロセスはどのように機能しますか。電話がもはやメッセージを必要としないことをどのように知ることができますか?

4

3 に答える 3

1
  1. サーバーが GCM から登録 ID を取得する方法はありません (GCM からの応答で正規登録 ID を取得するという特殊なケースを除きますが、それを取得するには、アプリで使用されている古い登録 ID をサーバーが既に知っている必要があります)。そのデバイスで)。デバイスにインストールされたアプリの各インスタンスは、登録 ID をサーバーに送信する必要があり、サーバーはこれらの ID を永続ストア (DB、ファイルなど) に保存する必要があります。

  2. アプリが GCM から明示的に登録解除された場合、GCM から登録解除されたことをサーバーに通知でき (登録 ID をサーバーに送信する呼び出しと同様の方法で)、サーバーはその登録 ID を削除します。 . ただし、より一般的なケースは、アプリがデバイスからアンインストールされることによって暗黙的に登録解除されることです。その場合、アンインストールされたことをサーバーに通知できません。アプリがアンインストールされたデバイスにサーバーが最初に通知を送信すると、正常な応答が返されますが (GCM はアプリがアンインストールされたことをまだ認識していないため)、後でそのデバイスに通知を送信しようとすると、NotRegisteredこのエラーは、関連する登録 ID を削除するようサーバーに指示します。

于 2013-10-20T20:49:54.627 に答える
0

regID が取得されたらすぐにサーバーに送信するだけです。

次に、リスト、フラットファイル、データベースなど、好きなようにサーバーに保存できます。

このアプローチを使用して、MySQL に複数の regID を保存し、ID をメッセージと一緒に送信するだけで、「マスター」電話にすべてのサーバー ID をすべての電話に認識させました。電話にregIDを認識させるのとは対照的に、これらは時間の経過とともに変化する可能性があるため、管理が不可能です.

このセットアップを使用すると、マスター電話が担当する他のすべての電話にメッセージをマルチキャストするのは非常に簡単でした。

これが理にかなっていることを願っています。

于 2013-10-18T11:32:23.567 に答える
0

まず、GCM インスタンスを作成する必要があります。

GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(HomeScreenActivity.this);

次に、次のように登録 ID を取得する必要があります。

String regId = gcm.register("xxxxxxx"); // xxxxxx is your ProjectNumber wich can be found in your GCM console

この regId を共有設定のどこかに保存して、再利用できるようにします。

于 2013-10-18T11:35:23.517 に答える