本插件是基于MobLink 对Flutter进行插件扩充支持。目的是方便Flutter开发者更方便地集成使用MobLink。Demo例子:https://github.com/MobClub/Mo...

开始集成

引入插件

  • 在 pubspec.yaml 文件中加入下面依赖
    `dependencies:
    moblink:
    mobcommonlib:`
    iOS端配置
    平台设置参考 iOS集成文档
    实现
  • 第一步添加配置里的XCode配置,配置初始化信息MOBAppKey 和 MOBAppSecret;
  • 第二步Mob后台基本配置里的iOS端配置信息

Android端配置
平台设置参考 Android集成文档
实现

  • 第一步按Android集成文档中的第一点注册应用,申请Mob的 AppKey 和 AppSecret;
  • 第二步按Android集成文档中的第一点完成集成配置 1.打开项目根目录的build.gradle,在buildscrip–>dependencies 模块下面添加classpath 'com.mob.sdk:MobSDK:+',如下所示;
buildscript {
    repositories {
         maven {
          url "https://mvn.mob.com/android"
      }
        ...
    }

    dependencies {
        ...
     classpath "com.mob.sdk:MobSDK:2018.0319.1724"
    }
}

2.在使用MobLink模块的build.gradle中,添加MobSDK插件和扩展,如下所示:

// 添加插件
apply plugin: 'com.mob.sdk'
// 在MobSDK的扩展中注册MobLink的相关信息
MobSDK {
    appKey "您的Mob-AppKey"
    appSecret "您的Mob-AppSecret"
    MobLink {
        uriScheme "您后台配置的scheme"
        appLinkHost "您后台开启AppLink时生成的Host"
    }
}
  • 第三步在MainActivity中添加以下代码:

    //导入的包
    import com.mob.moblink.MobLink;
    // 必须重写该方法,防止MobLink在某些情景下无法还原
    @Override
    protected void onNewIntent(Intent intent) {
      super.onNewIntent(intent);
      setIntent(intent);
      MobLink.updateNewIntent(getIntent(), this);
    }

    图片

  • 第四步,调用隐私接口时,需要将导入插件的example中的MainActivity中接口的代码复制到自己的MainActivity中去,否则隐私接口的调用会有问题:
    图片
  • 第五步创建一个application继承FlutterApplication,在创建的application的onCreate中添加以下代码防止APP杀死进程后无法进行场景还原:

    //导入的包
    import com.example.moblink.MoblinkPlugin;
    import com.mob.moblink.MobLink;
    //防止MobLink在APP杀死进程后无法还原
    @Override
      public void onCreate() {
          super.onCreate();
          MobLink.setRestoreSceneListener(new MoblinkPlugin.SceneListener());
      }

    图片
    注意:Android的相关代码在Flutter层会报错,但不会影响项目的运行和MobLink功能的使用

Web:平台设置参考 Web端集成文档

接口说明

回传隐私协议状态

//设置通道
   static const MethodChannel _methodChannel_submit =
   const MethodChannel('private.flutter.io/method_channel_submit_private');  
 //flutterPara设置true或者false
    Future<void> _setPrivateState(flutterPara) async {
    String result;
    try {
      result = await _methodChannel_submit.invokeMethod('submitPrivacyGrantResult', flutterPara);
      print('隐私协议提交成功:' + result);
      showAlert('隐私协议提交成功:$result', context);
    } on PlatformException catch (e) {}
    setState(() {
      // _privateContent = result;
    });
  }

获取MobId

// 设置参数
MLSDKScene scene = MLSDKScene('/demo/a', {'param1': '123', 'param2': '456'});
// 传入 scene , 获取 mobid
Moblink.getMobId(scene, (String mobid, String domain, MLSDKError error) {
   if (mobid != null) {
      print('得到mobid:' + mobid);
      showAlert( mobid, context);
        // do something
       }
    });

场景还原回调

//Android调用
 //设置回调通道
static const EventChannel _eventChannel =const EventChannel('JAVA_TO_FLUTTER');
 //监听开始(传递监听到原生端,用户监听场景还原的数据回传回来)
eventChannel.receiveBroadcastStream().listen(_onEvent, onError: _onError);
 // 场景还原的回调
  void _onEvent(Object event) {
print('onEvent返回的内容: $event');
  if (null != event) {
      showAlert('onEvent要还原的路径为[活着]:$event', context);
   }
 }
   void _onError(Object error) {
       print('返回的错误');
 }
//ios调用
Moblink.restoreScene((MLSDKScene scene){
       showAlert('要还原的路径为:'+ scene.className, context);
       print('要还原的路径为:'+ scene.className);
    });

Flutter iOS端注意事项
由于插件更新,SDK的Pod依赖被替换,Flutter 本身写入Pod文件不会先执行删除原有依赖,导致可能会出现原有本地库依然存在,请检查Pod文件夹下文件,直接手动删除mob_linkSDK 以及 MOBFoundation文件即可,如有疑问,请直接通过官网和我们联系。


中关村科金
136 声望13 粉丝

北京中关村科金技术有限公司(简称“中关村科金”)是国内领先的对话式AI技术解决方案提供商,成立于2014年,注册资本14亿元,总部位于北京,在上海、重庆、深圳、杭州、成都等地设有分支机构,公司规模近千人,其...