Node.js を使って Push Notification(プッシュ通知)を送信する方法
Push Notification(プッシュ通知)を送信するには、Apple Push Notification service (APNs) に TTP/2 と TLS 1.2 以降で接続して Post リクエストを送ります。
「curl を使って Push Notification(プッシュ通知)を送信する」では、テストのために curl を使ってコマンドラインからプッシュ通知を送信しましたが、ここでは Node.js で、Apple Push Notification module for Node.js (node-apn) を使って送信するサンプルコードをご紹介します。
まだ、Apple Push Notification service 証明書の生成・インストールや、プッシュ通知を受信する iOS アプリを生成していない方は「Push Notification(プッシュ通知)を実装する方法」をご参考に、済ませておいてください。
curl の時は、証明書の p12 ファイルを pem ファイルに変換しましたが、node-apn で送信する場合は、p12 形式のままで大丈夫です。
p12 ファイルをエクスポートしていない場合は「証明書から p12 ファイルをエクスポートし pem ファイルに変換する」を参考にエクスポートしておいてください。
Node.js を使って Push Notification(プッシュ通知)を送信する方法
まず、新規フォルダを作り、ターミナルでそのフォルダに移動し、以下のコマンドで Apple Push Notification module for Node.js をインストールします。
npm install apn --save
そして、同じフォルダ内に send.js というファイルを作り、以下のコードをコピーします。
var apn = require('apn');
var deviceToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var options = {
pfx: '/Users/user1/Desktop/PushTestCertificate.p12',
passphrase: 'password',
production: false,
};
var provider = new apn.Provider(options);
let notif = new apn.Notification();
notif.alert = 'Softmoco Push Notification Test 123!!';
notif.topic = 'com.softmoco.PushTest';
notif.badge = 1;
notif.sound = 'default';
provider.send(notif, [deviceToken]).then((result) => {
console.log('sent:', result.sent.length);
console.log('failed:', result.failed.length);
console.log(result.failed);
});
provider.shutdown();
deviceToken には「Push Notification(プッシュ通知)を受信する iOS アプリを作る」で取得したものを使います。
options の pfx には生成した PushTestCertificate.p12 へのパスを、passphrase にはエクスポートした際に入力したパスワードを指定します。
11 行目で options を指定して、apn.Provider クラスのオブジェクトの provider を生成しています。
13 ~ 17 行目で、apn.Notificationクラスのオブジェクトの notif を定義し、送信したいプッシュ通知の payload にあたる情報を指定しています。
notif.topic には「Xcode で Bundle Identifier を設定する」で設定した Bundle Identifier (com.softmoco.PushTest) を指定します。
19 行目の provider.send() でプッシュ通知を、Apple Push Notification service (APNs)に送信しています。
ターミナルを開きこのファイルを実行します。
node send.js
Push Notification(プッシュ通知)をこちらで作成した PushTest (com.softmoco.PushTest) の iOS アプリで受信できました。
以上、Node.js を使って Push Notification(プッシュ通知)を送信する方法をご説明しました。