Push Notification

Node.js 推播處理 (2)

基本介紹

教學目標

透過 node-gcm 套件進行 Android 的推播服務。

前置作業

  1. 準備 Google 伺服器專用的 API 金鑰。
  2. 準備開發中行動裝置對應個別 App 的推播專用之 Registration Id 。

套件安裝

1
npm install node-gcm --save

使用教學

建立

建立 Android 推播服務需要設定基本參數。

1
2
3
4
5
6
7
8
9
10
11
12
var gcm = require("node-gcm");
var payload = new gcm.Message({
delayWhileIdle: false,
message gets sent to the client.
collapseKey: "demo",

data: {
alert: "Alert!"
}
});
payload.addDataWithObject({
id: 1
});

準備

建立準備發送播放的 Registration Id 清單,實務上會從資料庫中取得特定 App 發送推播的清單。

1
2
var registration_ids = [];
registration_ids.push("Registration Id");

發送

發送之前必須使用 Google 伺服器專用的 API 金鑰,以及設定正確的參數,接著將相關資訊傳送至 Android 專用的推播伺服器 (GCM) ,就能進行推播服務。

1
2
3
4
5
var gcm_connection = new gcm.Sender("Google 伺服器專用的 API 金鑰");
gcm_connection.send(payload, registration_ids, 4, function(err, result) {
if (err) { throw err };
console.log(result);
});

相關資源

Node.js 推播處理 (1)

基本介紹

教學目標

透過 apn 套件進行 iOS 的推播服務。

前置作業

  1. 準備個別 App 開發階段與產品階段給推播服務專用的金鑰檔案與憑證檔案。
  2. 準備開發中行動裝置對應個別 App 的推播專用之 Device Token 。

套件安裝

1
npm install apn --save

使用教學

建立

建立 iOS 推播服務需要設定基本參數。

1
2
3
4
5
6
7
8
9
var apn = require("apn");
var notification = new apns.Notification();
notification.expiry = Math.floor(Date.now() / 1000) + 3600;
notification.alert = "Alert!";
notification.badge = 1;
notification.sound = "default";
notification.payload = {
id: 1
};

準備

建立準備發送播放的 Device Token 清單,實務上會從資料庫中取得特定 App 發送推播的清單。

1
2
var device_tokens = [];
device_tokens.push("推播專用之 Device Token");

發送

發送之前必須使用開發階段的金鑰檔案和憑證檔案,以及設定正確的參數,接著將相關資訊傳送至 iOS 專用的推播伺服器 (APNs) ,就能進行推播服務。

1
2
3
4
5
6
7
8
9
10
11
var options = { 
cert: "cert_dev.pem",
key: "key_dev.pem",
gateway: "gateway.sandbox.push.apple.com",
port: 2195,
errorCallback: throw err
};
var apn_connection = new apns.Connection(options);
for (var n=0; n<device_tokens.length; n++) {
apn_connection.pushNotification(notification,new apn.Device(device_tokens[n]));
}

此外,對於產品階段的 App ,若要進行推播服務,則必需要使用產品階段的金鑰檔案和憑證檔案,以及設定正確的參數。

1
2
3
4
5
6
7
var options = { 
cert: "data/cert_dev.pem",
key: "data/key_dev.pem",
gateway: "gateway.push.apple.com",
port: 2195,
errorCallback: throw err
};

相關資源