Android 友盟统计如何在同意隐私协议后启动

问题:

这里我们面临的问题其实是如何在前端界面调用原生Java的方法。这里我们需要使用到 Android 原生UI组件。

解决方案:

原生代码:

首先我们需要注册一个自己的原生Module:MyModules.java。

// package文件地址 必须需要按照你当前文件位置进行修改
package com.duoyun.sports;

import android.app.Application;
import android.content.Context;
import com.duoyun.sports.RNUMConfigure;
import com.duoyun.sports.MainApplication;
import com.umeng.commonsdk.UMConfigure;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;

public class MyModules extends ReactContextBaseJavaModule  {

    private final ReactApplicationContext reactContext;

    KeepLiveModule(ReactApplicationContext context) {
        super(context);
        this.reactContext = context;
    }

    @ReactMethod
    private static boolean privacy = false;

    // 必须包含 getName方法。
    @Override
    public String getName() {
        return "MyModules";
    }

    @ReactMethod
// Callback 回调函数可以返回原生里的值给JS。
    public  void setPrivacy(boolean value, Callback callback) {
        privacy = value;
        if(privacy){
          callback.invoke(null,privacy);
          // UMeng 初始化
          RNUMConfigure.init(reactContext, "你的appkey", "UMENG_CHANNEL_VALUE", UMConfigure.DEVICE_TYPE_PHONE, "3c49afbbfa6b73488a79eee568586c0d");
         }
    }


}

然后在建立一个Package文件来注册我们的Module。建立MyModulePackage.java文件:

package com.duoyun.sports;

import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class MyModulePackage implements ReactPackage {
    @Override
    public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
        return Collections.emptyList();
    }

    @Override
    public List<NativeModule> createNativeModules(
            ReactApplicationContext reactContext) {
        List<NativeModule> modules = new ArrayList<>();

        modules.add(new MyModule(reactContext));

        return modules;
    }

}

注册Package文件,在你的xxApplication.java文件getPackages方法中进行注册:

        @Override
        protected List<ReactPackage> getPackages() {
          @SuppressWarnings("UnnecessaryLocalVariable")
          List<ReactPackage> packages = new PackageList(this).getPackages();
          // Packages that cannot be autolinked yet can be added manually here, for example:
// 注册Package 文件
            packages.add(new MyModulePackage());
            packages.add(new DplusReactPackage());
          return packages;
        }

到这里我们就能够在JS中调用原生的方法了:

JS端代码:

// 引入 NativeModules 
import { NativeModules } from 'react-native';


const { MyModules }=NativeModules 


// 在你的JS方法中调用原生方法
funcation Onclick(){
 MyModules .setPrivacy(true, (err,callback) => { console.log(err,callback); });
}

至此,友盟初始化完成,能够在同意用户协议后自动统计。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值