开发笔记-Android消息推送骚操作:亚马逊-SNS对接FCM和百度云推送
写在前面:
之前使用阿里云的服务器用阿里消息推送好好的,然后因为国外业务需要使用亚马逊服务器,阿里云推送也不能用,用亚马逊的 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和百度云推送相关推荐
- 特斯拉Model3车主称无法开启;传高通开发首款笔记本处理器;Dfinity挑战亚马逊 | 雷锋早报...
特斯拉网络出现宕机,Model3车主无法开启 据Electrek报道,有车主反映,特斯拉汽车互联网网络瘫痪,从美东时间下午3点半开始无法连接.目前故障原因尚不明确. 早在2016年,特斯拉就发生过类似 ...
- 微软被曝泄露2.4TB客户敏感数据;亚马逊因滥用算法面临集体诉讼;推特否认马斯克将裁员75%的传闻 | 每日大事件...
数据智能产业创新服务媒体 --聚焦数智 · 改变商业 01.微软被曝泄露2.4TB客户敏感数据 10月21日消息,据外媒报道,网络安全供应商 SOCRadar 最近向微软通报了一次重大数据泄露事件,声 ...
- 2019如何操作亚马逊无货源店群?如何开店运营?
"工欲善其事必先利其器",想要做好亚马逊无货源店群,首先我们需要知道什么是亚马逊无货源,它是怎样的一种运营模式?开店之前我们又应该准备些什么? 亚马逊无货源模式并不是说没有货源,它 ...
- Python学习笔记:通过Headers字段模拟浏览器访问亚马逊界面爬取
学习笔记:哔哩哔哩 Python 爬虫视频教程全集(62P)| 6 小时从入门到精通 0. 学习视频地址 https://www.bilibili.com/video/BV1pt41137qK?p=1 ...
- 【TG-02系列模组①】二次开发环境搭建,快速接入天猫精灵/亚马逊云
文章目录 前言 一.Linux开发环境搭建 1.1 获取SDK 1.2 安装 YocTools 1.3 编译SDK 1.4 烧录 二.接入天猫精灵 2.1 生成三元组 2.2 烧录三元组 三.接入亚马 ...
- Jungle Scout发布亚马逊卖家引流神器,助推新品上首页
站外引流一直是亚马逊卖家关注的重点,尤其对于刚推出的新品,如何快速提升销售速率?Jungle Scout CEO 兼创始人 Greg 建议这么做: 一.直接提升 6种可以帮助卖家去做产品促销的方式,包 ...
- Android 高仿微信实时聊天 基于百度云推送
一直在仿微信界面,今天终于有幸利用百度云推送仿一仿微信聊天了~~~ 首先特别感谢:weidi1989分享的Android之基于百度云推送IM ,大家可以直接下载:省了很多事哈,本例中也使用了weidi ...
- 亚马逊Appstore不兼容Android 12,历时近两个月仍未解决
谷歌于10月份推出了Android 12更新,截至目前,以Google Pixel系列为主的设备陆续升级到了Android 12系统.然而,有用户报告称亚马逊Appstore与Android 12并不 ...
- 大数据早报:路桥率先利用“人脸识别”技术监管医保 亚马逊与微软联合开发人工智能,打造服务大众的AI(10.19)
数据早知道,上乐投网看早报! 『数据安全』微软内部Windows漏洞数据库曾被入侵:后果可怕 作为这个星球上覆盖率最高的操作系统,Windows的一举一动都影响着大家的使用体验,对于它的安全微软也是相 ...
最新文章
- java 对象 jvm生命_JVM对象的生命周期
- Python正则表达式尽可能小的匹配(遇到第一个结束字符串就停止匹配)
- uva 1623——Enter The Dragon
- 在java中jvm目录_JVM具体在哪个文件夹下的
- canvas绘图数学知识总结
- Linux的软链接和硬链接
- 渗透之——Metasploit自定义FTP扫描模块
- LE Coded PHY和LE Uncoded PHY
- java es1.8_elasticsearch 启动时指定jdk版本
- 优秀的免版权图库软件推荐,软件内图片均可免费商用。
- 结构化、半结构化和非结构化数据
- 豪杰、君子、庸人、韭菜
- 使用git push没有报错,但是远程仓库没有更新的问题
- app式成语_app式的词语,app的成语都有什么?
- 网站服务器垃圾清理,服务器安全狗垃圾清理功能操作教程
- Go语言核心之美 3.2-slice切片
- 2018科大讯飞Java笔试第三道编程题
- Feature系列-GIST
- Error in DESeqDataSet(se, design = design, ignoreRank) : some values in assay are negative
- PDF文件太大怎么压缩,方法其实很简单