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

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

글쓴이 : 한신IT타워 날짜 : 2017-11-10 (금) 16:13 조회 : 353
글주소 : http://www.androidside.com/B49/168760
 
  한국시뮬레이션기술
LS DYNA, SIMPACK, Simuform, FCM, VPG
www.kostech.co.kr
  엠바디 부산 퍼스널트레이닝
확실하고 건강한 다이어트, 부산대역1호점,사직동2호점,서면역3호점.수험생 이벤트
ptmoon.co.kr
  부산KN퍼스널트레이닝
토성점, 법원점, 냉정점, 만덕점 / 다이어트, 재활전문 /수험생 이벤트50%할인
cafe.naver.com/knpt
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. 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 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기