【发布时间】:2017-01-18 05:29:44
【问题描述】:
我搜索了 AWS 文档并浪费了几个小时,但找不到使用 Node JS 发送推送通知的 API 和代码。 任何人都可以帮助在 Android 和 iOS 设备上使用 Node JS 发送 AWS SNS 推送通知吗?
【问题讨论】:
标签: node.js amazon-web-services push-notification apple-push-notifications amazon-sns
我搜索了 AWS 文档并浪费了几个小时,但找不到使用 Node JS 发送推送通知的 API 和代码。 任何人都可以帮助在 Android 和 iOS 设备上使用 Node JS 发送 AWS SNS 推送通知吗?
【问题讨论】:
标签: node.js amazon-web-services push-notification apple-push-notifications amazon-sns
得到答案。
var AWS = require('aws-sdk');
AWS.config.update({
accessKeyId: '{AWS_KEY}',
secretAccessKey: '{AWS_SECRET}',
region: '{SNS_REGION}'
});
var sns = new AWS.SNS();
var payload = {
default: 'Hello World',
APNS: {
aps: {
alert: 'Hello World',
sound: 'default',
badge: 1
}
}
};
// first have to stringify the inner APNS object...
payload.APNS = JSON.stringify(payload.APNS);
// then have to stringify the entire message payload
payload = JSON.stringify(payload);
console.log('sending push');
sns.publish({
Message: payload, // Required
MessageStructure: 'json',
TargetArn: {{TargetArn}} // Required
}, function(err, data) {
if (err) {
console.log(err.stack);
return;
}
console.log('push sent');
console.log(data);
});
});
【讨论】:
使用 sns-mobile
以下示例为由 PlatformApplicationArn 标识的 Android 应用程序创建一个 SNS 实例
var SNS = require('sns-mobile'),
EVENTS = SNS.EVENTS;
var SNS_KEY_ID = process.env['SNS_KEY_ID'],
SNS_ACCESS_KEY = process.env['SNS_ACCESS_KEY'],
ANDROID_ARN = process.env['SNS_ANDROID_ARN'];
var androidApp = new SNS({
platform: SNS.SUPPORTED_PLATFORMS.ANDROID,
region: 'eu-west-1',
apiVersion: '2010-03-31',
accessKeyId: SNS_ACCESS_KEY,
secretAccessKey: SNS_KEY_ID,
platformApplicationArn: ANDROID_ARN,
//sandbox: true (This is required for targetting (iOS) APNS_SANDBOX only)
});
// Add a user, the endpointArn is their unique id
// endpointArn is required to send messages to the device
androidApp.addUser('some_fake_deviceid_that_i_made_up', JSON.stringify({
some: 'extra data'
}), function(err, endpointArn) {
if(err) {
throw err;
}
// Send a simple String or data to the client
androidApp.sendMessage(enpointArn, 'Hi There!', function(err, messageId) {
if(err) {
throw err;
}
console.log('Message sent, ID was: ' + messageId);
});
});
【讨论】: