使用 Node JS 的 AWS SNS 推送通知

Posted

技术标签:

【中文标题】使用 Node JS 的 AWS SNS 推送通知【英文标题】:AWS SNS push notification using Node JS 【发布时间】:2017-01-18 05:29:44 【问题描述】:

我搜索了 AWS 文档并浪费了几个小时,但找不到使用 Node JS 发送推送通知的 API 和代码。 任何人都可以帮助在 androidios 设备上使用 Node JS 发送 AWS SNS 推送通知吗?

【问题讨论】:

docs.aws.amazon.com/sns/latest/dg/SNSMobilePushBaiduAPI.html ***.com/questions/21609121/… 【参考方案1】:

得到答案。

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);
  );
);

【讨论】:

【参考方案2】:

使用 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);
  );
);

For more detail see documentation

【讨论】:

以上是关于使用 Node JS 的 AWS SNS 推送通知的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Node JS 中使用 Amazon SNS 向 iOS 设备发送 VoIP 推送通知

使用 Laravel 的 AWS SNS 推送通知

AWS SNS 移动推送通知

AWS SNS 推送通知说明

使用 AWS SNS 向特定 APNS 令牌发送推送通知

AWS - SNS 端点为 iOS 自行禁用 - Apple 设备(推送通知失败)