Node.js를 이용하여 iOS 푸시기능 구현


안녕하세요 남산돈가스입니다.
지난 시간에 이어서 오늘은 #2 Node.js를 이용하여 iOS 푸시기능을 구현해보는 시간을 갖겠습니다.
일단 이 포스팅에서는 iOS용 APNS 인증서와 키가 모두 발급되어있다는 전제하에 포스팅을 진행하려고 합니다.
iOS 클라이언트 단에서 APNS를 셋팅하는 부분은 아래 링크에 보기 쉽게 설명되어있으니 참고하시면 쉽게 따라오실 수 있을 것입니다.
http://blog.saltfactory.net/node/implementing-push-notification-service-for-ios.html
자, 그럼 ios에 푸시를 날리기위한 준비물이 완성되었으니 이제 nodejs쪽을 확인해봅시다.
간단한, 프로젝트를 생성하겠습니다.


express App으로 pushTest라는 프로젝트를 생성했습니다.
nodejs에서 apns 모듈을 사용하기 위해서는 apn 모듈을 install 해야합니다.
npm install apn

apn 모듈을 설치한 뒤 js파일을 하나 생성합니다

// Developer mode
var dev_options = {
    gateway : "gateway.sandbox.push.apple.com",
    cert: './ios-certificates/development/swift_apns_development_cert.pem',
    key: './ios-certificates/development/swift_apns_development_server.pem',
    production: false
};

// Production(App store)
var pro_options = {
    gateway : "gateway.push.apple.com",
    cert: './ios-certificates/development/swift_apns_production_cert.pem',
    key: './ios-certificates/development/swift_apns_production_server.pem',
    production: true
};

우선 install한 apn 모듈을 불러온 뒤,  dev_options과 prod_options를 선언합니다.
dev_options와 prod_options를 따로 선언한 이유는 개발버젼과 운영버젼을 분리하여 셋팅하기 위하여 위와 같이 작성했습니다.
 그 안에 발급받은 인증서 파일과 키 파일의 경로를 입력하고 개발에는 production을 false,
운영엔 production을 true로 설정해놓으면 apn 모듈이 자체적으로 운영일 경우에 맞게 셋팅합니다.

// APNS Connection
var apnConnection = new apn.Connection(dev_options);

개발 설정환경으로 apns 연결하는 부분입니다.

// Notification setting
var note = new apn.Notification();
note.expiry = Math.floor(Date.now() / 1000) + 3600; // Expires 1 hour from now.
note.badge = 1;
note.sound = "ping.aiff";
note.alert = "Swift프로젝트에서 Push 메시지 수신!";

실제로 전달 될 알림에 대한 설정을 해주는 부분입니다.
expiry는 푸시의 만료기한, badge는 알림배지의 여부를 설정해줍니다. 배지를 설정하지않으려면 0으로 셋팅합니다. sound는 푸시가 왔을 때 소리를 설정해 줄 수 있습니다.
alert은 가장 중요한 푸시메시지를 설정해주는 부분입니다.

// Devices Array
var tokenArr =
    [
        '수집된 디바이스 토큰값',
    ];
var deviceArr = [];

for(var i=0;i<tokenArr.length;i++){
    var token = tokenArr[i];
    var myDevice = new apn.Device(token);
    deviceArr.push(myDevice); 

프로젝트를 build하면서 획득한 디바이스 토큰값들을 apn.Device를 통해 생성하고 한꺼번에 푸시를 전송할 수 있게하기 위하여 deviceArr에 Device 데이터를 넣어줍니다.

apnConnection.pushNotification(note, deviceArr);

실제 푸시를 전송하는 부분입니다.
apnConnection 객체에 pushNotification 메서드를 사용하였고 파라미터로는 위에서 설정한 푸시 설정을 가지고 deviceArr 배열에 담긴 Device 정보에 푸시를 전송하게 됩니다.

여기까지 간단하게 apn모듈을 사용해 푸시메시지를 전달하는 과정에 대해서 알아보았습니다. 다음 포스팅은 gcm을 통해서 android 푸시를 구현해보도록 하겠습니다.

댓글

주간 인기글

SPA(Sigle Page Applications) 란 무엇인가?

[앱 디자인] 디자인 가이드 만들기 - 안드로이드

[ubuntu] 신규 계정에 sudo 권한 추가하기

Nodejs 날짜 관련 유용한 moment.js

[Android] Parcelable 에 대한 쉬운 이해