2016-08-26 12 views
6

https://firebase.google.com/docs/cloud-messaging/serverでAndroidアプリケーションのFCM通知を使用するのが初めてです。私はそれを読んで、About FCM Serverのページの要件で、次のように書かれています。Firebase Cloud Messagingのアプリケーションサーバーはいつ必要ですか?

あなたの環境に実装する必要のあるアプリケーションサーバー。このアプリ サーバーは

は、しかし、私はこのことについて痛んで混乱しています適切なXMPPやHTTPプロトコルを使用して、選択したFCM接続 サーバーを経由してクライアントアプリケーションにデータを送信します。私が持っているものとする(私はそうのようOkHttpClientのようなものを使用して、このAPIを呼び出すと、私の要求を構築する場合

POST http://fcm.googleapis.com/fcm/send

:私は記事に続きを読むように、私はこのようになりますAPIがあることがわかり認証ヘッダとPOST本体は含まれています)

private void sendRegistrationToServer(String token) { 
    OkHttpClient client = new OkHttpClient(); 
    RequestBody body = new FormBody.Builder().add(“Body", "").build(); 
    //Assuming I have authentication and body put in 
    Request request = new Request.Builder().url("http://fcm.googleapis.com/fcm/send”).post(body).build(); 
    try { 
     client.newCall(request).execute(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 

私は理論的には、私はそのデバイスに必要な情報を持つ通知を送ることができますか?私は、次のクラスを介してメッセージを受け取ることができます。

public class NotificationService extends FirebaseMessagingService { 
    ... 
    // [START receive_message] 
    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 

     // TODO(developer): Handle FCM messages here. 
     Log.d(TAG, "From: " + remoteMessage.getFrom()); 

     // Check if message contains a data payload. 
     if (remoteMessage.getData().size() > 0) { 
      Log.d(TAG, "Message data payload: " + remoteMessage.getData()); 
     } 

     // Check if message contains a notification payload. 
     if (remoteMessage.getNotification() != null) { 
      Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); 
     } 
    } 

私は私の理解では、ドキュメントは、我々は、アプリケーション・サーバーを必要とし、誰かが指摘してくださいできればどこでどのように誤解しています言うんので、どこか間違っていると確信していますFCM通知を実装してください誰かが、アプリケーションサーバーが必要な場所や場所、あるいは実際にどのように実装するべきかの例を挙げることができれば、それは非常に高く評価されます。ありがとう!

+0

はい、Firebase API –

+0

を使用してデバイスから通知を送信できます。 –

+2

* firebaser here * API経由でダウンストリームメッセージを送信するには、プロジェクトのサーバーキーを使用する必要があります。このキーはあなたのアプリのためにメッセージを送ることができるので、あなたがあなたのユーザーに送るアプリに埋め込まれるべきではありません。したがって、アプリケーションサーバーの必要性。 –

答えて

1

アプリケーションサーバーが必要であるとドキュメントに書かれているのは、主に、通知を送信するデバイスのトークンを格納するアプリケーションが必要なためです。このアプリケーションでは、クライアントデバイスそのトークンを変更してください。ただし、OkHttpClientを使用してリクエストをFCMサービスに送信し、そのデバイスのトークンIDを持っていれば他のデバイスに通知することができます。それはあなたが何をしたいのかによって異なり、どのように通知を管理するかによって異なります。

ここにJavaでサーバーアプリケーションを実装する方法の例が必要な場合は、example 1が投稿されている、またはここにPHPで実装されたpostという良い例があります。クライアントアプリケーションの実装方法の例と、firebaseコンソールからのテスト方法については、exampleを参照してください。

+0

私は参照してください。ご協力いただきありがとうございます。実際には1つの質問:PHPの実装で、私はどのように私のJavaコードからPHPスクリプトを呼び出すことができますか?どのような情報を必要としているのかを通知するために、PHPスクリプトとどのように通信できますか? – user1871869

+0

@ user1871869 PHPでサーバーを実装している場合は、POSTおよびGET要求を行うためのスタンダードライブラリを使用してJavaからPHPスクリプトを呼び出すことができます。たとえば、[この例では](https://www.mkyong.com/webservices/jax-rs/restfull-java-client-with-java-net-url/)のように記述します。したがって、JavaアプリケーションからPHPスクリプトにデータを送信して、PHPスクリプトがFirebaseを使用してモバイルデバイスに通知を送信できるようにすることができます。これはPHPサーバ実装がモバイルデバイスのトークンを格納する場合に便利です。 – GeorgeLBA

+1

上記の質問にコメントしたように、ダウンストリームメッセージを送信するには、プロジェクトのサーバーキーを指定する必要があります。これは決してアプリケーションに埋め込むべきではありません。 –

1

あなたはXMPPプロトコルを使用している場合。アップストリームおよびダウンストリームメッセージを処理するために、FCMへの接続を管理する接続サーバーを実装する必要があります。

これはFirebase Cloud Messaging(FCM)XMPP接続サーバーを紹介するサンプルJavaプロジェクトです。このプロジェクトは、私が大きなプロジェクトのベースとして開発した非常に単純なスタンドアロンのサーバーです。私たちの環境で実装しなければならないアプリケーションサーバーです。このサーバは、XMPPプロトコルを使用してFCM CCSサーバ経由でクライアントアプリにデータを送信します。

https://github.com/carlosCharz/fcmxmppserver

そしてまた、私はそれが何をするかを説明ユーチューブで動画を作成しました。

https://www.youtube.com/watch?v=PA91bVq5sHw

は、あなたがそれが役に立つことを願っ。

関連する問題