gcm クライアント アプリを実行する 2 つの Android デバイスがあります。両方のデバイスの Reg ID を取得します。サーバー API キーもあります。cUrl または Zend フレームワークを使用した単純な php コードを使用して、Web サーバーからドロイドの 1 つにメッセージを送信できます (もちろんブロードキャストも可能です)。しかし、これを手にして、あるデバイスから別のデバイスに文字列を送信する方法はありますか?
2 に答える
私の本から自分自身を引用する:
独自のサーバーがなくても、ピアツーピアメッセージングにGCMを使用したくなるかもしれません。実際、各Androidアプリは独自のサーバーであり、Androidアプリ内のWebアプリで使用するのと同じJARを使用して、他のパーティにメッセージを送信します。たとえば、専用のチャットサーバーがなくてもチャットシステムを実装できます。
ここでの危険は、APIキーをAndroidアプリケーションに埋め込む必要があることです。そのAPIキーを持っている人は誰でも、あなたからのメッセージを完全に偽造することができます。そのAPIキーに設定できるIPアドレスの制限が役立つ可能性はほとんどありません。これは、正当な使用が単一のサーバーだけでなく、任意のIPアドレスからのものである可能性があるためです。APKファイルでマジックストリングを見つけることは、傾向のある人にとってそれほど難しいことではないので、APKファイルにAPIキーを入れることは危険な動きです。
したがって、仲介者として独自のサーバーが必要になります。
できることの 1 つは、メッセージと他の Android デバイスの登録 ID を使用して Web サーバーに POST 要求を行うことですが、登録 ID を取得する方法を見つけなければならないため、少し面倒です。 Web サーバーからの他の Android デバイスの。
このプロトコルは広範なメッセージング プロトコルとしてゼロから構築されているため、XMPP を検討することをお勧めします。機能を実装するための優れた XMPP サーバー フレームワークが見つかると確信しています。