APNS2 PUSH 발송 SAMPLE ( node.js )

참조 사이트 : https://eladnava.com/send-push-notifications-to-ios-devices-using-xcode-8-and-swift-3/


제목대로 apns2 push발송 샘플예제 입니다.

간단하니 아래내용 순서대로 진행하세요.

저는 맥환경에서 진행을 했기때문에 일정부분 차이가 있을 수 있다는점 유념하세요.

* 기존에 apns 를 사용하던 앱이라면 클라이언트에서 따로 작업할 부분은 없습니다. 


아래 예제는 클라이언트 부분을 제외하고 node를 통한 apns2 (아이폰 푸시 )발송 방법만 있습니다.

클라이언트 소스는 없어요!! 

나중에라도 필요하다면 따로 포스트 올리겠습니다.


1. NODE.js 설치

링크 : https://nodejs.org/ko/

> 그냥 default 로 설치하면 알아서 됩니다~


2.  터미널 열고 아래 명령어 그대로 입력.

* 저장할 프로젝트로 이동후 아래 명령어를 실행하세요.

mkdir apns 

cd apns 

npm init --yes 

npm install apn --save

*apns 폴더가 생기고 그아래 node_modules등등 여러가지 파일들이 만들어져 있으면 제대로 된겁니다. 


3. apns폴더에 *.p8 파일 놓기

4. apns폴더에 app.js 파일 생성 후 아래 코드 입력  ( 아래 첨부파일을 받아도 됩니다. )

app.js


var apn = require('apn');

// Set up apn with the APNs Auth Key
var apnProvider = new apn.Provider({  
     token: {
        key: 'apns.p8', // Path to the key p8 file
        keyId: 'ABCDE12345', // The Key ID of the p8 file (available at https://developer.apple.com/account/ios/certificate/key)
        teamId: 'ABCDE12345', // The Team ID of your Apple Developer Account (available at https://developer.apple.com/account/#/membership/)
    },
    production: false // Set to true if sending a notification to a production iOS app
});

// Enter the device token from the Xcode console
var deviceToken = '5311839E985FA01B56E7AD74444C0157F7F71A2745D0FB50DED665E0E882';

// Prepare a new notification
var notification = new apn.Notification();

// Specify your iOS app's Bundle ID (accessible within the project editor)
notification.topic = 'my.bundle.id';

// Set expiration to 1 hour from now (in case device is offline)
notification.expiry = Math.floor(Date.now() / 1000) + 3600;

// Set app badge indicator
notification.badge = 3;

// Play ping.aiff sound when the notification is received
notification.sound = 'ping.aiff';

// Display the following message (the actual notification text, supports emoji)
notification.alert = 'Hello World \u270C';

// Send any extra payload data with the notification which will be accessible to your app in didReceiveRemoteNotification
notification.payload = {id: 123};

// Actually send the notification
apnProvider.send(notification, deviceToken).then(function(result) {  
    // Check the result for any failed devices
    console.log(result);
});

 * 바꿔야할  키값 설명  (소스에 보면 해당 키값있습니다!.)

-key: 'apns.p8'

 > p8파일 이름

-keyId: 'ABCDE12345'

 >p8 파일 생성 후 완료페이지에서 확인가능  p8파일의 키아이디.

-teamId: 'ABCDE12345'

 >개발자 계정 membership 에서 확인 가능 (https://developer.apple.com/account/#/membership/)

-production: false ( inhouse 이거나 마켓 배포용은 true, 개발환경에서 빌드 후 테스트 시에는 false) 

-deviceToken : ios단말에서 생성된 푸시 토큰값

-notification.topic : 앱의 번들 아이디


4. 터미널 열고 apns폴더로 위치 시킨후, 

node app.js 입력  > 푸시 발송됨

* 취소는 컨트롤(?  안되면 커맨드 옵션 등등을 누르세요;; ) + z 키를 하면 꺼집니다! 

그냥 터미널만 꺼도 종료됩니다


도움이 됐다면 아래 하트 꾸욱! 


끝.