私のアプリに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メッセージを生成するために、この例に従うつもりです。
誰でも任意の考えやアイデアを持っている場合、
は、デバイスメッセージングへ
したがって、このアプリケーションサーバーはアプリケーションコード上に存在するか、または外部にあります。私が見た例から、CCSと通信し、GoDaddyなどのWebサーバーに関連情報を格納するxmppインターフェイスを使用するだけで入手できます。しかし、私はCCSとのコミュニケーションのためにこれらのスタンザをどのように実装するのかまだ分かりません。ドキュメントによれば、スタンザとの接続を許可する必要があります。接続にパケットリスナーを登録する必要がありますか?私はこれを試して、私の接続がCCSから受け取ったものを見てみましょう。 @arthurthompson –
非常に簡単な説明:アプリケーションサーバーはあなたのホームサーバーまたはアクセスできるサーバー(ホストされたサーバー)で、xmppサーバーアプリケーションを実行している必要があります。それはFCMに接続されたままになり、アップストリームメッセージがデバイスから到着すると、FCMはメッセージをアプリケーションサーバーに送信します。 – MisterWalrus
CCSが認証されたトランスポート層としてXMPPを使用しているとFirebaseの文書ではどうして言いますか?それは、私は接続を管理するために任意のXMPPライブラリを使用することができると言います。 SmackライブラリはTLSと認証に必要なすべてのサポートとそのXMPPライブラリを提供しているので、接続を管理してアプリケーションサーバーを作成することができます。しかし、私はそれを外部のコードで使用することを選択します。 Smackの接続オブジェクトもスタンザを処理できます。私はすでにSmackでTLSを自分のコードの中に設定しています。私はすでにアプリケーションサーバーではなく自分のコードに接続しています。 SASLauthに問題があります。 @MisterWalrus –