제가 fork해서 사용하고 있는 Parse.com의 Push를 수신하기 위한 Natvie Module에 몇가지 업데이틀 해봤습니다.
timanrebel님이 만들고 업데이트가 거의 없다가 이형님도 최근에 업데이트를 하셔서… 저도 기능 좀 추가해서 pull request 해놓은 상태입니다.
우선 최근 업데이트로 안드로이드 M/6.0+에서도 Push가 정상적으로 수신됩니다.
제가 추가한 부분은 안드로이드 notification 센터에 내 앱으로 와서 쌓여있는 push를 날려주는 간단한 메쏘드와,
iOS에서 백그라운드 리프레쉬를 구동시키기 위해 push에 아래와 같이 content-available를 넣어서 날려주는 것과 동일하게 Android에서도 content-available이 포함되어 있으면 notification을 생성하지 않고, 앱에 이벤트만 넘겨주고 끝나는 기능입니다.
그래서 iOS와 동일하게 silent push를 이용해서 백그라운드 리프레쉬를 시작하게 하실 수 있습니다.
일단 두개의 앱에서 해당 모듈을 사용하고 있고, 하나의 서버키로 서버에서 푸쉬를 전송하도록 되어있습니다.
문제는 둘중 하나의 앱에서 종료 후 재실행 시, 아래와 같은 로그를 출력하고 푸쉬에 대한 이벤트처리를 하지 못 합니다. 다른 하나의 앱은 잘 작동합니다.
[DEBUG] onPushReceive: App is not alive; ‘notificationreceive’ won’t be triggered
[DEBUG] onPushOpen: App was killed; resume the app without triggering ‘notificationopen’
모듈 원 소스를 조금 들여다봤는데, 모듈 인스턴스가 Destroy 되었을때 나오는 로그로 나옵니다.
BroadCastReceiver 로 구현되어있어서, 앱을 종료해도 백그라운드에서 리시버는 살아서 받고 있을텐데… 왜 Destroy 되었다고 하는지 모르겠습니다 ㅠ 프로세스 킬을 한 것도 아니고… 하드웨어 백키를 이용한 종료입니다.
하나의 서버키 때문일까요 ? 아니면 앱의 구조적 문제일까요…?
혹시 추측되는 부분이 있으시면 조언 부탁 드립니다.