当前位置: 首页 > 知识库问答 >
问题:

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

马星阑
2023-03-14

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

创建平台应用程序

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个答案

宗冷勋
2023-03-14

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

  1. 创建一个主题,将每个endpoint订阅到该主题,然后发布到该主题。SNS将处理将消息传递给每个主题订阅者。如果您正在广播通知或
  2. ,此解决方案非常有效
  3. 为每个用户创建endpoint,将这些endpoint的ARN存储在某个位置,然后直接发布到您希望将通知传递到的每个endpoint。
 类似资料:
  • 我需要使用< code>aws-sdk-go lib通过设备令牌数组向多个设备发送SNS推送通知。 目前我正在使用以下步骤向SNS发送推送消息: 创建endpoint: 将消息发送到endpoint: 我还没有见过一种方法,只使用一个请求就可以将一个推送消息发送到多个设备。可能吗? 像这个例子来说明:

  • 问题内容: 我正在关注http://javapapers.com/android/google-cloud-messaging-gcm-for-android- and-push-notifications/ 吗?通过GCM发送推送通知。一切正常,但是,我只能将推送通知发送到一台设备。注册另一台设备将替换先前设备的注册ID。我在http://javapapers.com/android/andro

  • 我正在Symfony3上开发REST API应用程序。我想注册移动设备并向它们发送直接推送通知。例如,当一个用户向另一个用户发送反馈时,第二个用户将获得推送通知。 有了Amazon SNS,可以不广播,而是直接从服务器通知单个设备吗?

  • 我的AWS社交网络停止向我的iOS订阅者发送推送通知,我正在试图了解原因。所以我从零开始,目标是向我的测试设备发送1个通知。 我已经做了以下工作: 在iOSDev Portal上创建新的Apple推送服务类型的新证书,而不是旧的APNsiOS生产,导入到钥匙串,导出证书和私钥,按照AWS SNS APNS说明中的说明将其添加到AWS。 已确认此新APNS证书显示在门户上我的应用ID的“生产SSL证

  • 我为沙盒iOS设置了推送通知,它们曾经工作过,但由于某种原因目前不工作。这是来自云观察日志的错误AWS SNS: 这是我的发送代码(AWS Lambda调用此代码): Lambda方法的返回数据: 我已经将问题缩小到不与我的lambda方法关联,因为我试图发布到直接从SNS控制台创建的endpoint。我还想知道为什么这个旧的实现在过去,一个月或两个月前,仍然有效,而现在不再有效。我认为这可能与过

  • 我使用aws sns向设备发送推送通知(移动设备大多是android)。我可以向单个设备发送通知,但我想发布一条必须发送给所有活动设备的通用消息。我已经创建了平台应用程序,并使用所有设备注册id创建了endpoint,还创建了主题并订阅了主题,但当我发布消息时,发布成功,我获得了消息id,但没有收到通知。我已经实现了AmazonSNSClient类中的大多数方法。如果有人能指导我,这将是非常有益的