[Xamarin]로컬알림, 원격알림(GCM/FCM) 차이점

해내면 그만!XX·2022년 11월 16일
0
post-custom-banner

일정관리 프로그램의 대부분은 자체 알림 기능(Local Notification)을 포함하고 있다. 하지만 웹/모바일 환경으로 확대 되면서 네트워크를 이용한 알림 공유가 떠오르고 있다. 필자가 경험한 바에 의하면 로컬 일정관리 프로그램과 웹 일정을 공유하거나 서버의 서비스 상태를 모니터링할 때는 모두 SMS(Short Message Service)를 사용한다.

하지만 이것은 사용자가 항상 들고 다니며 사용빈도가 높은 휴대폰을 엔드포인트로 고려한 알림 서비스다.

원격 알림 SMS(Short Message Service)

애플리케이션을 위한 알림이 도착하면 애플리케이션은 깨어나서 그 메세지를 전달받아 그에 대한 동작을 수행한다.
원격으로 메시지를 전달받는 서비스인 SMS는 휴대폰이 확산되면서 필수 기능 중 하나로 자리매김했다. SMS는 사용자간 메시지를 주고받는 것 외에도 일정알림이나 서버 모니터링 시 주요 메시지를 전달받는 원격 알림으로 사용된다.

하지만 스마트폰 관련 앱이 폭발적으로 확대되면서 알림 서비스는 단순 메시지 전달 외에도 소셜 네트워크 서비스(SNS), 뉴스, 주식, 경매, 스포츠 결과, 게임 등 다양한 용도로 사용되고 있다. 그래서 SMS의 비용측면과 메시지 전달의 즉시성을 모두 만족시키는 원격 알림 서비스(Remote Notification Service)에 대한 관심이 커지고 있다.

이런 배경을 고려해 지금부터 원격 알림의 기본적인 내용과 스마트폰에서 왜 푸시 알림을 사용하는지 그리고 모바일 OS에서 제공되는 알림 지원 서비스를 알아보겠다.

Push notification(푸시 노티피케이션) 흔히 푸시 알림, 푸시 메시지로 일컫는 기기 메시지의 형태인데 네트워크를 통해 정보를 전송받으면 그 정보를 바탕으로 앱에서 메시지를 그대로 표시하거나 또는 가공하여 표시합니다.

푸시 알림 튜토리얼
iOS 개발자는 사람들이 멋진 앱을 지속적으로 사용하는 것을 좋아합니다. 그러나 사용자는 때때로 앱을 닫고 다른 활동을 하고 있습니다. 다행히도 푸시 알림을 통해 개발자는 사용자가 앱을 적극적으로 사용하지 않을 때도 사용자에게 다가가 작은 작업을 수행할 수 있습니다!

푸시 알림이란 앱이 실행되고 있지 않거나 전화기가 잠자기 상태인 경우에도 Apple 푸시 알림 서비스(APN; Apple Push Notification Service)를 통해 앱으로 전송되는 메시지입니다. 푸시 알림을 어떻게 사용할 수 있을까요?

경고라고 하는 짧은 문자 메시지를 표시하여 앱의 새로운 사항에 주의를 집중시킵니다.
알림 소리를 재생합니다.
앱 아이콘에 배지 번호를 설정하여 사용자에게 새 항목이 있음을 알립니다.
사용자가 앱을 열지 않고도 수행할 수 있는 작업을 제공합니다.
미디어 첨부 파일을 표시합니다.
앱이 백그라운드에서 작업을 수행할 수 있도록 사용자가 모르게 조용히 메시지를 보냅니다.
알림을 스레드로 그룹화합니다.
전달된 알림을 편집하거나 제거합니다.
알림을 표시하기 전에 코드를 실행하여 알림을 변경할 수 있습니다..
알림에 대한 맞춤형 대화형 UI를 표시합니다.
기타 등등

GCM 구글 클라우드 알림
애플리케이션 업데이트 정보를 단말에 알려줘야 하는 경우처럼 이미 많은 사람들이 사용하는 애플리케이션에 알림 메세지를 전송하려고 할 때는 GCM을 사용하는 것이 간편하다.

로컬알림(Local Notification)

원격서버에 의존하지 않고 로컬 애플리케이션에서 알림을 실행할 수 있다

(로컬 푸시 메시지, 오프라인 푸시 메시지)
Local notification(로컬 노티피케이션) 흔히 푸시 알람, 푸시 메시지로 일컫는 기기 메시지의 형태인데 외부 네트워크를 거치는 형태가 아닌 기기 내부에서 발신하는 오프라인 푸시 알람입니다.

...willPresent notification...
앱이 실행중일 때 메시지를 받는 경우 실행되는 부분입니다.
completionHandler를 추가하면 앱이 실행중인 경우에도 푸시 메시지가 표시됩니다.
...didReceive response...
푸시 메시지를 클릭했을 때 실행할 작업을 지정합니다.
앱의 실행 여부는 관계가 없습니다.
앱이 실행중이 아닌 경우, 앱이 오픈되면서 ...didReceive... 함수가 실행됩니다.

기본
앱에서 알림 권한 허용을 요청합니다.
UNMutableNotificationContent 인스턴스에 푸시 메시지의 제목, 내용, 필요한 경우 사진 및 커스텀 소리 등을 추가합니다.
푸시 메시지를 일정 시간 후 작동시키도록 트리거링하거나 스케줄을 예약하는 트리거를 작성하고, 컨텐츠, 트리거를 바탕으로 푸시 메시지를 등록합니다.
푸시 메시지를 터치(클릭)했을 경우 실행할 작업을 작성합니다.
등록된 푸시 메시지를 취소(삭제)합니다.

로컬 알림과 서버 알림의 차이점은 무엇일까요?

로컬 푸시는 처음에 앱을 제작을 할 때 앱 코드 내부에 미리 심어놓은 메시지가 전달되는 경우가 대부분입니다. 따라서 만약 상황에 따라 반영을 할 수 없다는 게 큰 한계가 있습니다.
( 예를 들어서 깜짝 세일 이벤트를 하고 있어서 알림을 해주고 싶은데 이런 경우는 로컬 푸시 알람을 사용 못하겠죠? ㅠㅠ)
서버 푸시는 앱 서비스 운영자가 필요한 시점에 인스턴스 메시지를 만들어 날릴 수 있으므로 유용하게 사용할 수 있습니다. 단, 애플 개발자 계정을 가지고 있는 사람만 인증서를 통해 APNs 인증서를 발급할수 있습니다.
( 예를 들어서 위에 설명했던 깜짝 세일 이벤트를 한다고 해도 알림 기능을 사용할수 있습니다. )
메시지의 출처가 전혀 다릅니다.

  • 로컬 푸시는 앱 내부에서 특정 프로세스에 의해 등록된 메시지를 iOS가 전달하는 방식입니다.

  • 서버 푸시는 별도의 서버를 통해 APNs라는 애플 고유의 메시징 시스템에게 보낸 메시지가 네트워크를 통해 전달하는 방식입니다.
    로컬 푸시는 코드에 구현만 하면 되지만 서버 푸시는 구현하려면 개인의 디바이스 토큰 정보를 저장할 데이터베이스 서버와 인증서와 키도 발급을 해야 합니다.

  • APNS란 iOS에 표시되는 푸시 알림 기능으로 애플 개발자 페이지에서 인증서와 키를 설정해야지만 사용을 할 수 있습니다.

참조
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=wlsdnrtjd&logNo=20143384732
https://huiung.tistory.com/169
http://yoonbumtae.com/?p=4692
http://yoonbumtae.com/?p=4642
https://boidevelop.tistory.com/48

post-custom-banner

0개의 댓글