EMAS React-Native页面性能监控底层依赖的仍然是Native(iOS/Android)端的SDK,所以React-Native相关的SDK安装完毕后,还需要在Native(iOS/Android)端接入相应的Native SDK。
准备工作
接入SDK前,请确保在阿里云移动研发平台(EMAS)上创建相关产品,并获得相应的配置文件(包含appKey, appSecret, rsaPublicKey)等关键配置信息。
iOS SDK接入
本文档适用于使用cocoaPods管理依赖的Xcode项目,适用于iOS 8.0及以上版本的App编辑react-native项目iOS目录下的Podfile文件。
指定官方仓库和阿里云仓库。
在
Podfile
中指定source。source "https://github.com/CocoaPods/Specs.git" source "https://github.com/aliyun/aliyun-specs.git"
添加SDK。
pod 'AlicloudTLog', '~> 1.0.0'
添加完SDK后执行如下命令:
pod install
下载配置文件。
在EMAS平台上下载App对应的配置文件-
AliyunEmasServices-Info.plist
。说明已经完成准备工作,即已经在EMAS平台上创建相关产品。
将配置文件放到iOS的工程目录内, 如图所示:
初始化SDK。
打开
AppDelegate.m
,对SDK进行初始化:引入头文件:
#import <AlicloudTLog/AlicloudTlogProvider.h> #import <AlicloudHAUtil/AlicloudHAProvider.h>
在didFinishLaunchingWithOptions方法内对SDK进行初始化,示例代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ... //emas初始化 @try { [self emasInit]; } @catch (NSException *exception) { NSLog(@"Emas-->exception is %@", exception); } @finally { } return YES; } - (void) emasInit { // channel根据实际情况填写 NSString* channel = @"emas-rn"; // nick根据app实际情况填写 NSString* nick = @"emas-rn-demo"; NSString* appVersion = [self getAppVersion]; [[AlicloudTlogProvider alloc] autoInitWithAppVersion:appVersion channel:channel nick:nick]; [AlicloudHAProvider start]; } - (NSString *)getAppVersion { NSDictionary *appinfo = [[NSBundle mainBundle] infoDictionary]; NSString *version = [appinfo objectForKey:@"CFBundleShortVersionString"]; if (!version) { version = @"1.0.0"; } return version; }
Android SDK接入
添加Maven仓库。
在ReactNative的android目录下的build.gradle文件中,添加仓库地址:
buildscript { ... repositories { google() mavenCentral() maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" } } dependencies { classpath("com.android.tools.build:gradle:4.1.2") } }
添加SDK。
在android/app目录下的build.gradle文件中添加如下依赖:
dependencies { .... //HA Adapter 高可用 implementation('com.aliyun.ams:alicloud-android-ha-adapter:1.1.5.1-open') //tlog implementation('com.aliyun.ams:alicloud-android-tlog:1.1.4.1-open') }
初始化SDK。
打开MainApplication(一般的ReactNative都是使用自动创建的MainApplication,如果接入的App有自定义的Application,就在自定义的Application里面添加初始化代码),初始化代码一般放在onCreate方法中,示例代码:
import com.alibaba.ha.adapter.AliHaAdapter; import com.alibaba.ha.adapter.AliHaConfig; import com.alibaba.ha.adapter.Plugin; ... @Override public void onCreate() { super.onCreate(); SoLoader.init(this, /* native exopackage */ false); initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); emasInit(); } private void emasInit() { AliHaConfig config = new AliHaConfig(); //设为自己的appKey config.appKey = "xxx"; config.appVersion = BuildConfig.VERSION_NAME; //设为自己的appSecret config.appSecret = "xxxxx"; //根据实际情况设置 config.channel = "xxxx"; //根据实际情况设置 config.userNick = "xxxxx"; config.application = this; config.context = this.getApplicationContext(); config.isAliyunos = false; /* tlog公钥,在控制台下载aliyun-emas-services.json文件, 文件内的appmonitor.tlog.rsaSecret字段即为公钥信息 */ config.rsaPublicKey = HA_RSA_PUBLIC_KEY; config.initAsync = false; AliHaAdapter adapter = AliHaAdapter.getInstance(); adapter.addPlugin(Plugin.tlog); adapter.openDebug(true); //是否使用http,根据实际情况设置,默认是false即使用https adapter.openHttp(true); adapter.start(config); }