FCM을 사용하여 백그라운드에서도 지정된 아이콘을 표시합니다.
갑자기 결론부터 말하면 Firebase Cloud Messaging HTTP Protocol 를 사용해 해결할 수 있었습니다. curl이나 REST Client( DHC , Advanced-Rest-Client 등 ) 를 사용하여 필요한 데이터를 Json 형식으로 보냅니다.
빠진 점
Firebase Notifications가 발표되어 웹 콘솔에서 푸시 알림을 할 수 있을 것으로 기대에 활약한 분도 많다고 생각합니다.
그러나 앱의 백그라운드/포그라운드에서 거동이 다르기 때문에 백그라운드 시에는 FirebaseMessagingService에서 푸시 알림을 잡아주지 않고 회색 배경에 아이콘을 흰색으로 칠한 유감스러운 것이 표시됩니다. .
Firebase 핸즈온에서 직접 Google에게 질문한 결과, 웹 GUI는 비 엔지니어를위한 것이며 웹 콘솔 화면에서 아이콘을 지정하거나 자유롭게 UI를 사용자 정의 할 수 있도록하는 것이 우선 순위입니다. 낮은 것 같습니다. .
절차
1. Firebase Console에서 새 프로젝트 만들기
2. Android 앱에 Firebase 추가를 선택
3. 패키지 이름 입력 → google-services.json 얻기
4. 기어 마크/클라우드 메시징에서 서버 키 가져오기
콘솔에서의 작업은 이상입니다!
5. 자 앱으로 build.gradle이나 FirebaseMessagingService나 FirebaseInstanceIdService, topic의 subscribe 처리 등을 구현한다
자세한 내용은 샘플에 썼습니다. (DroidKaigi 앱 알림 아이콘을 사용했습니다 (>_<))
google-services.json을 app 아래에 설치하는 것을 잊지 마세요!
6. 드디어 FCM을 사용하여 푸시를 전달합시다!
FCM은 Json을 htps : // fcm. ㅇㅜㅜㅜㅜ 코 m/fcm/선 d으로 POST합니다. notification,data를 각각 단독으로 사용하는지, 병용하는지에 의해 백그라운드시와 포그라운드시로 거동이 바뀝니다. 이 기사가 자세하고 최고입니다.
Firebase Cloud Messaging에서 알림 맞춤설정(Android)
개인적으로는 data만을 사용하면 백그라운드에서도 포그라운드에서도 FirebaseMessagingService에서 처리할 수 있으며 GCM과 같은 것을 할 수 있으므로 추천합니다. 각각 실제로 거동의 차이를 보면 좋을지도 모릅니다.
거동의 차이: About FCM Message
Json에 지정된 값: Firebase Cloud Messaging HTTP Protocol
POST할 Json의 예
notification 단위의 예{
"to": "/topics/all",
"notification": {
"title": "FCM使ってみよう",
"body": "今日もいい天気ですね",
"icon": "ic_stat_notification",
"color": "#ffa714",
"click_action": "OPEN_ACTIVITY"
}
}
data 단위의 예{
"to": "/topics/all",
"data": {
"title": "FCM使ってみよう",
"body": "今日もいい天気ですね"
}
}
병용 예{
"to": "/topics/all",
"notification": {
"title": "FCM使ってみよう",
"body": "今日もいい天気ですね",
"icon": "ic_stat_notification",
"color": "#ffa714",
"click_action": "OPEN_ACTIVITY"
},
"data": {
"title": "FCM使ってみよう",
"body": "今日もいい天気ですね"
}
}
그럼 실제로 POST하자.
curl의 경우curl --header "Authorization: key=あなたのサーバーキー" \
--header Content-Type:"application/json" \
https://fcm.googleapis.com/fcm/send \
-d "{\"to\": \"/topics/all\", \
\"data\": { \
\"title\": \"FCM使ってみよう\", \
\"body\": \"今日もいい天気ですね\" \
} \
}"
REST client의 경우 (DHC의 스쿠쇼입니다)
표시 예
※ 참고로 메시지를 보낼 때 사용하는 Topic이 콘솔에 반영되기까지는 반나절부터 1일 걸립니다. . FirebaseMessaging.getInstance().subscribeToTopic("all");
그래서 그때까지는 Json의 "/topics/all"부분을 FirebaseInstanceId.getInstance().getToken()에서 취득한 토큰을 넣으면 좋다고 생각합니다.
요약
• Firebase Notifications 대신 FCM 사용
• Payloads는 data가 추천
Reference
이 문제에 관하여(FCM을 사용하여 백그라운드에서도 지정된 아이콘을 표시합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/u_nation/items/6bd4c471f94571c45ad9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
{
"to": "/topics/all",
"notification": {
"title": "FCM使ってみよう",
"body": "今日もいい天気ですね",
"icon": "ic_stat_notification",
"color": "#ffa714",
"click_action": "OPEN_ACTIVITY"
}
}
{
"to": "/topics/all",
"data": {
"title": "FCM使ってみよう",
"body": "今日もいい天気ですね"
}
}
{
"to": "/topics/all",
"notification": {
"title": "FCM使ってみよう",
"body": "今日もいい天気ですね",
"icon": "ic_stat_notification",
"color": "#ffa714",
"click_action": "OPEN_ACTIVITY"
},
"data": {
"title": "FCM使ってみよう",
"body": "今日もいい天気ですね"
}
}
curl --header "Authorization: key=あなたのサーバーキー" \
--header Content-Type:"application/json" \
https://fcm.googleapis.com/fcm/send \
-d "{\"to\": \"/topics/all\", \
\"data\": { \
\"title\": \"FCM使ってみよう\", \
\"body\": \"今日もいい天気ですね\" \
} \
}"
• Firebase Notifications 대신 FCM 사용
• Payloads는 data가 추천
Reference
이 문제에 관하여(FCM을 사용하여 백그라운드에서도 지정된 아이콘을 표시합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/u_nation/items/6bd4c471f94571c45ad9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)