RSS

태그 보관물: 푸시

애플 푸시 알림 서비스(APNS) 개요

애플의 푸시 노티피케이션 서비스(APNS)를 사용하는 방법
1. APNS란?
iOS 앱스가 백그라운드로 돌아가고 있을 때에도, 해당 앱을 깨우거나 메시지를 전달할 수 없을까? 크게 두가지로 방법이 있는데 하나는 local notification과  remote notification이다. 이름처럼 local notification은 앱스 내의 타이머를 세팅하고 알람해주는 방식이고 remote notification은 원격 서버에서 메시지를 보내서 앱스에게 전달되는 방식이다. (주의! local notification은 ios 4.0 이후로 지원한다.)
본 글에서 이야기 하려는 것은 remote notification이다.
2. 등장인물
remote notificaiton을 설명하려면 세명의 등장인물이 있다. 앱스와 APNS서버와 APNS Provider 이다. 이들의 역할은 다음과 같다.
  • 앱스  – 내가 만든 앱
  • APNS서버 – 애플이 구축해놓은 iOS장치로 푸시 메시지를 보내는 클라우드 서버
  • APNS Provider – 애플의 APNS서버로 특정 디바이스의 앱스로 푸시 메시지를 보내달라고 요청하는 역할의 전용 서버.
3. 동작 방식
이 주인공들 사이에서 어떤 일이 일어나서 푸시 메시지가 전달되나 살펴보면 다음과 같다.
  1. 어떤 앱스가 APNS서버에게 푸시용으로 사용할 deviceToken를 요청해서 받는다.
  2. apps는 받은 deviceToken를 APNS Provider에게 보낸다.
  3. APNS Provider는 해당 deviceToken으로 푸시 메시지를 보내줄 것을 APNS서버로 요청한다.
  4. APNS 서버는 deviceToken를 보고 어느 디바이스의 어떤 앱스인지 판단하고 보낸다.
4. device token 좀 더 자세히
device token은 애플에서 암호화 해서 전달될 64바이트 문자열이다. 개념적 정의는 어느 디바이스와 어느 앱스를 특정하는 역할이다. 즉 메일 수신 주소와 비슷하다. someApp@someDevice 으로 이해하면 되겠다. 이것은 iOS앱스를 실행할 때 미리 정의된 콜백함수를 구현함으로 받을 수 있다.

– (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

device token은 두 종류가 있는데, 개발(development)용과 배포(production)용이다. 개발인증서로 sign된 경우는 development용 device token이, 배포용인 경우는 배포용으로 받아지게 된다.
5. APNS Provider
애플의 APNS 클라우드 서버에 특정 deviceToken으로 어떤 메시지를 보내달라고 요청하는 전용서버인데, 이해하기 쉬운 예를 들자면 보내는 메일 서버같은 개념이다. deviceToken이 이메일 수신자라면 APNS Provider에서 해당 수신자로 어떤 내용을 보내달라고 요청한다. 이때 애플의 클라우드와 SSL 보안 접속을 하기 때문에 이 서버에는 인증서가 설치되어 있어야 한다.
필자도 apns-php 프로젝트의 도움으로 쉽게 푸시서비스를 구현할 수 있었다.
관련 참고 자료
Advertisements
 
 

태그: , , ,