• MobLink for Flutter


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

    开始集成

    引入插件
    在 pubspec.yaml 文件中加入下面依赖

    dependencies:
      moblink:
      mobcommonlib: 
    
    • 1
    • 2
    • 3
    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"
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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"
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    第三步在MainActivity中添加以下代码:

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

    图片

    第四步,调用隐私接口时,需要将导入插件的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());
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    图片

    注意:Android的相关代码在Flutter层会报错,但不会影响项目的运行和MobLink功能的使用Web:
    平台设置参考 Web端集成文档

    接口说明
    回传隐私协议状态

    //设置通道
       static const MethodChannel _methodChannel_submit =
       const MethodChannel('private.flutter.io/method_channel_submit_private');  
     //flutterPara设置true或者false
        Future _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);
        });
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
  • 相关阅读:
    大数据Flink(八十八):Interval Join(时间区间 Join)
    德纳 Dana EDI 项目案例
    【Java】基于【Mybatis】框架学习系列——Mybatis增删改查(CURD)
    香港服务器一定比美国服务器好吗?
    npm run serve启动报错npm ERR! Missing script: “serve“
    宇凡微YE09合封芯片,集成高性能32位mcu和2.4G芯片
    视频转高清gif动态图片(Python代码实现)
    202204 RAC环境归档满
    用Bosch Sensortec的BMI08X传感器API在C语言中控制IMU传感器:一个完整的集成指南
    摩托罗拉手机在中国以外的市场复兴,在欧洲和美国大幅增长
  • 原文地址:https://blog.csdn.net/apkkkk/article/details/126867192