3

私のアプリにFCM機能を設定しようとしています。現時点では、ユーザーがボタンを押すと、GoogleのCCSに送信されるアップストリームメッセージが生成されるようなボタンを表示したいと考えています。この上流のメッセージがGoogle CCSによってXMPPスタンザに変わることは私の理解である。その後、アップストリームメッセージを作成するときに設定したIDを持つ電話機に配信されます。 GoogleからのFCMのドキュメントを読んだ後、私は上流のメッセージを作成することは非常にシンプルであることを参照してください。上記のコードを見て、今Firebase Cloud Messagingの誤解でXMPP経由でアップストリームメッセージを配信する

FirebaseMessaging fm = FirebaseMessaging.getInstance(); 
fm.send(new RemoteMessage.Builder(SENDER_ID + "@gcm.googleapis.com") 
.setMessageId(Integer.toString(msgId.incrementAndGet())) 
.addData("my_message", "Hello World") 
.addData("my_action","SAY_HELLO") 
.addData()//somewhere in here must be a way to set the senderId of the phone 
// i am trying to send the message to ??? 
.build()); 

を、私はXMPPは、この上流のメッセージを作成するために使用されていない方法で見ます。 XMPPスタンザの作成はありません。私の質問では、このXMPPスタンザはどこに配信されるのですか? GoogleのCCSを離れるとクラス上で、 FirebaseMessagingServiceを拡張するメソッドが、onMessageReceivedと呼ばれています。この方法では、XMPPスタンザがデリバリーされる場所が私の理解である。または、私が設定しようとしているSmackライブラリ接続でPacketListenerが提供されます。 「Gronkking Android」の例によると、GoogleのCCS XMPPスタンザがこのパケットリスナーにここで配信されます。これらのスタンザを受信し、必要なackメッセージを生成するために、この例に従うつもりです。

誰でも任意の考えやアイデアを持っている場合、

は、デバイスメッセージングへ

+0

したがって、このアプリケーションサーバーはアプリケーションコード上に存在するか、または外部にあります。私が見た例から、CCSと通信し、GoDaddyなどのWebサーバーに関連情報を格納するxmppインターフェイスを使用するだけで入手できます。しかし、私はCCSとのコミュニケーションのためにこれらのスタンザをどのように実装するのかまだ分かりません。ドキュメントによれば、スタンザとの接続を許可する必要があります。接続にパケットリスナーを登録する必要がありますか?私はこれを試して、私の接続がCCSから受け取ったものを見てみましょう。 @arthurthompson –

+0

非常に簡単な説明:アプリケーションサーバーはあなたのホームサーバーまたはアクセスできるサーバー(ホストされたサーバー)で、xmppサーバーアプリケーションを実行している必要があります。それはFCMに接続されたままになり、アップストリームメッセージがデバイスから到着すると、FCMはメッセージをアプリケーションサーバーに送信します。 – MisterWalrus

+0

CCSが認証されたトランスポート層としてXMPPを使用しているとFirebaseの文書ではどうして言いますか?それは、私は接続を管理するために任意のXMPPライブラリを使用することができると言います。 SmackライブラリはTLSと認証に必要なすべてのサポートとそのXMPPライブラリを提供しているので、接続を管理してアプリケーションサーバーを作成することができます。しかし、私はそれを外部のコードで使用することを選択します。 Smackの接続オブジェクトもスタンザを処理できます。私はすでにSmackでTLSを自分のコードの中に設定しています。私はすでにアプリケーションサーバーではなく自分のコードに接続しています。 SASLauthに問題があります。 @MisterWalrus –

答えて

4

デバイスは、FCMによってサポートされていないありがとう、あなたの意見を聞くために素晴らしいことです。アップストリームメッセージは、モバイルデバイスからCCS経由でXMPPアプリサーバーに送信されるように設計されています。 XMPPアプリケーションサーバーがメッセージを受信すると、CCS経由でダウンストリームメッセージをモバイルデバイスに送信することを決定できます。スタンザとのXMPP通信は、CCSとXMPPアプリケーションサーバーの間で行われます。

0

FCMクラウドサービスは、企業システムや銀行システムなどの下流のPUSH通知に適しています。 それ以外の場合は、アップストリームメッセージの処理を行うには、独自のXMPPアプリケーションサーバー(通常はパブリックIP)が必要です。私はそれの周りに何か方法が表示されません。 FCMクラウドサービスは、受信したすべてのメッセージを読むだけで転送します。 FCMクラウドサービスを呼び出すことによって、すべてのメッセージを正しいモバイルデバイスにルーティングすることは、アプリケーションサーバーの任務になります。私は、中央のFCMサービスがなくても簡単かもしれないと思います。パブリックIPで独自のXMPPサーバーを使用するだけです。モバイルデバイスアプリケーションはXMPPクライアントのように動作するはずです。

関連する問題