本文将介绍如何通过 SDK 实现百宝箱与友盟+ Android 应用进行集成。
1. 环境及权限声明
请通过如下代码示例进行应用配置以及权限的声明。
<manifest ……> <uses-sdkandroid:minSdkVersion="8"></uses-sdk> <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permissionandroid:name="android.permission.INTERNET"/> <!-- 根据智能体实际功能声明以下权限,若智能体需要LBS位置,务必声明该权限 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <application ……>
其中,各配置说明如下。
配置项 | 必填 | 说明 |
minSdkVersion | 是 | 表示该应用可以在 Android 2.2 (API Level 8) 及以上版本的设备上运行。 |
ACCESS_NETWORK_STATE | 是 | 允许应用检查网络连接状态,常用于判断是否可以安全地进行网络请求。 |
ACCESS_WIFI_STATE | 是 | 允许应用获取当前 Wi-Fi 连接的信息,如 SSID、BSSID、信号强度等。通常用于需要识别当前连接的 Wi-Fi 网络的场景。 |
INTERNET | 是 | 允许应用访问互联网,进行网络通信(如 HTTP 请求、Socket 连接等)。 |
ACCESS_FINE_LOCATION | 否 | 允许应用通过 GPS、Wi-Fi、基站等方式获取精确位置(精度可达几米)。 |
ACCESS_COARSE_LOCATION | 否 | 允许应用通过 Wi-Fi 或移动网络获取大致位置(精度约几十到几百米) |
2. 混淆设置
如果您的应用使用了代码混淆,为避免友盟+ SDK被错误混淆导致 SDK 不可用问题,请参照以下命令进行混淆设置。
-keep class com.umeng.** { *; } -keepclassmembers class *{ public<init>(org.json.JSONObject); } -keepclassmembers enum *{ publicstatic**[] values(); publicstatic** valueOf(java.lang.String); }
若在处理 apk 的过程中出现 proguard 被删除的问题,可参照下述命令添加配置。
-keep publicclass [您的应用包名].R$*{ publicstaticfinalint*; }
3. 集成说明
3.1. 初始化 SDK
通过调用宿主应用的 application.onCreate函数来完成初始化。
/** * 注意: 即使您已经在AndroidManifest.xml中配置过appkey和channel值,也需要在App代码中调 * 用初始化接口(如需要使用AndroidManifest.xml中配置好的appkey和channel值, * UMConfigure.init调用中appkey和channel参数请置为null)。 */ UMConfigure.init(Context context,String appkey,String channel,int deviceType,String pushSecret); UMAgent.init(Context context, String appKey);
或者
/** * 注意:如果您已经在AndroidManifest.xml中配置过appkey和channel值,可以调用此版本初始化函数。 */ UMConfigure.init(Context context,int deviceType,String pushSecret); UMAgent.init(Context context, String appKey);
关于Channel 渠道的使用与命名规范如下:
- 使用规范:每台设备仅记录首次安装激活的渠道,在其他渠道再次安装不会重复计量。 所以在测试不同的渠道的时候,请使用不同的设备来分别测试,不要改变
UMENG_CHANNEL。 - 命名规范:
- 以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是不建议使用中文命名,会出现乱码。
- 首尾字符不可以为空格。
- 不要使用纯数字作为渠道ID。
- 最多256个字符。
- “unknown” 及其各种大小写形式,作为【友盟+】保留的字段,不可以作为渠道名。
3.2. (可选)预初始化 SDK
若无法保证 App 能够在 Appcalition.onCreate 函数中调用 UMConfigure.init 初始化函数,则必须在 Appcalition.onCreate 函数中调用下述命令进行预初始化。
说明:
- 对于有延迟初始化 SDK 需求的场景(不能在 Application.onCreate 函数中调用 UMConfigure.init 初始化函数),必须在 Application.onCreate 函数中调用 UMConfigure.preInit 预初始化函数(该函数 preInit 耗时极少,不会影响冷启动体验),而后 UMConfigure.init 函数可以按需延迟调用(可以放到后台线程中延时调用,可以延迟,但还是必须调用)。
- 如果您的 App 已经是在 Application.onCreate 函数中调用UMConfigure.init 进行初始化,则无需额外调用 UMConfigure.preInit 预初始化函数。
- 详细说明可参见:SDK 预初始化。
public static void preInit(Context context,String appkey,String channel) - appkey:指友盟侧 App 的唯一标识,获取方式可参见:创建友盟App并获取 AppKey。
3.3. 查看日志
可以通过调用如下方法控制 SDK 的运行,调试日志是否输出。 SDK 运行调试日志默认关闭,需要用户手动开启。
UMConfigure.setLogEnabled(true); UMAgent.setLogEnabled(true);
3.4. 查看集成效果
通过 UMAgent.startAgentActivity 方法打开本地智能体页面,需要传入 agentId。
UMAgent.startAgentActivity(Context context, String agentId) - agentId:指百宝箱智能体唯一标识,获取方式可参见:创建智能体并获取 TboxAgentID。
4. demo 工程
📎UAgent_Demo_Android-main-ab521c16a85345e68d99da16b8032bcd94b536eb.zip
工程运行效果
打开智能体效果
说明:工程运行时需要填入的参数如下。
- SDK初始化:填入友盟 appkey,获取方式可参见:创建友盟App并获取 AppKey。
- 打开智能体:填入百宝箱智能体 agentId,获取方式可参见:创建智能体并获取 TboxAgentID。