React文档

工程配置

Android

初始化

将下载的jar放入app下的libs中:


首先需要拷贝common_android文件夹中的文件拷贝到你的工程中:

然后再将对应平台的桥接文件拷入你的工程:


需要注意如果你拷入的路径不是com.umeng.soexample.invokenative请将桥接文件中的路径修改为你工程的路径:

image.png

打开Application文件,添加DplusReactPackage

 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

初始化

首先需要找到Activity的生命周期,添加如下代码:

  @Override
    public void onResume() {
        super.onResume();
        MobclickAgent.onResume(this);
    }
    @Override
    protected void onPause() {
        super.onPause();
        MobclickAgent.onPause(this);
    }

并在onCreat中设置统计的场景,以及发送间隔:

MobclickAgent.setSessionContinueMillis(1000);
MobclickAgent.setScenarioType(this, EScenarioType.E_DUM_NORMAL);

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.onEvent(eventId);

AnalyticsUtil.onEventWithLable(eventId,eventLabel);

AnalyticsUtil.onEventWithMap(eventId,eventData);

AnalyticsUtil.onEventWithMapAndCount(eventId,eventData,eventNum);

  • eventId 为当前统计的事件ID
  • eventLabel 为分类标签
  • eventData 为当前事件的属性和取值(键值对),不能为空,如:{name:"umeng",sex:"man"}
  • eventNum 用户每次触发的数值的分布情况,如事件持续时间、每次付款金额等

账号的统计

AnalyticsUtil.profileSignInWithPUID(puid);

  • puid 用户账号ID.长度小于64字节

AnalyticsUtil.profileSignOff();

  • 账号登出时需调用此接口,调用之后不再发送账号相关内容

Dplus 统计

track事件

AnalyticsUtil.track(eventName);

AnalyticsUtil.trackWithMap(eventName, property);

  • eventName 事件名称
  • property 事件的自定义属性(可以包含多对“属性名-属性值”),如:{name:"umeng",sex:"man"}

超级属性

AnalyticsUtil.registerSuperProperty(property);

  • property 事件的超级属性(可以包含多对“属性名-属性值”),如:{name:"umeng",sex:"man"}

AnalyticsUtil.clearSuperProperties();

  • 清空所有超级属性

设置关注事件是否首次触发

AnalyticsUtil.setFirstLaunchEvent(eventList);

  • eventList 只关注eventList前五个合法eventID.只要已经保存五个,此接口无效,如:["list1","list2","list3"]

游戏统计

关卡

AnalyticsUtil.startLevel(level); //进入关卡

AnalyticsUtil.failLevel(level); //通过关卡

AnalyticsUtil.finishLevel(level); //完成关卡

  • level 关卡ID

充值

AnalyticsUtil.pay(cash, source, price);

AnalyticsUtil.payWithItem(cash, source, item, amount, price);

  • cash 真实币数量,>=0的数,最多只保存小数点后2位
  • source 支付渠道,1 ~ 99的整数, 其中1..20 是预定义含义,其余21-99需要在网站设置。
  • coin 虚拟币数量,大于等于0的整数, 最多只保存小数点后2位
  • item 道具ID
  • amount 道具数量,大于0的整数
  • price 虚拟币数量

购买

AnalyticsUtil.buy(item, amount, price);

  • item 道具ID
  • amount 道具数量,大于0的整数
  • price 道具单价

消耗

AnalyticsUtil.use(item, amount, price);

  • item 道具ID
  • amount 道具数量,大于0的整数
  • price 道具单价

额外奖励

AnalyticsUtil.bonus(coin, source); //赠送金币

AnalyticsUtil.bonusWithItem(item, amount, price, source); //赠送道具

  • coin 虚拟币数量,大于0的整数, 最多只保存小数点后2位
  • source 奖励渠道,取值在 1~10 之间。“1”已经被预先定义为“系统奖励”,2~10 需要在网站设置含义
  • item 道具ID,非空字符串
  • amount 道具数量,大于0的整数
  • price 道具单价

交易兑换货币

AnalyticsUtil.exchange(orderId, currencyAmount, currencyType, virtualAmount, channel);

  • currencyAmount 现金或等价物总额
  • currencyType 为ISO4217定义的3位字母代码,如CNY,USD等(如使用其它自定义等价物作为现金,可使用ISO4217中未定义的3位字母组合传入货币类型)
  • virtualAmount 虚拟币数量
  • channel 支付渠道
  • orderId 交易订单ID

推送

Android

初始化

首先,Android push需要让Android app依赖我们提供的push module,再根据文档进行相应的初始化。
找到React Native使用的Activity,添加初始化代码:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       PushModule.initPushSDK(this);
       PushAgent.getInstance(this).onAppStart();
          }

UShare SDK 的平台配置与单独 Native 项目集成相同,请参考 接入U-Share SDK 以及 初始化设置部分

iOS

初始化

Push SDK 的平台配置与单独 Native 项目集成相同,请参考 接入Push SDK 以及 初始化设置部分

接口说明

首先需要引入PushUtil文件:

import PushUtil from './PushUtil'

添加tag

 PushUtil.addTag(tag,(code,remain) =>{
            
        })
  • tag 此参数为tag
  • callback 第一个参数code为错误码,当为0时标记成功。remain为remain值

删除tag

  PushUtil.deleteTag(tag,(code,result) =>{
          
        })
  • tag 此参数为tag
  • callback 第一个参数code为错误码,当为0时标记成功。remain为remain值

展示tag

  PushUtil.listTag((code,result) =>{
            
        })
  • callback 第一个参数code为错误码,当为0时标记成功。result为一个数组类型,内容为所有tag

添加Alias

PushUtil.addAlias(alias,type,(code) =>{
          
        })
  • alias 此参数为alias
  • type 此参数为alias type

添加额外Alias

PushUtil.addExclusiveAlias(alias,type,(code) =>{
          
        })
  • alias 此参数为alias
  • type 此参数为alias type

删除Alias

PushUtil.deleteAlias(alias,type,(code) =>{
          
        })
  • alias 此参数为alias
  • type 此参数为alias type

appinfo

PushUtil.appInfo((result) =>{

        })
  • callback result为一个字符串类型,标记结果

Share

Android

初始化

在Application中设置使用的三方平台的appkey:

 {

        PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
        //豆瓣RENREN平台目前只能在服务器端配置
        PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad", "http://sns.whalecloud.com");
        PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");

    }

找到React Native使用的Activity,添加初始化代码:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ShareModule.initSocialSDK(this);
          }

并添加回调所需代码:

  @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
    }

分享其它工程配置请参照分享工程配置

iOS

初始化

UShare SDK 的平台配置与单独 Native 项目集成相同,请参考 接入U-Share SDK 以及 初始化设置部分

接口说明

首先需要引入ShareUtil文件:

import ShareUtile from './ShareUtil'

授权

授权代码可以直接使用ShareUtile.auth(platform,callback),其中platform为平台id,callback为回调内容。
平台与id的对应关系如下:

平台 id
QQ 0
新浪微博 1
微信 2
微信朋友圈 3
Qzone 4
电子邮件 5
短信 6
Facebook 7
Twitter 8

回调示例如下:

  ShareUtile.auth(0,(code,result,message) =>{
            this.setState({result:message});
            if (code == 0){
                this.setState({result:result.uid});
            }
        });

其中code为错误码,当为0时标记为成功。
其中message为错误信息。
其中result属性如下:

属性 含义
uid uid
screen_name 用户名
iconurl 头像
accessToken accessToken
refreshToken refreshToken
gender gender
unionid unionid
openid openid
expires_in 过期时间

分享

分享示例如下:

 ShareUtile.share(text,img,url,title,platform,(code,message) =>{
            this.setState({result:message});

        });
  • text 为分享内容
  • img 为图片地址,可以为链接,本地地址以及res图片(如果使用res,请使用如下写法:res/icon.png
  • url 为分享链接,可以为空
  • title 为分享链接的标题
  • platform为平台id,id对照表与授权相同
  • callback中code为错误码,当为0时,标记成功。message为错误信息

分享面板

分享面板示例如下:

 ShareUtile.shareboard(text,img,url,title,list,(code,message) =>{
            this.setState({result:message});

        });
  • text 为分享内容
  • img 为图片地址,可以为链接,本地地址以及res图片(如果使用res,请使用如下写法:res/icon.png
  • url 为分享链接,可以为空
  • title 为分享链接的标题
  • list 为分享平台数组,如:var list = [0,1,2]
  • callback中code为错误码,当为0时,标记成功。message为错误信息
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容

  • 自己最近的项目是基于react的,于是读了一遍react的文档,做了一些记录(除了REFERENCE部分还没开始读...
    潘逸飞阅读 3,394评论 1 10
  • State 和生命周期 考虑前面章节中时钟的例子。 到目前位置,我们仅学习了一种更新 UI 的方式。 我们调用Re...
    soojade阅读 1,212评论 0 1
  • —— 基础知识、JSX介绍、React 元素、组件和属性、状态和生命周期 此文档来自 React 官方文档,在英文...
    thelastcookies阅读 488评论 0 1
  • —— 事件处理、 此文档来自 React 官方文档,在英文原文的基础上进行了增删改,用于我本人的研究与学习,暂不支...
    thelastcookies阅读 295评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,678评论 18 139