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

Node.js を使って Push Notification(プッシュ通知)を送信する方法 1


Push Notification(プッシュ通知)をこちらで作成した PushTest (com.softmoco.PushTest) の iOS アプリで受信できました。

Node.js を使って Push Notification(プッシュ通知)を送信する方法 2


以上、Node.js を使って Push Notification(プッシュ通知)を送信する方法をご説明しました。

© 2024 iOS 開発入門