热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在ReactNative(Android)中订阅AWSSNS主题?

如何解决《如何在ReactNative(Android)中订阅AWSSNS主题?》经验,为你挑选了1个好方法。

我尝试使用aws-sdk-react-native模块:

https://github.com/awslabs/aws-sdk-react-native

配置花了一些时间,但由于这个链接,我可以列出主题:

https://github.com/awslabs/aws-sdk-react-native/issues/35

https://github.com/awslabs/aws-sdk-react-native/blob/master/SNS/IntegrationTests/SNSTests.js

该测试包括如何订阅获取电子邮件的示例,但不包括如何在应用程序中获取通知.我不知道如何获得platformEndpoint,PlatformApplicationArn和deviceToken.

endPoint = sns.createPlatformEndpoint({
  PlatformApplicationArn: '{APPLICATION_ARN}',
  Token: '{DEVICE_TOKEN}'
})
...
var subscribeRequest= {
  "Protocol":"application",
  "TopicArn":topicARN,
  "Endpoint":endPoint
}
try{
  await AWSSNS.Subscribe(subscribeRequest);
}catch(e){
  console.error(e);
  shouldResolve = false;
  return shouldResolve;
}

这有样品吗?我也在寻找一个认证样本.使用firebase会更容易吗?

谢谢



1> cubbuk..:

我用过GCMSNS发送通知.以下是我已经完成的步骤,假设您已经设置GCM并添加了以下所需的库AWS React Native SDK:

首先SNS从AWS 创建一个应用程序:

在此输入图像描述

然后,您需要通过CognitoAWS服务创建联合身份.这是将设备令牌从移动应用程序发送到AWS SNS应用程序所必需的.选择Manage Federated Identities

在此输入图像描述

然后创建你的游泳池,别忘了检查 Enable Access to unauthenticated identities 在此输入图像描述

创建池时,您需要为该池创建IAM角色unauthenticatedauthenticated角色.AWS将帮助您为此创建新角色,但您需要转到IAM Roles菜单并附AmazonSNSFullAccess加到已创建的角色,否则从移动应用程序中您将无法发送设备令牌.

在此输入图像描述

完成这些步骤后,您将能够使用Amazon的React Native SDK发送设备令牌.我编写了一个帮助类,用于将令牌发送到AWS SNS,如下所示:

class AWSUtility {

  constructor() {
    const region = "us-west-1"; //change it with your region
    const IDENTITY_POOL_ID = "pool id created from Federated Identities"
    AWSCognitoCredentials.initWithOptions({region, identity_pool_id: IDENTITY_POOL_ID});
    AWSSNS.initWithOptions({region});
  }

  addTokenToAWSSNS(token, snsEndpointARN) {
    const applicatiOnArn= "change with SNS application Amazon resource name";
    return Promise.try(() => {
      if (!snsEndpointARN) {
        return this.createPlatformEndpoint(token, applicationArn);
      } else {
        return AWSSNS.GetEndpointAttributes({EndpointArn: snsEndpointARN})
          .then((result) => {
            const {Attributes = {}} = result;
            const {Token, Enabled} = Attributes;
            const updateNeeded = Token !== token || Enabled !== 'true';
            if (updateNeeded) {
              return this.updateEndpoint(token).then(() => result.EndpointArn);
            }
            return snsEndpointARN;
          })
          .catch(() => {
            this.createPlatformEndpoint(token, applicationArn)
          });
      }
    });
  }

  updateEndpoint(snsEndpointARN, token) {
    //AWS is returning error saying that it requires 6 params to update endpoint, if anyone has any idea about it let me know please
    return AWSSNS.SetEndpointAttributes({EndpointArn: snsEndpointARN, Attributes: {Token: token, Enabled: true}});
  }

  createPlatformEndpoint(token, applicationArn) {
    return AWSSNS.CreatePlatformEndpoint({Token: token, PlatformApplicationArn: applicationArn})
      .then(result => result.EndpointArn)
      .catch((error = {}) => {
        console.log(error);
      });
  }
}

export default new AWSUtility();


推荐阅读
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • Question该提问来源于开源项目:react-native-device-info/react-native-device-info ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • React项目中运用React技巧解决实际问题的总结
    本文总结了在React项目中如何运用React技巧解决一些实际问题,包括取消请求和页面卸载的关联,利用useEffect和AbortController等技术实现请求的取消。文章中的代码是简化后的例子,但思想是相通的。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • node.jsrequire和ES6导入导出的区别原 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 详解react组件通讯方式(多种)
    这篇文章主要介绍了详解react组件通讯方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着 ... [详细]
  • 近来有一个需求,是需要在androidjava基础库中插入一些log信息,完成这个工作需要的前置条件有编译好的android源码具体android源码如何编译,这 ... [详细]
  • 这篇文章给大家讲解如何利用dhtmlxGantt在服务器端集成数据。脚本数据保存如果您已初始化dataProcessor,则用户或以编程方式所做的任何更改都将自动 ... [详细]
author-avatar
MySeptember
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有