跳到主要内容

Common

两段式初始化 API,满足 PIPL 合规要求 —— 用户同意《隐私协议》前 native 不持有 appkey、不上报数据。

引用

import { Common } from '@unif/react-native-umeng';
方法签名返回
preInitpreInit(config: UmengInitConfig)Promise<void>
initinit()Promise<void>
isInitedisInited()Promise<boolean>

Common.preInit(config)

预初始化友盟 SDK。可在用户同意《隐私协议》之前调用,推荐 App 启动后立刻调

行为:存 config + 注册微信/钉钉平台(PlatformConfig.setWeixin / setDing),不上报数据idempotent —— 重复调只触发一次(模块级 preInitPromise 缓存 + native UmengBootstrap@Volatile 双重保险)。

function preInit(config: UmengInitConfig): Promise<void>;

UmengInitConfig 字段

字段类型必填默认说明
appkeystring友盟 appkey
channelstringiOS 'App Store'、Android 'default'渠道标识
wechatAppIdstring微信平台 appid;不传则不注册微信分享
wechatAppSecretstring微信平台 appsecret;有 wechatAppId 才生效
wechatUniversalLinkstring微信 Universal Link(1.8.6+ 强制);仅 iOS 用,有 wechatAppId 才生效
dingtalkAppIdstring钉钉平台 appid;不传则不注册钉钉分享

微信注册要求 wechatAppId wechatAppSecret 同时非空才生效;钉钉只需 dingtalkAppId

抛出

UmengError.code触发
E_INVALID_OPTIONSconfig.appkey 缺失或为空(JS 层先校验,native 侧也会再校验)
E_UNKNOWNnative preInit 其它失败

Common.init()

正式启动数据采集。必须在用户同意《隐私协议》之后调用,且 preInit(config) 必须先调过。

function init(): Promise<void>;
init 无参

config 全部交给 preInitinit() 不接收任何参数。没先 preInit 直接 init 会 reject E_INVALID_OPTIONS

行为:调原生 UMConfigure.init(iOS UMConfigure.initWithAppkey),真正开始统计与上报。idempotent —— 重复调只触发一次。

抛出

UmengError.code触发
E_INVALID_OPTIONS未先 preInit 就调 init(iOS native error code -3
E_UNKNOWNnative init 其它失败

Common.isInited()

查询是否已完成 init()(即数据采集是否已开始)。

function isInited(): Promise<boolean>;

返回 true 表示已 initpreInit 完成但尚未 init 时返回 false


最小用法

import { Common } from '@unif/react-native-umeng';

// 1) App 启动:preInit —— 不上报,所有 config 都在这里给
await Common.preInit({
appkey: 'YOUR_APPKEY',
wechatAppId: 'wxXXXXXXXX',
wechatAppSecret: 'XXXXXXXX',
wechatUniversalLink: 'https://your.host/', // 微信 1.8.6+(iOS)
dingtalkAppId: 'dingoaXXXXXXXX',
});

// 2) 用户同意《隐私协议》后:init() 无参,开始采集
await Common.init();

平台支持

APIiOSAndroid
preInit()✅(桥侧存 config + setPlaform 注册平台,不调 UMConfigure.initWithAppkey,无上报副作用)✅(UMConfigure.preInit + PlatformConfig.setWeixin/setDing
init()✅(UMConfigure.initWithAppkey✅(UMConfigure.init
isInited()

wechatUniversalLink 仅 iOS 生效(Android 无此概念)。