Joe's Blog

아주대 모각소 4일차 - 모바일 앱 푸시 알람에도 우선순위가 있다

군에 가기 전부터 지금까지 가족의 요청으로 모바일 웹뷰 앱 관련해서 일을 가끔 하고 있다. 군에 가기 전에는 React Native Expo로 직접 웹뷰 앱을 개발하서 사용하였었는데, 군에 있는 동안 React Native Expo의 체계가 상당히 많이 바뀌어서 기존 코드로는 앱을 빌드할 수 없는 상황이 되어버렸다. 그래서 내가 군에 있는 동안 다른 웹뷰 프레임워크를 도입하게 되었다고 한다. 그래서 전역 후, 그 새로운 웹뷰 프레임워크에 맞춰서 모바일 앱을 출시하게 되었다.

그렇게 활용되고 있는 모바일 웹뷰 앱 중 하나가 푸시 알림을 적극 활용하는데, 그 푸시 알림이 일정하지 않게 사람들에게 도착한다하여 문제가 되었다. 예전에 개발했던 방식이 구글 firebase와 Apple 푸시 관련 서비스에 직접 푸시 알림을 요청했었는데, 이번에는 OneSignal 이라는 푸시를 더 간편하게 보낼 수 있는 서비스를 활용하게 되었다. 안드로이드랑 애플 쪽 푸시 알림을 OneSignal이 중계해서 더 쉽게 한방에 보내주는 듯한 서비스다.

근데 그렇게 해놓으니 푸시 도착하는 시간이 휴대폰마다 제각각 다른 것이 아닌가? 그래서 이번 모각소 시간에 한번 찾아보았다.

그래서 일단 OneSignal Delayed 공식 문서에 가서 보았더니, 이유가 될만한 것이 상당히 많았다. 첫째, 받는 사람의 네트워크 문제일 수가 있다. 둘째, 자주 사용하지 않는 앱이라 알림 권한이 삭제된 것일 수도 있다. 셋째, 푸시 알람의 우선순위가 문제일 수도 있다. 등등.. 여러 이유가 있어 하나하나 살펴보았다.

먼저 네트워크 문제를 확인하기 위해 같은 네트워크 상에 있는 휴대폰들에 앱을 설치하고 알림 권한도 허용하고 푸시를 날려본 결과, 푸시 알림이 거의 잘 도착했지만 한 사람 휴대폰에서는 푸시 알림이 울리지 않았다. 그래서 그 휴대폰 해당 모바일 앱 권한을 확인해봤는데 권한이 허용되어있었다. 게다가 그 모바일 앱은 출시한지 6개월이 되지 않았다. (앱을 사용을 몇개월 동안 안해야 권한이 삭제된다고 한다.)

그래서 우선순위인 것 같아서 이곳 저곳 영어로도 검색해보기도 한 결과 뭔가 푸시 알림에 우선순위의 속성이 있는 것이 확실해졌다.

현재 푸시 알람을 보내는 방식이, 따로 제작한 관리자 웹사이지에서 OneSignal API로 OneSignal에다가 어떤 알림을 보낼지 날려서, 다시 OneSignal에서 구글과 애플 알림 관련 서비스에 날리고, 거기서 다시 모바일 앱으로 알림을 보내주는 방식이다.

바로 우리의 관리자 웹페이지에서 OneSiganl API로 보내는 코드에, 다음과 같이 priority 속성을 넣어주었다.

{
  "app_id": "YOUR_APP_ID",
  "included_segments": ["All"],
  ... 중략 ...
  "priority": 10
}

그러니 푸시 알림이 모든 휴대폰에 바로바로 가기 시작했다.

아마 채팅 기능을 만드는 등 신속한 푸시 알림이 필요하면, 이 우선순위 속성을 알고있어야 할 것이다.

Loading script...