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 로 변경해야 한다.
이 스위치로 샌드박스와 앱스토어 구분을 한다.
댓글
댓글 쓰기