接入流程
Android端
-
以个人或者公司名义申请友盟官方的账号,且根据项目的需求注册应用。接下来主要讲解接入的主要步骤:
1. 第三方SDK的集成主要分为手动集成和自动集成,各有利弊。
2. 先来说手动集成下载各种接入平台的SDK 按照需求自行下载。
3. 工程配置:注意:集成基础组件库 2.0.0以下及统计SDK 8.0.0以下版本的用户,请参考release1.0.0分支中样例代码集成。首先需要说明,React Native下载的只是桥接文件,不含最新版本的jar,对应组件的jar请去下载中心下载。如果对于文档仍有疑问的,请参照我们在github上的Demo,我们Demo需要依赖工具:需下载node以及npm node 版本须10.19.0及以上。 node --version v10.19.0 npm --version 6.13.4
-
SDK下载完成之后,在Android项目下 --> APP–>新建libs文件夹,将下载好的jar包放在里面,在APP /src/main/java/com/包名下面,新建一个文件夹 。将下载完成的桥接文件,放到里面(注:iOS端相同步骤),打开mainApplication文件 :导入DplusReactPackage这个包,
注意:包名的路径此处如有不懂的,询问你们后台Java同事。
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new DplusReactPackage()
);
}
};
并且在 **onCreate()**的方法中进行初始化话:
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
RNUMConfigure.init(this, "59892f08310c9307b60023d0", "Umeng", UMConfigure.DEVICE_TYPE_PHONE,
"669c30a9584623e70e8cd01b0381dcb4");
}
RNUMConfture.init接口一共五个参数,其中第一个参数为Context,第二个参数为友盟Appkey,第三个参数为channel,第四个参数为应用类型(手机或平板),第五个参数为push的secret(如果没有使用push,可以为空)。
iOS端
- 将已下载的友盟SDK添加到项目
- 添加需要的组件桥接文件
- 添加友盟初始化配置文件
- 在 Appdelegate.m 中设置初始化代码
#import "RNUMConfigure.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[UMConfigure setLogEnabled:YES];
[RNUMConfigure initWithAppkey:@"599d6d81c62dca07c5001db6" channel:@"App Store"];
...
}
接口说明
Android端
- 初始化: 找到MainActivity的生命周期,添加如下代码:
@Override
public void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
- 并在onCreat中设置统计的场景,以及发送间隔:
MobclickAgent.setSessionContinueMillis(1000*40);
// 上述时间配置可根据公司后台的服务器承载的压力自行设置;
// 具体和后台的进行沟通
iOS端
- 初始化:在工程的 AppDelegate.m 文件中引入相关组件头文件 ,且在 application:didFinishLaunchingWithOptions: 方法中添加如下代码:
[MobClick setScenarioType:E_UM_NORMAL];
- 如果需要引入多个场景:
[MobClick setScenarioType:E_UM_E_UM_GAME|E_UM_DPLUS];
- js部分首先需要引入AnalyticsUtil文件:
import AnalyticsUtil from './AnalyticsUtil'
-
接口的说明:
手动页面统计接口:AnalyticsUtil.onPageStart(pageName); pageName 页面名称 AnalyticsUtil.onPageEnd(pageName); pageName 页面名称
账号统计的接口:
AnalyticsUtil.profileSignInWithPUID(puid);
puid 用户账号ID.长度小于64字节
AnalyticsUtil.profileSignInWithPUIDWithProvider(provider,puid);
provider: 账号来源。 puid: 用户账号ID。长度小于64字节.
AnalyticsUtil.profileSignOff();
账号登出时需调用此接口,调用之后不再发送账号相关内容
自动集成
- 新 APP 推荐使用 maven 线上接入 SDK;
在工程 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.4.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files }
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://dl.bintray.com/umsdk/release'
}
}
}
-
集成组件化各业务SDK
maven可灵活配置所需SDK: 在工程App对应build.gradle配置脚本dependencies段中 添加基础组件库和统计SDK库依赖
// 友盟基础组件库(所有友盟业务SDK都依赖基础组件库)
implementation "com.umeng.umsdk:common:9.3.6" (必选)
implementation "com.umeng.umsdk:asms:1.2.0" // asms包依赖(必选)
// 下面各SDK根据宿主App是否使用相关业务按需引入。
implementation "com.umeng.umsdk:abtest:1.0.0" // ABTest功能依赖(可选)
implementation "com.umeng.umsdk:apm:1.1.1" // 应用性能监控SDK依赖(可选)
implementation "com.umeng.umsdk:game:9.2.0+G" // 游戏统计SDK依赖(可选)
应用性能监控SDK依赖坐标库
基础组件(必选) com.umeng.umsdk:common:x.x.x
asms包依赖 com.umeng.umsdk:asms:x.x.x
应用性能监控包(必选) com.umeng.umsdk:apm:x.x.x
游戏统计SDK依赖(可选) com.umeng.umsdk:game:x.x.x
友盟分享SDK核心库
友盟分享SDK核心库(使用U-Share必选) com.umeng.umsdk:share-core:x.x.x
友盟分享面板核心库(使用U-Share必选) com.umeng.umsdk:share-board:x.x.x
支持gradle在线依赖的友盟分享模块
QQ分享模块 com.umeng.umsdk:share-qq:x.x.x
微信分享模块 com.umeng.umsdk:share-wx:x.x.x
新浪微博分享模块 com.umeng.umsdk:share-sina:x.x.x
支付宝分享模块 com.umeng.umsdk:share-alipay:x.x.x
钉钉分享模块 com.umeng.umsdk:share-dingding:x.x.x
友盟推送SDK依赖坐标
PushSDK核心库 com.umeng.umsdk:push:x.x.x
PushSDK必须依赖utdid库,所以需要加入对应依赖 com.umeng.umsdk:utdid:x.x.x
httpdns支持库,必须添加 com.umeng.umsdk:alicloud-httpdns:x.x.x
httpdns支持库,必须添加 com.umeng.umsdk:alicloud-utils:x.x.x
httpdns支持库,必须添加 com.umeng.umsdk:alicloud_beacon:x.x.x
消息推送核心库,必须添加 com.umeng.umsdk:agoo-accs:3.3.8.8-open-fix2
消息推送网络核心库,必须添加 com.umeng.umsdk:agoo_networksdk:3.5.5
消息推送日志核心库,必须添加 com.umeng.umsdk:agoo_tlog:3.0.0.17
消息推送网络核心库,必须添加 com.umeng.umsdk:agoo_tnet4android:3.1.14.9
厂商推送依赖坐标(单一厂商通道下相关组件必须全部集成,例:小米通道集成2个组件)
小米-push com.umeng.umsdk:xiaomi-push:3.7.0
小米-umengaccs com.umeng.umsdk:xiaomi-umengaccs:1.1.4
华为-basetb com.umeng.umsdk:huawei-basetb:2.6.3.306
华为-pushtb com.umeng.umsdk:huawei-pushtb:2.6.3.306
华为-umengaccs com.umeng.umsdk:huawei-umengaccs:1.2.4
OPPO-push com.umeng.umsdk:oppo-push:2.0.2
OPPO-umengaccs com.umeng.umsdk:oppo-umengaccs:1.0.6
vivo-push com.umeng.umsdk:vivo-push:2.3.5
vivo-umengaccs com.umeng.umsdk:vivo-umengaccs:1.1.0
-
通用初始化统一对各个业务进行初始化接口
接口: /*** 注意: 即使您已经在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);
-
统计SDK基础统计指标自动采集
//选择AUTO页面采集模式,统计SDK基础指标无需手动埋点可自动采集。 //建议在宿主App的Application.onCreate函数中调用此函数。 MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
至此 所有的集成已完成下面贴上图片 可以查看各项数据
总结
- 在集成SDK的过程中还是有许多的坑需要自己去踩,注意官方的RNDemo是有错误的。在自己接入的过程中接入成功之后,发现没有反应,之后就是自己手动的集成。
- 在手动集成完毕后 测试的自动集成 都是完成的。
- 还有主要的一点是从RN跨平台的角度出发 :虽然说RN官方易于组件化的组件进行了大量封装,但是在各种复杂的业务场景中,变化多端。还是需要自己进行封装适合自己业务端的组件。
- 在做RN开发久了,还是要适当的懂得Android端的开发,即(Java语言)。再遇到棘手的模块开发的如RN组件满足不了的时,可能就需要自己写出原生模块,通过Java写出模块后,进行桥接,需要的注意的还是桥接文件原生模块和RN之间的通信,自己刚接触原生模块和RN进行桥接时也是遇到非常多的坑,首先自己要懂得Java安卓开发。
- 下次分享原生模块和RN的桥接。记录自己之前桥接过程遇到的坑。