Regular Motion

개발자가 상팔자

2개 이상의 Notification 사용시 주의점!

 

Application에서 2개 이상의 Notification을 사용할 때 주의할 점이 있다.

 

PendingIntent에 설정된 Bundle 값이 예상했던 값이 아닐 수도 있다는 점이다.

 

만약 아래와 같은 코드로 Notification을 2개 추가한다면

 

첫번째 Notification의 PendingIntent가 포함하는 STATE의 값은 예상과는 다르게 ‘BUSY’로 설정되어 있을 것이다.

 

이유는 PendingIntent가 동일한 operation, action, data, category, components, flags를

 

갖을 경우 마지막에 설정한 PendingIntent로 치환되기(replace) 때문이다.

 

따라서 예상과는 다르게 2개의 Notification 모두 STATE의 값으로 ‘BUSY’를 갖는 PendingIntent를 갖고 있다.

* 나는 이 문제를 마켓에서 평점이 0.2점이나 내려간 뒤에야 정확히 인지했다. -_-;;

 

해결 방법은 몇가지가 있는 것 같은데 가장 쉽고 직관적인 방법은

PendingIntent의 requestCode를 Unique한 값으로 설정하는 것 이다.

기존에 requestCode를 0으로 설정하던 부분을 unique한 값으로 변경했다.

 

requestCode가 다르면 더이상 PendingIntent는 replace되지 않는다.

* 일반적으로 Notification의 ID를  requestCode로 사용한다.

 

 

{ 요점 }

PendingIntent가 동일한 operation, action, data, category, components, flags를 갖을 경우

마지막에 추가한 PendingIntent로 치환(replace)된다.

Replace되는 것이 원하는 결과가 아니라면 PendingIntent에 unique한 requestCode를 부여하자.

 

{ Reference }

http://stackoverflow.com/questions/6066363/multiple-notifications-to-the-same-activity

 

7 Comments

  1. 아 정말 진짜 이유를 몰라서 쩔쩔매고 있었는데 덕분에 고쳤습니다!!!!
    근데 하나씩 보내서 눌러볼땐 잘 되는데…
    여러 notification이 한꺼번에 있을땐 역시 뭔가에 replace되는 것 같아요.
    이유라도 알았으니 속이 다 시원하네요 ㅠ_ㅠ 아흑.

    어쨌든 감사합니다! >_<)=b

  2. 엑티비티를 다시시작 시켜보고 죽여도 보고 이거도 해보고 거저거도 해보고 하다가 하루종일 검색한 경과 이 글을 읽게 되었네요.. 아오.. ㅠㅠ 정말. 감사합니다. ㅠㅠ

  3. 좋은 정보 감사합니다.

  4. 아……………..
    저도 3월까지는 노티피가 잘 날라 왔는데
    4월부터 안날라오더라구요 지금 확인해보니 저도 0으로 되어있군요 ㅠㅠ
    아… 해결되면 밥이라도 사드리고싶은 이 마음…

    감사합니다 ^^

답글 남기기

© 2017 Regular Motion

Theme by Anders NorenUp ↑