乐趣区

关于flutter:MobLink-for-Flutter

本插件是基于 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 文件即可,如有疑难,请间接通过官网和咱们分割。

退出移动版