Android集成友盟消息推送SDK

article/2025/9/24 21:37:06

消息推送SDK快速集成:

申请AppKey ——> 接入Push SDK ——> 基础接口引入 ——> 消息推送测试 ——> 接入完成

1.申请AppKey
在这里插入图片描述
在这里插入图片描述
2.接入Push SDK

1)、加入依赖

//友盟push相关依赖(必须)implementation'com.umeng.umsdk:push:6.1.0'implementation'com.umeng.umsdk:alicloud-httpdns:1.2.5'implementation'com.umeng.umsdk:alicloud-utils:1.1.5'implementation'com.umeng.umsdk:alicloud_beacon:1.0.1'implementation'com.umeng.umsdk:agoo-accs:3.3.8.8-open-fix2'implementation'com.umeng.umsdk:agoo_networksdk:3.5.5'implementation'com.umeng.umsdk:agoo_tlog:3.0.0.17'implementation'com.umeng.umsdk:agoo_tnet4android:3.1.14.9'implementation'com.umeng.umsdk:asms:1.1.3'implementation'com.umeng.umsdk:crash:0.0.4'

2)、在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】sdk 新maven仓库地址

buildscript {repositories {google()jcenter()maven { url 'https://dl.bintray.com/umsdk/release' }}dependencies {classpath 'com.android.tools.build:gradle:3.1.4'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}}allprojects {repositories {google()jcenter()mavenCentral()maven { url 'https://dl.bintray.com/umsdk/release' }}}

3)、在AndroidManifest.xml文件中引入相关基础组件:

<!-- 以下为基本配置信息,需要自行添加至您的AndroidManifest文件中 start--><serviceandroid:name="com.taobao.accs.ChannelService"android:exported="true"android:process=":channel"><intent-filter><action android:name="com.taobao.accs.intent.action.SERVICE" /></intent-filter><intent-filter><action android:name="com.taobao.accs.intent.action.ELECTION" /></intent-filter></service><serviceandroid:name="com.taobao.accs.data.MsgDistributeService"android:exported="true"><intent-filter><action android:name="com.taobao.accs.intent.action.RECEIVE" /></intent-filter></service><receiverandroid:name="com.taobao.accs.EventReceiver"android:process=":channel"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter><intent-filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /></intent-filter><intent-filter><action android:name="android.intent.action.PACKAGE_REMOVED" /><data android:scheme="package" /></intent-filter><intent-filter><action android:name="android.intent.action.USER_PRESENT" /></intent-filter></receiver><receiverandroid:name="com.taobao.accs.ServiceReceiver"android:process=":channel"><intent-filter><action android:name="com.taobao.accs.intent.action.COMMAND" /></intent-filter><intent-filter><action android:name="com.taobao.accs.intent.action.START_FROM_AGOO" /></intent-filter></receiver><serviceandroid:name="com.taobao.accs.internal.AccsJobService"android:permission="android.permission.BIND_JOB_SERVICE"android:process=":channel"/><serviceandroid:name="com.taobao.accs.ChannelService$KernelService"android:process=":channel" /><serviceandroid:name="org.android.agoo.accs.AgooService"android:exported="true"><intent-filter><action android:name="com.taobao.accs.intent.action.RECEIVE" /></intent-filter></service><serviceandroid:name="com.umeng.message.UmengIntentService"android:exported="true"android:process=":channel"><intent-filter><action android:name="org.agoo.android.intent.action.RECEIVE" /></intent-filter></service><serviceandroid:name="com.umeng.message.XiaomiIntentService"android:exported="true"android:process=":channel"><intent-filter><action android:name="org.agoo.android.intent.action.RECEIVE" /></intent-filter></service><receiverandroid:name="com.taobao.agoo.AgooCommondReceiver"android:exported="true"android:process=":channel"><intent-filter><action android:name="${applicationId}.intent.action.COMMAND" /></intent-filter><intent-filter><action android:name="android.intent.action.PACKAGE_REMOVED" /><data android:scheme="package" /></intent-filter></receiver><serviceandroid:name="com.umeng.message.UmengMessageIntentReceiverService"android:exported="true"android:process=":channel"><intent-filter><action android:name="org.android.agoo.client.MessageReceiverService" /></intent-filter></service><receiverandroid:name="com.umeng.message.NotificationProxyBroadcastReceiver"android:exported="false" /><serviceandroid:name="com.umeng.message.UmengMessageCallbackHandlerService"android:permission="android.permission.BIND_JOB_SERVICE"android:exported="false"><intent-filter><action android:name="com.umeng.messge.registercallback.action" /></intent-filter><intent-filter><action android:name="com.umeng.message.enablecallback.action" /></intent-filter><intent-filter><action android:name="com.umeng.message.disablecallback.action" /></intent-filter><intent-filter><action android:name="com.umeng.message.message.handler.action" /></intent-filter><intent-filter><action android:name="com.umeng.message.message.sendmessage.action" /></intent-filter></service><serviceandroid:name="com.umeng.message.UmengDownloadResourceService"android:permission="android.permission.BIND_JOB_SERVICE"android:exported="false" /><providerandroid:name="com.umeng.message.provider.MessageProvider"android:authorities="${applicationId}.umeng.message"android:exported="false"><grant-uri-permission android:pathPattern=".*" /></provider><!-- 以下为基本配置信息,需要自行添加至您的AndroidManifest文件中 end-->

4)、引入so文件 (全平台so文件下载地址)
注意:这边下载的so文件可能会少,最好分方法就是直接吧友盟demo中libs的文件全粘进去(开发者Demo)

5)、’引入默认通知栏通知样式布局文件(开发者Demo)

upush_bar_image_notification.xml
upush_notification.xml

3.基础接口引入

1).在工程的MyApplication类的 onCreate() 方法中做SDK代码初始化工作。
UMConfigure.init(this, “替换为Appkey,服务后台位置:应用管理 -> 应用信息 -> Appkey”, “Umeng”, UMConfigure.DEVICE_TYPE_PHONE, “替换为秘钥信息,服务后台位置:应用管理 -> 应用信息 -> Umeng Message Secret”);

//获取消息推送代理示例PushAgent mPushAgent = PushAgent.getInstance(this);//注册推送服务,每次调用register方法都会回调该接口mPushAgent.register(new IUmengRegisterCallback() {@Overridepublic void onSuccess(String deviceToken) {//注册成功会返回deviceToken deviceToken是推送消息的唯一标志Log.i(TAG,"注册成功:deviceToken:-------->  " + deviceToken);}@Overridepublic void onFailure(String s, String s1) {Log.e(TAG,"注册失败:-------->  " + "s:" + s + ",s1:" + s1);}});

在这里插入图片描述
deviceToken是【友盟+】消息推送生成的用于标识设备的id,长度为44位,不能定制和修改。同一台设备上不同应用对应的deviceToken不一样。获取deviceToken的值后,可进行消息推送测试!

2).应用数据统计接口
在所有的Activity 的onCreate 方法或在应用的BaseActivity的onCreate方法中添加:

PushAgent.getInstance(context).onAppStart();

注:该方法是【友盟+】Push后台进行日活统计及多维度推送的必调用方法,请务必调用!

4.消息推送测试

顺利获取deviceToken!我们马上可以向这台设备推送消息了~

添加测试设备:
在【友盟+】消息推送服务Push后台的“测试模式”中填写获取到的deviceToken,将该设备添加为测试设备:

在这里插入图片描述
在这里插入图片描述
在测试消息中新建消息,详细过程如下所示,详细过程如下所示:

在这里插入图片描述
5.接入完成

此时在您的测试手机上可以看到您刚才的推送消息!
在这里插入图片描述


http://chatgpt.dhexx.cn/article/Q4ptHtbk.shtml

相关文章

机器学习之手写决策树以及sklearn中的决策树及其可视化

文章目录 决策树理论部分基本算法划分选择信息熵 信息增益信息增益率基尼系数基尼指数 决策树代码实现参考 决策树理论部分 决策树的思路很简单&#xff0c;就是从数据集中挑选一个特征&#xff0c;然后进行分类。 基本算法 从伪代码中可以看出&#xff0c;分三种情况考虑&…

android使用友盟推送注册失败获取不到token accs bindapp error!

使用友盟推送注册失败获取不到token public void onFailure(String s, String s1)的值分别是“-9”和“accs bindapp error!”或者s的值为-11.都是同一个问题 就是主工程&#xff08;除友盟PushSDK 其他的module均看成为主工程&#xff09;so目录与PushSDK下的so目录不一致…

同时集成阿里云旺与友盟推送,初始化失败s:-11,s1:accs bindapp error!的解决办法

在应用中需要同时集成聊天和推送功能&#xff0c;聊天选用阿里的sdk&#xff08;百川云旺&#xff09;&#xff0c;推送选用友盟的pushSDK。 这时候悲剧就出现了&#xff0c;注册友盟的时候报错。 I/com.umeng.message.PushAgent: register-->onFailure-->s:-11,s1:accs …

关于友盟s=-11;s1=accs bindapp error!的解决处理

项目使用了友盟推送之后&#xff0c;在部分手机上出现accs bindapp error&#xff0c;错误码-11的问题&#xff0c;为什么会出现这个问题呢&#xff0c;网上查找了很久&#xff0c;友盟给出的解释是so文件不正确。 具体链接&#xff1a;http://bbs.umeng.com/thread-23018-1-1…

友盟register failed: -11 accs bindapp error!

下载官方Demo后,替换自己的id包名后出现 register failed: -11 accs bindapp error! 经过一番搜索之后,都是说这二种原因 1、检查appkey和secret key是否配置正确&#xff0c;如果正确无误&#xff0c;请看步骤2。2、so文件配置有误&#xff0c;需重新配置&#xff1a; Pus…

阿里无线11.11 | 手机淘宝移动端接入网关基础架构演进之路

移动网络优化是超级App永恒的话题&#xff0c;对于无线电商来说更为重要&#xff0c;网络请求体验跟用户的购买行为息息相关&#xff0c;手机淘宝从过去的HTTP API网关&#xff0c;到2014年升级支持SPDY&#xff0c;2015年双十一自研高性能、全双工、安全的ACCS&#xff08;阿里…

VS2015 realease模式下调试

一、将项目属性设置为Release&#xff0c;生成--->配置管理器&#xff1a; 二、按AltF7&#xff0c;弹出属性页进行设置&#xff1a;

AndroidStudio如何打包生成realease版本的arr包,并上传到Nexus搭建的maven仓库,供项目远程依赖(二)

AndroidStudio如何打包生成realease版本的arr包&#xff0c;并上传到Nexus搭建的maven仓库&#xff0c;供项目远程依赖&#xff08;二&#xff09; AndroidStudio如何打包生成realease版本的arr包&#xff0c;并上传到Nexus搭建的maven仓库&#xff0c;供项目远程依赖&#xff…

AndroidStudio如何打包生成realease版本的arr包,并上传到Nexus搭建的maven仓库,供项目远程依赖(一)

AndroidStudio如何打包生成realease版本的arr包&#xff0c;并上传到Nexus搭建的maven仓库&#xff0c;供项目远程依赖&#xff08;一&#xff09; 背景: 公司之前在eclipse上做开发&#xff0c;写了很多library库供项目依赖使用&#xff0c;现在转AS上了&#xff0c;并用Nexu…

QT debug 功能正常 realease和windeplayqt工具打包部分功能无法使用或者不正常

目录 说明开发环境错误说明结论 说明 在项目的开发中&#xff0c;一般程序员都是使用debug版本进行程序的编写和调试&#xff0c;习惯好一些的程序员可能会天天用realease跑一遍自己写的程序是否正常&#xff0c;但是很多程序员可能都不会这么做&#xff0c;直到程序功能完成时…

Python OpenCV10:OpenCV 视频基本操作

1. 读视频 1.1 获取视频对象 要在 OpenCV 中获取视频&#xff0c;需要创建一个 VideoCapture 对象并指定要读取的视频文件。 cv.VideoCapture(filepath) 参数&#xff1a; filepath 视频文件路径 返回值&#xff1a; cap 读取视频的对象 1.2 获取视频属性 cap.get(propId) 获…

Renderers

渲染器 (Renderers) 在将 TemplateResponse 实例返回给客户端之前&#xff0c;必须渲染它。渲染过程采用模板和上下文的中间表示&#xff0c;并将其转换为可以提供给客户端的最终字节流。—— Django 文档 REST framework 包含许多内置的渲染器 (Renderer) 类&#xff0c;允许…

python调用opencv实现视频读写

文章目录 一、从文件中读取视频并播放1.1 基本API讲解1.2 python实现 二、保存视频2.1 基本API讲解2.1 python实现范例 一、从文件中读取视频并播放 1.1 基本API讲解 在OpenCV中我们要获取一个视频&#xff0c;需要创建一个VideoCapture对象&#xff0c;指定你要读取的视频文…

记一次有趣的debug,VS编译器上Debug和Realease的差异

之前自己写过一个imageread的函数&#xff0c;用了好久一直没问题。最近两天&#xff0c;同事让我realease一个项目给他&#xff0c;其中就包含了我自己写的imageread函数。 我的函数就长这样&#xff0c;不包含公司的code&#xff0c;不算泄密哈。 在realse之前&#xff0c;我…

C++语言基础篇

✅作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域新星创作者&#xff0c;阿里云专家博主&#xff0c;华为云云享专家博主&#xff0c;掘金后端评审团成员 &#x1f495;前言&#xff1a; 学长出的这一系列专栏适合有⼀点 C 基础&#xff0c…

PCL12.1 Realease 附加依赖项

PCL12.1 Realease 附加依赖项 libboost_atomic-vc142-mt-g-x64-1_78.lib libboost_bzip2-vc142-mt-g-x64-1_78.lib libboost_chrono-vc142-mt-g-x64-1_78.lib libboost_container-vc142-mt-g-x64-1_78.lib libboost_context-vc142-mt-g-x64-1_78.lib libboost_contract-vc142-…

Vue强制刷新页面重新加载数据方法

业务场景 在管理后台执行完增删改查的操作之后&#xff0c;需要重新加载页面刷新数据以便页面数据的更新 实现原理 就是通过控制router-view 的显示与隐藏&#xff0c;来重渲染路由区域&#xff0c;重而达到页面刷新的效果&#xff0c;show -> flase -> show 具体代码…

Linux 重新加载 nginx 配置命令

1. 查找 nginx 位置 whereis nginx2. 进入 nginx 目录 cd /usr/local/nginx/sbin3. 检查 nginx 配置文件是否正确 ./nginx -t 4. 重新加载配置文件 ./nginx -s reload

IDEA 无法重新加载Maven项目

IDEA 无法重新加载Maven项目 如图&#xff1a; 真头疼&#xff0c;搞了半小时才搞明白&#xff0c;我的Maven版本是3.8.6&#xff0c;而idea版本是2020&#xff0c;用不了这么新版的maven。 解决方案 maven版本高于idea版本&#xff0c;去查找低于idea版本日期的maven或者直…

Unity架构之详解域重新加载和场景重新加载

一、unity进入运行模式包括以下主要阶段 备份当前场景&#xff1a;这仅在场景被修改后发生。这样当退出运行模式时&#xff0c;Unity 将场景恢复为运行模式开始前的状态。Domain Reload&#xff1a;通过重新加载脚本域来重置脚本状态。Scene Reload&#xff1a;通过重新加载场…