목차
여러기 기기로 message 보내기 - Topic messaging
FCM 은 다음 2가지 방법을 제공한다.- Topic messaging
- 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!"
}
}
댓글 없음:
댓글 쓰기