롤리팝 이상에서 백그라운드 푸시 보내기

백그라운드 푸시 적용

  • 롤리팝 이상에서 앱이 백그라운드 상태에서는 푸시를 수신하는 코드가 동작 하지 않고 운영체제에서 알림을 발생시킨다.
  • 파이어베이스 콘솔에서 푸시를 발송하면 OS 에서만 수신
    • 이유를 찾아 보니 푸시 메시지 notification 이 있을 때 앱에서 푸시를 수신 안하고 OS 가 처리함
  • notification 영역을 제거하고 페이로드 영역(data) 부분만 으로 푸시를 보내면 됩니다.
  • 커스텀 푸시는 아니지만 노티 알림 클릭시 원하는 동작을 만들고 싶을때가 많다.
  • 그래서 푸시 규격에 대해서 자세히 찾아 봄
    • https://firebase.google.com/docs/cloud-messaging/http-server-ref?hl=ko
    • 위 링크에서 보면 click_action 이 존재 하고 하고 이를 이용하면 시작 액티비티를 지정이 가능하다.
    • 그래서 서버쪽 전송 영역을 아래 처러 지정 하였습니다. json data: { hello: "good job", }, notification: { title: "Hello, World", body: "This is a notification that will be displayed if your app is in the background.", click_action:"OPEN_ACTIVITY_1", icon:"white", color:"#FF0000", sound:"default" }
      <activity android:name=".BasicNotificationActivity">
          <intent-filter>
              <action android:name="OPEN_ACTIVITY_1" />
              <category android:name="android.intent.category.DEFAULT" />
          </intent-filter>
      </activity>
    
    • 내용
      • title 와 body 로 제목과 내용이 나옵니다.
      • icon 은 리소스에 있는 아이콘이 선택되어서 나옵니다.(되도록 흰색 알파 이미지선택이 필요합니다.)
      • icon 배경색은 빨간색
      • 소리는 기본 알림 소리 입니다.
      • 알림을 클릭 시 BasicNotificationActivity 가 실행됩니다.
      • intent 로 hello 가 있습니다.

PyeongHo

즐겁게 또 즐겁게