FCM을 사용하여 백그라운드에서도 지정된 아이콘을 표시합니다.

안녕하세요 @u_nation입니다.

갑자기 결론부터 말하면 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가 추천

좋은 웹페이지 즐겨찾기