unity sdk(android)-友盟推送SDK接入

article/2025/9/24 19:53:16

注意:一开始想接友盟Unity的SDk,但是导入后缺少各种jar,所以最后还是接了android的,demo文档齐全

官方文档:开发者中心

按照官方文档对接即可,

接入流程

1、项目中com.android.tools.build:gradle配置,如果版本号>=3.0.0,请使用如下配置脚本添加远程依赖:

//基础组件库依赖(必须) Push 6.2.0版本必须升级新版本Common SDK
implementation 'com.umeng.umsdk:common:9.3.0'
implementation 'com.umeng.umsdk:utdid:1.5.2'
implementation  'com.umeng.umsdk:asms:1.1.3'
implementation 'com.umeng.umsdk:crash:0.0.5'//友盟push相关依赖(必须)
implementation 'com.umeng.umsdk:push:6.2.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.9.7-open'
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'

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、【特别注意】添加aranger库的依赖。下载aranger-x.x.x.jar库拷贝到项目工程的libs目录并引用该库。

4、在AndroidManifest.xml文件中引入权限声明:

<!-- 以下为需要的基本权限,需要自行添加至您的AndroidManifest文件中 start--><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.BROADCAST_PACKAGE_ADDED" /><uses-permission android:name="android.permission.BROADCAST_PACKAGE_CHANGED" /><uses-permission android:name="android.permission.BROADCAST_PACKAGE_INSTALL" /><uses-permission android:name="android.permission.BROADCAST_PACKAGE_REPLACED" /><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><!-- 以下为需要的基本权限,需要自行添加至您的AndroidManifest文件中 end-->

在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-->

5、引入so文件:全平台so文件下载地址

注意下载的so文件要和sdk里面平台一致,缺少会导致deviceToken获取失败,最好从demo全部复制出来用, unity项目要加在 libs和jnilibs里面

基础接口引入

1、务必在工程的自定义Application类的 onCreate() 方法中做SDK代码初始化工作。

// 在此处调用基础组件包提供的初始化函数 相应信息可在应用管理 -> 应用信息 中找到 http://message.umeng.com/list/apps
// 参数一:当前上下文context;
// 参数二:应用申请的Appkey(需替换);
// 参数三:渠道名称;
// 参数四:设备类型,必须参数,传参数为UMConfigure.DEVICE_TYPE_PHONE则表示手机;传参数为UMConfigure.DEVICE_TYPE_BOX则表示盒子;默认为手机;
// 参数五:Push推送业务的secret 填充Umeng Message Secret对应信息(需替换)
UMConfigure.init(this, "替换为Appkey,服务后台位置:应用管理 -> 应用信息 -> Appkey", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "替换为秘钥信息,服务后台位置:应用管理 -> 应用信息 -> Umeng Message Secret");//例如:UMConfigure.init(this, "5fbb2b49690bda19c7877192", "toutiao", UMConfigure.DEVICE_TYPE_PHONE, "6a2abdbd2938c67e698e949cc9335e3e");

2、Push注册在UMConfigure.init方法之后注册,注册成功后可获取deviceToken,进行消息下发。调用代码如下所示:


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);}
});

混淆配置

在proguard-unity.txt添加如下混淆代码

-dontwarn com.umeng.**
-dontwarn com.taobao.**
-dontwarn anet.channel.**
-dontwarn anetwork.channel.**
-dontwarn org.android.**
-dontwarn org.apache.thrift.**
-dontwarn com.xiaomi.**
-dontwarn com.huawei.**
-dontwarn com.meizu.**-keepattributes *Annotation*-keep class com.taobao.** {*;}
-keep class org.android.** {*;}
-keep class anet.channel.** {*;}
-keep class com.umeng.** {*;}
-keep class com.xiaomi.** {*;}
-keep class com.huawei.** {*;}
-keep class com.meizu.** {*;}
-keep class org.apache.thrift.** {*;}-keep class com.alibaba.sdk.android.**{*;}
-keep class com.ut.**{*;}
-keep class com.ta.**{*;}-keep public class **.R$*{public static final int *;
}

注意事项:

1、Appkey一定得用对应包名生成出来的。

2、载的so文件要和sdk里面平台一致,缺少会导致deviceToken获取失败,最好从demo全部复制出来用, unity项目要加在 libs和jnilibs里面

3、无法获取到Device Token

P_10000

问法1:注册不成功,无法获取到device token,并且log中显示accs bindapp error

问法2:注册不成功,无法获取到device token,并且TNET_LOAD_SO_FAIL

解决方案:

1、检查appkey和secret key是否配置正确。

2、解压缩你的apk,看一下libs目录里的so文件夹,确保每个so文件夹里都有PushSDK的so文件。

3、PushSDK 3.x默认只提供armeabi和x86两种so文件夹,若主工程(除PushSDK外的Module均看做是主工程)中的so文件夹与PushSDK下的so文件夹不一致,则可以有两种方式处理(选择一种即可):

1) 删除主工程下多余的so文件夹,与PushSDK下的so文件夹保持一致。

2) 在官网PushSDK下载处,下载全平台so文件,添加缺少的so文件夹至 PushSDK下,使PushSDK的so文件夹与主工程的so文件夹保持一致。

下载链接:https://files.alicdn.com/tpsservice/7c94e1a0a2e35f6f27038c974ad9ffbf.zip


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

相关文章

友盟推送学习

一、首次使用U_Push 1、首先注册友盟账号&#xff0c;进入工作台&#xff0c;选择产品U_Push。 2、创建应用 3、在自己的项目中自动集成SDK 开发环境要求&#xff1a; Android Studio 3.0以上 Android minSdkVersion: 14 Cradle: 4.4以上 在根目录build.gradle中添加mav…

Android 学习之如何集成友盟推送

我是利用Android studio 新建一个空的Android项目。 步骤一 导入第三方库 1.切换Android项目状态为Project状态 2.在main文件下新建 jniLibs文件夹&#xff08;用来导入PushSDK项目下lib文件中的so文件&#xff09; 3.在libs文件夹下添加友盟PuskSDK中的 jar 文件&#xff…

用PaddlePaddle(飞浆)实现车牌识别

项目描述&#xff1a;本次实践是一个多分类任务&#xff0c;需要将照片中的每个字符分别进行识别&#xff0c;完成车牌的识别 实践平台&#xff1a;百度AI实训平台-AI Studio、PaddlePaddle1.8.0 动态图 数据集介绍&#xff08;自己去网上下载车牌识别数据集&#xff09; 数据…

深度学习(五) CNN卷积神经网络

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 CNN卷积神经网络 前言一、CNN是什么&#xff1f;二、为什么要使用CNN&#xff1f;三、CNN的结构1.图片的结构2.卷积层1.感受野&#xff08;Receptive Field&#xff09;2.卷积…

CNN网络实现手写数字(MNIST)识别 代码分析

CNN网络实现手写数字&#xff08;MNIST&#xff09;识别 代码分析(自学用) Github代码源文件 本文是学习了使用Pytorch框架的CNN网络实现手写数字&#xff08;MNIST&#xff09;识别 #导入需要的包 import numpy as np //第三方库&#xff0c;用于进行科学计算 import torc…

Android删除chartty证书,C/C++知识点之android应用安全分析

本文主要向大家介绍了C/C知识点之android应用安全分析&#xff0c;通过具体的内容向大家展示&#xff0c;希望对大家学习C/C知识点有所帮助。 应用名 &#xff1a;OKEx(OKEx-android.apk) 包名 &#xff1a;com.okinc.okex MD5 &#xff1a;1ffbd328d13e91b661592cdf58516bd2 版…

代码编写过程 - 正确率折线图

获取绘图函数 首先&#xff0c;看到需要画acc和loss图。先去参考现成的&#xff0c;于是打开猫12分类&#xff0c;找到生成折线图的地方。 发现框内的两个函数绘制了折线图。既然是作为函数出现&#xff0c;说明已经有一定的封装&#xff0c;考虑能不能把整个函数搬走用。 由…

李宏毅机器学习课程HW03代码解释

作业3任务是将图片进行分类 从官网上下载数据到data文件里面。此外&#xff0c;将代码分为三个模块&#xff0c;分别是dataset,model以及main。 一、dataset模块 此模块作用是读取图片数据。 重要函数&#xff1a;os.path.join(path,x) 将path和x路径组合在一起 #导入库…

接入友盟厂商push通道遇到的坑

目录 调试友盟Push问题的检查清单 客户端、服务端数据协议 客户端接入方式 小米厂商通道 华为厂商通道 魅族厂商通道 VIVO厂商通道 OPPO厂商通道 支持桌面角标的厂商 吐槽一下集成友盟厂商通道时发现的问题 调试友盟Push问题的检查清单 过滤UmengPushAgent开头的日志…

Android集成友盟消息推送SDK

消息推送SDK快速集成&#xff1a; 申请AppKey ——> 接入Push SDK ——> 基础接口引入 ——> 消息推送测试 ——> 接入完成 1.申请AppKey 2.接入Push SDK 1&#xff09;、加入依赖 //友盟push相关依赖(必须)implementationcom.umeng.umsdk:push:6.1.0impleme…

机器学习之手写决策树以及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;直到程序功能完成时…