写在前面:

之前使用阿里云的服务器用阿里消息推送好好的,然后因为国外业务需要使用亚马逊服务器,阿里云推送也不能用,用亚马逊的 SNS (短信消息推送服务),SNS 可以对接多家推送平台,其中 Android 的有 FCM 和百度云两家。FCM 是谷歌亲儿子但是没梯子进不来,百度国内可以用但是国外又出不去。出于这个原因两个推送都接入了。如果说单独接入百度推送或者FCM都是简单的事情。主要是接入亚马逊的SNS文档全是英文不说还描述不清楚,网上搜索到的资料又零零散散,所以将这次接入流程记录下来。

一、单渠道接入

百度云推送官方文档 百度云推送需要先创建应用这些资料都是比较好找的不做赘述。创建成功后主要提供这些参数给到亚马逊。客户端密钥就是对应的SECRET KEY

FCM官方文档 流程很清晰,感觉比百度的接入更加方便,不需要配置.so库啥的。创建应用啥的,创建完需要提供API密钥。其实就是图下的云消息传递中的服务器密钥。

二、接入SNS

到这里认为您的推送集成成功,在百度云/FCM自己的控制台测试推送没问题的前提下。准备将我们的设备与SNS连接起来。最主要的就是创建端点,然后将端点信息交给服务器。Android端需要引入SNS相关的包(当前最新版本)

    implementation 'com.amazonaws:aws-android-sdk-sns:2.6.20'

百度云推送创建端点需要token和UserId两个属性,这两个参数再百度云推送服务绑定成功的时候会获取到。在官方代码里面属于拓展属性没有专门的方法添加,需要通过withAttributes()这个方法进行添加参数。FCM可以不用这个方法而是直接通过withToken()将FCM的onNewToken获取到的token传过去。同时也可以进行主题的订阅但是这里注释掉了,有需要可以放开。创建的端点信息需要交给服务器,服务器再做对应的推送。至于怎么给那就是前后端自己约定的事情了。创建端点成功后在亚马逊服务器后台就能看到了。

fun createBaiduEndpoint(userId:String?,token: String): String? {Log.e(PushMessageReceiver.TAG, "sendTokentoSNS: ")userId?:return nullval access_id = "你的亚马逊access_id"val secret_key = "你的亚马逊secret_key"val appArn = "亚马逊创建的应用的ARN"
//  val topicArn= "亚马逊创建的应用的主题的ARN"val credentials: AWSCredentials = BasicAWSCredentials(access_id, secret_key)val provider: AWSCredentialsProvider = StaticCredentialsProvider(credentials)val snsClient = AmazonSNSClient(provider)snsClient.setRegion(Region.getRegion(Regions.EU_WEST_1))var endpointArn: String? = nullendpointArn = try {println("Creating platform endpoint with token $token")//百度云推送在绑定的时候会返回的参数userId和channeIdval mutableMapOf = mutableMapOf<String, String>()mutableMapOf["UserId"]=userIdmutableMapOf["ChannelId"]=tokenval cpeReq = CreatePlatformEndpointRequest().withPlatformApplicationArn(appArn).withToken(token).withAttributes(mutableMapOf)//百度需要FCM不用val cpeRes: CreatePlatformEndpointResult = snsClient.createPlatformEndpoint(cpeReq)
//        val subscribeRequest: SubscribeRequest = SubscribeRequest()
//            .withProtocol("application")
//            .withTopicArn(topicArn)
//            .withEndpoint(result.endpointArn)
//        snsClient.subscribe(subscribeRequest)return cpeRes.endpointArn} catch (ipe: InvalidParameterException) {val message: String = ipe.getErrorMessage()ipe.printStackTrace()val p: Pattern = Pattern.compile(".*Endpoint (arn:aws:sns[^ ]+) already exists " +"with the same [Tt]oken.*")val m: Matcher = p.matcher(message)if (m.matches()) {// The platform endpoint already exists for this token, but with// additional custom data that// createEndpoint doesn't want to overwrite. Just use the// existing platform endpoint.m.group(1)} else {// Rethrow the exception, the input is actually bad.throw ipe}}return endpointArn
}

写在后面:

文章技术含量一点没有,主要是苦于网上没有一套完整的资料,我甚至连怎么引入依赖都百度了好久。上面的代码有些甚至于来自git上ruby端的issue通过自己的猜测写出来的。网上相对较多的还是有相关FCM(GCM)接入SNS的,我也主要借鉴于AWS SNS+Google FCM推送服务的使用这篇博客,稍稍可惜的是并没有讲如何引入依赖。但是关于百度接入SNS的简直凤毛麟角。写在这里方便自己以后回顾也希望能让别人少踩这样的坑。

开发笔记-Android消息推送骚操作:亚马逊-SNS对接FCM和百度云推送相关推荐

  1. 特斯拉Model3车主称无法开启;传高通开发首款笔记本处理器;Dfinity挑战亚马逊 | 雷锋早报...

    特斯拉网络出现宕机,Model3车主无法开启 据Electrek报道,有车主反映,特斯拉汽车互联网网络瘫痪,从美东时间下午3点半开始无法连接.目前故障原因尚不明确. 早在2016年,特斯拉就发生过类似 ...

  2. 微软被曝泄露2.4TB客户敏感数据;亚马逊因滥用算法面临集体诉讼;推特否认马斯克将裁员75%的传闻 | 每日大事件...

    数据智能产业创新服务媒体 --聚焦数智 · 改变商业 01.微软被曝泄露2.4TB客户敏感数据 10月21日消息,据外媒报道,网络安全供应商 SOCRadar 最近向微软通报了一次重大数据泄露事件,声 ...

  3. 2019如何操作亚马逊无货源店群?如何开店运营?

    "工欲善其事必先利其器",想要做好亚马逊无货源店群,首先我们需要知道什么是亚马逊无货源,它是怎样的一种运营模式?开店之前我们又应该准备些什么? 亚马逊无货源模式并不是说没有货源,它 ...

  4. Python学习笔记:通过Headers字段模拟浏览器访问亚马逊界面爬取

    学习笔记:哔哩哔哩 Python 爬虫视频教程全集(62P)| 6 小时从入门到精通 0. 学习视频地址 https://www.bilibili.com/video/BV1pt41137qK?p=1 ...

  5. 【TG-02系列模组①】二次开发环境搭建,快速接入天猫精灵/亚马逊云

    文章目录 前言 一.Linux开发环境搭建 1.1 获取SDK 1.2 安装 YocTools 1.3 编译SDK 1.4 烧录 二.接入天猫精灵 2.1 生成三元组 2.2 烧录三元组 三.接入亚马 ...

  6. Jungle Scout发布亚马逊卖家引流神器,助推新品上首页

    站外引流一直是亚马逊卖家关注的重点,尤其对于刚推出的新品,如何快速提升销售速率?Jungle Scout CEO 兼创始人 Greg 建议这么做: 一.直接提升 6种可以帮助卖家去做产品促销的方式,包 ...

  7. Android 高仿微信实时聊天 基于百度云推送

    一直在仿微信界面,今天终于有幸利用百度云推送仿一仿微信聊天了~~~ 首先特别感谢:weidi1989分享的Android之基于百度云推送IM ,大家可以直接下载:省了很多事哈,本例中也使用了weidi ...

  8. 亚马逊Appstore不兼容Android 12,历时近两个月仍未解决

    谷歌于10月份推出了Android 12更新,截至目前,以Google Pixel系列为主的设备陆续升级到了Android 12系统.然而,有用户报告称亚马逊Appstore与Android 12并不 ...

  9. 大数据早报:路桥率先利用“人脸识别”技术监管医保 亚马逊与微软联合开发人工智能,打造服务大众的AI(10.19)

    数据早知道,上乐投网看早报! 『数据安全』微软内部Windows漏洞数据库曾被入侵:后果可怕 作为这个星球上覆盖率最高的操作系统,Windows的一举一动都影响着大家的使用体验,对于它的安全微软也是相 ...

最新文章

  1. java 对象 jvm生命_JVM对象的生命周期
  2. Python正则表达式尽可能小的匹配(遇到第一个结束字符串就停止匹配)
  3. uva 1623——Enter The Dragon
  4. 在java中jvm目录_JVM具体在哪个文件夹下的
  5. canvas绘图数学知识总结
  6. Linux的软链接和硬链接
  7. 渗透之——Metasploit自定义FTP扫描模块
  8. LE Coded PHY和LE Uncoded PHY
  9. java es1.8_elasticsearch 启动时指定jdk版本
  10. 优秀的免版权图库软件推荐,软件内图片均可免费商用。
  11. 结构化、半结构化和非结构化数据
  12. 豪杰、君子、庸人、韭菜
  13. 使用git push没有报错,但是远程仓库没有更新的问题
  14. app式成语_app式的词语,app的成语都有什么?
  15. 网站服务器垃圾清理,服务器安全狗垃圾清理功能操作教程
  16. Go语言核心之美 3.2-slice切片
  17. 2018科大讯飞Java笔试第三道编程题
  18. Feature系列-GIST
  19. Error in DESeqDataSet(se, design = design, ignoreRank) : some values in assay are negative
  20. PDF文件太大怎么压缩,方法其实很简单

热门文章

  1. PHP扩展安装与使用系列教程(39) --- yac 用户数据缓存插件
  2. 车牌识别的N种办法——从OCR到深度学习
  3. eclipse rcp_品牌化您的Eclipse RCP应用程序
  4. Jetson Nano 系统镜像烧写的一个坑!
  5. 学习一个月web开发的成果,服务器C++,数据库postgresql简易的知识分享平台
  6. 中学生被打处理方式_学校对于初中生打架处理办法是什么?
  7. ROS学习(八)launch启动文件的使用方法
  8. 用java画等腰三角形
  9. 同样是追星 ,为什么他们能这么做
  10. 零基础入门学习UI设计指南