javascript - 向多个设备发送 SNS 推送通知

当我创建 createPlatformEndpoint 时,我需要使用 aws-sns-javascript 向多个设备发送推送通知我可以只添加一个设备令牌,但我需要像数组令牌一样向多个设备发送通知

创建平台应用程序

var params = {
  Attributes: {
    'PlatformCredential': 'My API KEY'
  },
  Name: 'dist-ba-dist',
  Platform: 'GCM'
};
sns.createPlatformApplication(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

创建平台端点

var params = {
  PlatformApplicationArn:`data.PlatformApplicationArn` , 
  Token: 'My Device Token',
  CustomUserData: 'STRING_VALUE'
};
sns.createPlatformEndpoint(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

向 Amazon SNS 主题发送消息

var payload = {
    default: 'Hello World',
    GCM: {
        notification: {
            body: "Sample message",
            title: "Hello World"
        }
    }
};
console.log("endpointArn", data.EndpointArn)
payload.GCM = JSON.stringify(payload.GCM);
payload = JSON.stringify(payload);
console.log('payload', payload)

console.log('sending push');
sns.publish({
    Message: payload,
    MessageStructure: 'json',
    TargetArn: data.EndpointArn,
}, function (err, data) {
    if (err) {
        console.log(err.stack);
        return;
    }

    console.log('push sent');
    console.log(data);
});

回答1

要将推送通知发送到多个设备,您可以

  1. 创建一个主题,为每个端点订阅该主题,然后发布到该主题。 SNS 将处理将消息传递给每个主题订阅者。如果您正在广播通知,此解决方案非常有用,或者
  2. 为每个用户创建端点,store 在某处为这些用户创建 ARN,然后直接发布到您希望将通知传递到的每个端点。

相似文章

最新文章