RN接入友盟第三方SDK记录

接入流程

Android端

  1. 友盟官方

  2. 以个人或者公司名义申请友盟官方的账号,且根据项目的需求注册应用。接下来主要讲解接入的主要步骤:
    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
    
  3. 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端

  1. 将已下载的友盟SDK添加到项目
  2. 添加需要的组件桥接文件
  3. 添加友盟初始化配置文件
  4. 在 Appdelegate.m 中设置初始化代码

#import "RNUMConfigure.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  [UMConfigure setLogEnabled:YES];
  [RNUMConfigure initWithAppkey:@"599d6d81c62dca07c5001db6" channel:@"App Store"];
  ...
}

接口说明

Android端

  1. 初始化: 找到MainActivity的生命周期,添加如下代码:
  @Override
    public void onResume() {
        super.onResume();
        MobclickAgent.onResume(this);
    }
    @Override
    protected void onPause() {
        super.onPause();
        MobclickAgent.onPause(this);
    }
  1. 并在onCreat中设置统计的场景,以及发送间隔:

MobclickAgent.setSessionContinueMillis(1000*40);
// 上述时间配置可根据公司后台的服务器承载的压力自行设置;
// 具体和后台的进行沟通

iOS端

  1. 初始化:在工程的 AppDelegate.m 文件中引入相关组件头文件 ,且在 application:didFinishLaunchingWithOptions: 方法中添加如下代码:
[MobClick setScenarioType:E_UM_NORMAL];
  1. 如果需要引入多个场景:
[MobClick setScenarioType:E_UM_E_UM_GAME|E_UM_DPLUS];
  1. js部分首先需要引入AnalyticsUtil文件:
import AnalyticsUtil from './AnalyticsUtil'
  1. 接口的说明:
    手动页面统计接口:

     AnalyticsUtil.onPageStart(pageName);
     pageName 页面名称
     AnalyticsUtil.onPageEnd(pageName);
     pageName 页面名称
    

账号统计的接口:

	AnalyticsUtil.profileSignInWithPUID(puid);
	puid 用户账号ID.长度小于64字节
	AnalyticsUtil.profileSignInWithPUIDWithProvider(provider,puid);
	provider: 账号来源。 puid: 用户账号ID。长度小于64字节.
	AnalyticsUtil.profileSignOff();
	账号登出时需调用此接口,调用之后不再发送账号相关内容

自动集成

  1. 新 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'
 	 } 
  }
}
  1. 集成组件化各业务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
  1. 通用初始化统一对各个业务进行初始化接口

     接口:
     /***
      注意: 即使您已经在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);
  1. 统计SDK基础统计指标自动采集

     //选择AUTO页面采集模式,统计SDK基础指标无需手动埋点可自动采集。
     //建议在宿主App的Application.onCreate函数中调用此函数。	
     MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
    

至此 所有的集成已完成下面贴上图片 可以查看各项数据

数据的采集

总结

  1. 在集成SDK的过程中还是有许多的坑需要自己去踩,注意官方的RNDemo是有错误的。在自己接入的过程中接入成功之后,发现没有反应,之后就是自己手动的集成。
  2. 在手动集成完毕后 测试的自动集成 都是完成的。
  3. 还有主要的一点是从RN跨平台的角度出发 :虽然说RN官方易于组件化的组件进行了大量封装,但是在各种复杂的业务场景中,变化多端。还是需要自己进行封装适合自己业务端的组件。
  4. 在做RN开发久了,还是要适当的懂得Android端的开发,即(Java语言)。再遇到棘手的模块开发的如RN组件满足不了的时,可能就需要自己写出原生模块,通过Java写出模块后,进行桥接,需要的注意的还是桥接文件原生模块和RN之间的通信,自己刚接触原生模块和RN进行桥接时也是遇到非常多的坑,首先自己要懂得Java安卓开发。
  5. 下次分享原生模块和RN的桥接。记录自己之前桥接过程遇到的坑。

谢谢大家的阅读 ~~~~~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值