node 에서 apns 푸시 메시지를 Slient 로 보내는 방법

노드에서 아이폰으로 사일런트 푸시를 보낼 때 방법이다.

나 같은 경우는 수면 알람을 깨우는데 사용한다.


버전은 apn 2.2.0 을 사용했다.

이 버전이 노드 16 이상을 요구해서 노드를 업그레이드 했다.


먼저 선언을 한다.

const apn = require('apn');

그런 다음 보내기 위한 옵션을 설정한다.

var options = {
token: {
key: "./AuthKey_XXXX.p8",
keyId: "XXXX",
teamId: "XXXX"
},
production: false
};
var apnProvider = new apn.Provider(options);

수면 알람이 분단위로 측정되기 때문에 매분마다 수행하는 루틴을 작성 후 

그 안에 로직을 추가하였다.

setInterval(async function () {
let notification = new apn.Notification();
notification.topic = "앱 번들 아이디"
notification.priority = 5
notification.pushType = "Background"
notification.rawPayload = {
aps: {
"content-available": 1
},
acme1: "bar",
acme2: 42
}
apnProvider.send(notification, i.token).then((result) => {
console.log(JSON.stringify(result))
});
}, 60 * 1000);

위에 priority 와 pushType 이 예시에 없어서 오류가 났다.

이 두개의 항목을 꼭 추가 해야만 발송된다.


또한 앱 심사가 완료되면

위에 production = false 를 true 로 변경해야 한다.

이 스위치로 샌드박스와 앱스토어 구분을 한다.


댓글

이 블로그의 인기 게시물

한글 2010 에서 Ctrl + F10 누르면 특수문자 안뜰 때

아이폰에서 RFID 사용하는 방법

맥 화면이 안나올때 조치방법