[컴][안드로이드] firebase cloud message 사용하기 - 여러기기에 메시지 보내기 - Topic messaging









여러기 기기로 message 보내기 - Topic messaging

FCM 은 다음 2가지 방법을 제공한다.
  1. Topic messaging
  2. Device group messaging


Client

필요한 것들

  • Android 2.3 이상
  • Google Play service 9.4.0 이상

app 을 topic 에 subscribe 하기

client app 은 어떤 주제(topic) 에 대해서도 subscribe (구독) 할 수 있다. 아니면, 직접 topic 을 만들 수도 있다. (기존에 존재하지 않는 이름의 topic 을 subscribe하면 된다.)

app 이 topic 을 subscribe 하는 방법은 아래처럼 하면 된다.(참고: MainActivity.java)

subscribe

FirebaseMessaging.getInstance().subscribeToTopic("news");

unsubscribe

FirebaseMessaging.getInstance().unsubscribeFromTopic("news");


받은 메시지 처리

topic 을 subscribe 하는 것도 일반적인 FCM 메시지를 사용하는 것과 다르지 않다. 그래서 FirebaseMessagingService 를 사용해서 메시지를 받게 된다.

보통 message 는 app 이 foreground 상태인지 background 상태인지에 따라서 전달되는 모습이 다르다.

일반적으로 message (data, notification)sms 언제나 FirebaseMessagingService.onMessageReceived 로 전달되는데, 예외적으로 app 이 background 에 있는 상태일 때, notification 이  onMessageReceived 로 전달되지 않고, system tray 로 전달된다.

자세한 이야기는 여기를 참고하자.



App server

일반적인 FCM message 를 보낼 때 처럼 FCM connection server 로 HTTP/XMPP request 를 보내면 된다.

1개 topic 에 message 를 보낼 때

foo-bar 라는 topic 1개 에 message 를 보낼 때

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to": "/topics/foo-bar",
  "data": {
    "message": "This is a Firebase Cloud Messaging Topic Message!"
   }
}


curl

curl -i -X POST -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization:key=AIzaSyA...MVGBWHA" -d "{ \"to\": \"/topics/foo-bar\", \"data\": { \"message\": \"This is a Firebase Cloud Messaging Topic Message!\" }}" https://fcm.googleapis.com/fcm/send




여러개 topic 에 message 를 보낼 때

dogs 와 cats topic 모두에 message 를 보낼 때 아래처럼 'condition' 을 사용하면 된다. 참고로, condition 내에 topic 을 하나만 넣으면 동작하지 않는다. 하나의 topic 을 사용할 때는 /topics/ url 을 사용하자.

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "condition": "'dogs' in topics || 'cats' in topics",
  "data": {
    "message": "This is a Firebase Cloud Messaging Topic Message!"
   }
}



References

  1. Send Messages to Multiple Devices  |  Firebase


댓글 없음:

댓글 쓰기