총 게시물 38,858건, 최근 1 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

앱이 죽어있을 때 fcm push 받는 방법 질문입니다..

글쓴이 : 한신IT타워 날짜 : 2017-11-10 (금) 16:13 조회 : 319
글주소 : http://www.androidside.com/B49/168760
 
  한국시뮬레이션기술
LS DYNA, SIMPACK, Simuform, FCM, VPG
www.kostech.co.kr
  자기계발서 티몬
자기계발서, 어린이부터 성인까지 분야별 인기.유명도서 할인! 빠른배송!
www.ticketmonster.co.kr
  예스폼 각종 자기계발서 전문
서식분야 랭키1위, 700만 회원이용! 자기계발서, 자기계발서 샘플 전문 예스폼.
www.yesform.com
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. Q&A Jang

앱이 죽어있을 때 push 를 받아서 notification 을 클릭하면 특정 액션을 취하려고 합니다. 

(단순 앱 실행 x)

{
    "to":"dbNGj1ToCUQ:APA91bGIogt8By8ArIkYCTwjixOAr7EZvH8dWjaUb_8MMuzn-SUVGDH9pzAaQja5QC4aibPWmoXAu8TNB4GX11lw-yzlmqmnQioyBcybngXAuiyGupytZYA80US8aaUtoTVdanjnZzmt",
    "content_available":true,
    "priority": "high",
    "notification": {
            "title":"GCM을 통해서 푸시메시지 보내기",
            "body":"GCM 으로 Andorid 를 !!",
            "sound":"default"
    },
    "data":{"targetUrl":"https://www.naver.com"}
}

 

이런식으로 push를 보내고 저기의 data를 받아서 써야하는데요

 

앱이 살아있을 때는 문제가 안되지만

 

앱이 죽어있을 때 저 데이터를 어떻게 받아야하나요?

 

죽지않는 서비스를 구현했고 FirebaseMessagingService 클래스에서 onMessageReceived가 호출되면

 

service 쪽으로 push data를 던져주고 service에서 저장하려고 했는데

앱이 죽어있을 때에는 FirebaseMessagingService 클래스가 호출되지 않는 거 같더라구요..

 

앱이 죽어있을 때 push로 온 제 데이터.. 어떻게 찾을 수 있나요..?



김윤승
질문자가 자신의 포인트 15 점을 걸었습니다.
답변하시면 포인트 2을, 답변이 채택되면 포인트 12을 드립니다.

질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

cong 2017-11-10 (금) 17:36
혹시 firebase console에 있는 메세지로 보내셨는지..
댓글주소 추천 0 반대 0
     
     
한신IT타워 2017-11-13 (월) 09:43
[@cong]

{
    "to":"dbNGj1ToCUQ:APA91bGIogt8By8ArIkYCTwjixOAr7EZvH8dWjaUb_8MMuzn-SUVGDH9pzAaQja5QC4aibPWmoXAu8TNB4GX11lw-yzlmqmnQioyBcybngXAuiyGupytZYA80US8aaUtoTVdanjnZzmt",
    "content_available":true,
    "priority": "high",
    "notification": {
            "title":"GCM을 통해서 푸시메시지 보내기",
            "body":"GCM 으로 Andorid 를 !!",
            "sound":"default"
    },
    "data":{"targetUrl":"https://www.naver.com"}
}

이런식으로 포스트맨 사용해서 보냈습니다.
댓글주소 추천 0 반대 0
꽁순이 2017-11-13 (월) 09:47
앱이 백그라운드 상태이거나 죽어있는 경우에는 무조건 launch activity를 실행시킵니다.
그래서 내가 원하는 액티비티를 실행시키고 싶으실 때는 
fcm message 전송시 data말고 notification 내에 click_action을 추가해서 예를 들면 OPEN_NOTIFICAON_ACTIVITY 이런식으로 지정해준 뒤에
앱 메니페스트에서 실행하고자 하는 액티비티에 intent filter를 정의해줍니다.

그렇게 처리하면 해당 액티비티가 실행이 되고 거기에서 getIntent로 data안의 내용을 받을 수 있습니다.

물론 앱이 백그라운드 상태일때는 이미 앱이 살아있거나 액티비티가 떠있을 때 이런 경우는 따로 예외처리 해주시면됩니다.
댓글주소 추천 0 반대 0
     
     
한신IT타워 2017-11-13 (월) 14:36
[@꽁순이]
댓글 감사합니다.

다른 액티비티 실행을 원하는 건 아니고

제 앱은 하나의 웹뷰를 들고있는 하나의 액티비티로만 구성돼있습니다.

일반적인 실행때 뜨는 페이지가 있고 push를 받았을 때 가는 페이지가 있어서 noti를 클릭했을 때 떠야하는 페이지가 있습니다.

그런데 앱이 백그라운드 상태이거나 kill 상태일 때에는 push를 받고나서 noti를 클릭해 앱을 띄운 뒤

onCreate, onNewIntent 등에서도 getIntent.getExtra 하면 null만 나옵니다..
댓글주소 추천 0 반대 0
          
          
꽁순이 2017-11-13 (월) 14:49
[@한신IT타워] onCreate에서 getIntent().getStringExtra("targetUrl"); 로 값 받으시면 값 들어올거에요. launch Activity에서..(IntroActivity가 있다면 IntroActivity에서.. ) 
data를 키값으로 해서 받으면 받을 수 없어요. data안의 데이터를 통해서 받으면 받으실수있을거에요
이래도 안들어온다면 하나의 액티비티만 있는 상태지만 click_action 으로 activity 지정해서 해보시는것도 방법이라고 생각됩니다
댓글주소 추천 0 반대 0
               
               
한신IT타워 2017-11-14 (화) 11:11
[@꽁순이]

같은 방법으로 해결했습니다 감사드려요

foreground 일 때는 firebasemessagingservice 이쪽으로 들어오고

background 에서는 onNewIntent 에서 getIntent 하면 데이터가 있고

kill 상태에서는 onCreate 에서 하면 되더군요

ㅎㅎ.. 제가 첨에 대충했는지 자꾸 뭐 하나씩 안돼서 한참을 고생했네요

감사드려요
댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기