写点什么

MobLink for Flutter

  • 2022-10-31
    上海
  • 本文字数:1993 字

    阅读完需:约 7 分钟

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

开始集成

引入插件


  • 在 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 , 获取 mobidMoblink.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 文件即可,如有疑问,请直接通过官网和我们联系。

用户头像

还未添加个人签名 2019-05-08 加入

还未添加个人简介

评论

发布
暂无评论
MobLink for Flutter_flutter_MobTech袤博科技_InfoQ写作社区