react-native 프로젝트에서 push 클릭 시 클릭으로 앱이 켜졌다라는 플래그값이 전달이 되지않았다.
현재 앱의 스펙은
@react-native-firebase/messaging 와 @notifee/react-native 라이브러리를 함께 사용하고있다.
이렇게 사용한 이유는 핸들러 통합과 @react-native-firebase/messaging 가이드에서 notiffee로 통합하라는 말이 있어서
이걸로 진행을 했다.
아무래도 os별로 예외처리나 기능을 개발하는거보다는 통합하는게 좋기때문일것이다.
과거에 당겨서 새로고침 라이브러리를 직접 만들때도 aos/ios 코드가 완전 다 다른걸 생각하면
유지보수엔 역시나 통합을 하는게 짱이다.
(물론 통합이 가능하다면)
처음 개발할땐 ios에 항상 문제가 많았고 aos는 문제되는게 전혀 없었다.
https://javakorea.tistory.com/entry/react-native-silent-push-%ED%85%8C%EC%8A%A4%ED%8A%B8
react-native silent push 테스트
Background Mode - Onremote notification - onbackground fetch - on background processing - off 서버에서 전송한 push payload const message = { data: { title: "title", body: "test body", }, topic: "test-topic", apns: { headers: { "apns-push-type":
javakorea.tistory.com
사일런트 푸시를 할 때 ios 호락호락하지않네라고 생각했었고 잘 해결된 상태였다.
그런데 이렇게 6개월 서비스 잘되었는데 어느날부터 안드로이드 백그라운드 상태일때 푸시가 오면 푸시를 클릭을 해도 화면전환이 되지않는다는 qa 결과가 나왔다.
최근에 라이브러리 버전을 올린적도 없었고 테스트폰도 os업그레이드를 한적이 없었는데 이게 무슨일인지는 모르겠지만
신기하게도 ios는 잘된다.
여러가지 테스트를 거친후에 해결방법을 모색하던중에 도저히 답이 없었다.
앱이 quit, background 상태일 때
index.js 최상단에 있는 messaging().setBackgroundMessageHandler 이 수행된 이후에 푸시를 누르게 되면
notifee.onBackgroundEvent 이 수행이 되지 않았다. ios는 수행이 되어서 메시지 타입이 EventType.PRESS 여부를 알 수가 있었다.
고민끝에 푸시를 보내는 서버에 notification의 payload를 삭제(그러면 data push 이기 때문에 os에서 푸시를 뛰우지않는다.)
하고 data 영역에 title과 body를 추가 한 후에
setBackgroundMessageHandler 가 수행되면 notifee의 displayNotification 를 수행해서 직접 push를 뛰웠다.
그래서 이거를 클릭 하게 되면 notifee 리스너가 수행이되어 핸들러에게 잘 전달이 된다.
Xcode Verification checksum was incorrect Error (0) | 2025.01.13 |
---|---|
Codepush standalone Install metric (0) | 2025.01.03 |
React Native Codepush 서비스 종료(?)로 standalone으로 변경 (4) | 2024.12.04 |
[Error] Xcode : Command PhaseScriptExecution failed with a nonzero exit code 에러 (0) | 2024.05.31 |
React Native IDE 1일(?) 사용후기 (0) | 2024.05.24 |