本记录适用于 react-native 0.60 以上的版本,以下的可能会存在差异,请根据具体情况而定。我集成的时候 react-native 的版本是 0.63
之所以写这篇,是因为友盟的react-native的教程已经很老了。打开友盟的官网友盟官网。
首先集成android端。打开android的集成网址:android集成。
选择自动集成,手动就不考虑了,如果需要可以留言。
android集成之maven自动集成(推荐)
通过在Android Studio工程build.gradle配置脚本中添加maven线上依赖,导入最新版本组件化统计SDK。
maven依赖配置
- 在工程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' }
}
}
- 在工程App 对应build.gradle配置脚本dependencies段中添加统计SDK库和其它库依赖:
// 下面各SDK根据宿主App是否使用相关业务按需引入。
// OAID目前为目前国内市场主流的Android Q设备标识,可根据需要选择。
// 友盟统计SDK
implementation 'com.umeng.umsdk:common:9.x.x' // (必选)版本号
implementation 'com.umeng.umsdk:game:9.x.x+G' // 游戏统计SDK依赖(可选)
implementation 'com.umeng.umsdk:asms:1.1.3' // asms包依赖(必选)
implementation 'com.umeng.umsdk:crash:0.0.x' // native crash包依赖(必选)
implementation 'com.umeng.umsdk:oaid_lenovo:1.0.0' // (可选)
implementation 'com.umeng.umsdk:oaid_mi:1.0.0' // (可选)
implementation 'com.umeng.umsdk:oaid_oppo:1.0.4' // (可选)
implementation 'com.umeng.umsdk:oaid_vivo:1.0.0.1' // (可选)
特别注意下面这句话:
在Android Studio 3.1及以上版本开发环境下,指定引用最新版本依赖写法”latest.integration”可能导致下载库超时,此时需要指定具体版本号。
注意:OAID目前为目前国内市场主流的Android Q设备标识。目前主流厂商(华为、oppo、vivo、联想、小米)均已在新版本系统中支持该标识的获取,具有权威性。您可根据需求选择接入(华为已默认接入无需额外添加jar包)。
特别提醒:如您不在U-App的集成中加入OAID库,可能会导致U-App面向Android Q系统的新增、启动、活跃、留存等指标减少,因此,建议您接入OAID库。
- 打开react-native的SDK下载
不要管上面的两项。里面的版本都很低,所以我们只需要打开
ReactNative文件夹。把下面的 android 部分拷贝出来,然后打开你的项目,放在
你的项目>android>app>src>main>java下的一个位置,比如你可以单独新建一个包来放上面的文件,如:你的项目>android>app>src>main>java>com>um,也可以跟你的MainActivity.java一块,复制进去以后注意包名,我看到的教程一般不会说明这个,因为对于原生 android 开发来说,这的确没有必要说,但由于这个是面向 react-native 的,有一些小伙伴都不会 android ,甚至连 java 都不会,所以我觉得写跟 react-native 相关的教程,即便是原生一些很平常的事情,能说清楚的情况都要说清楚。
如果复制进来的文件有引入报错的,把上面的删除掉,利用 android studio 自动引入的方法,自动引入。这里说明主要是下面的ios报错。
记住刚才位置,比如你是你的项目>android>app>src>main>java>com>um这个。
- 打开
MainApplication.java文件,在 onCreate 函数中添加下面代码:
RNUMConfigure.init(this, "你的appkey", "渠道名,默认是:Umeng", UMConfigure.DEVICE_TYPE_PHONE,"如果集成了推送,填写推送中提供的secret,否则为空");
还有下面的代码:
打开
MainActivity.java文件,添加如下代码:
@Override
protected void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
这个代码是 android 里面的生命周期函数。
这样就完成 android 的配置了。
ios 集成之 pod 集成
- 打开 Podfile 文件,在里面添加下面代码:
pod 'UMCCommon'
pod 'UMCCommonLog' # 这个是代表日志的,可以不要
然后进入到 ios 文件夹下执行:pod install完成就代表库已经弄好了。
- 同样将上面的文件复制出来:
复制出来以后,添加到项目中,可以添加到跟自己 main.m 所在的目录下,同样也可以多一些路径。
打开UMAnalyticsModule.m文件,里面会报一个错误,错误说的是:
我指向的那句引入的不对,不要担心,也不怀疑是不是还差包没有完成,其实目前的统计被全部集成到共同的库中了。只是这个文件很老了,引入的不对,应该是:
#import <UMCommon/MobClick.h>,这样就可以了。
- 打开文件
AppDelegate.m文件。根据我的测试和询问,发现了下面的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions这个函数,将下面的函数添加进去.
RNUMConfigure initWithAppkey:@"你的iosapi" channel:@"这是默认中:App Store"];
下面就是js端的接口编写
可以从刚才下载的文件中看到有一个 js 这就是官方的,只不过官方这个是不可靠的,因为 android 和 ios 有一些接口的名称是不相同的。
从这个图我们可知,这个js文件根本就没有对原生暴露的接口进行整理,所以我们在使用的时候需要去看原生暴露的接口才能知道,为了方便可以自己在这里把所有的接口写进来,不使用官网提供的这个 js 文件。至于这个文件怎么使用,跟自己编写的其他组件一样,没有什么特别的。
以后我会记录更多工作的经历,若有不对,望大神补充,如有不明白请留言。