2016-08-26 3 views
6

https://firebase.google.com/docs/cloud-messaging/server에 Android 애플리케이션 용 FCM 알림을 처음 사용했습니다. 나는 그것을 읽고 FCM 서버 정보 페이지 요구 사항에서 다음과 같이 밝혀졌습니다.언제 Firebase Cloud Messaging을위한 앱 서버가 필요합니까?

사용자 환경에 구현해야하는 응용 프로그램 서버. 이 응용 프로그램 서버는

그러나, 이것에 대해 몹시 혼란 스러워요 적절한 XMPP 또는 HTTP 프로토콜을 사용하여, 선택한 FCM 연결 서버를 통해 클라이언트 응용 프로그램에 데이터를 전송합니다. 나는이 기사에 자세한 내용을 읽으면서, 나는이처럼 보이는 API가 있음을 참조하십시오

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

을 내가 OkHttpClient 같은 것을 사용하여이 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가있는 경우 다른 장치에 알림을 보낼 수 있습니다. 그것은 당신이 무엇을하고 싶은지에 달려 있으며 통지를 어떻게 관리 하느냐에 달려 있습니다.

자바에서 서버 응용 프로그램을 구현하는 방법에 대한 예제가 필요하면 example 1이 게시되었거나 여기에 PHP가 구현 된 post이라는 좋은 예가 있습니다. 클라이언트 애플리케이션을 구현하는 방법에 대한 예제와 firebase 콘솔에서 테스트하는 방법에 대한 예제가 필요하다면 여기 example도 좋습니다.

+0

나는 본다. 당신의 도움을 주셔서 감사합니다. 하나의 질문은 실제로 : PHP에서 구현과 함께, 어떻게 내 PHP 코드에서 PHP 스크립트를 호출 할 수 있습니까? 어떤 정보를 원한다면 알림을 전송할 수 있도록 PHP 스크립트와 어떻게 통신 할 수 있습니까? – user1871869

+0

@ user1871869 PHP로 서버를 구현 한 경우 POST 및 GET 요청을 위해 standar 라이브러리를 사용하여 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에 대한 연결을 관리하는 연결 서버를 구현해야합니다.

FCM (Firebase Cloud Messaging) XMPP 연결 서버를 보여주는 샘플 Java 프로젝트입니다. 이 프로젝트는 내가 더 큰 프로젝트의 기반으로 개발 한 매우 간단한 독립형 서버입니다. 우리의 환경에서 구현해야하는 애플리케이션 서버입니다. 이 서버는 XMPP 프로토콜을 사용하여 FCM CCS 서버를 통해 클라이언트 응용 프로그램에 데이터를 보냅니다.

https://github.com/carlosCharz/fcmxmppserver

그리고 또한 내가 유튜브에 비디오를 생성했습니다 나는 그것이 무엇을 설명 곳.

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

당신이 그것을 유용하게 찾아 낸다.