插件是基于MobLink 对Flutter进行插件扩充支持。目的是方便Flutter开发者更方便地集成使用MobLink。Demo例子:https://github.com/MobClub/MobLink-For-Flutter
引入插件
在 pubspec.yaml 文件中加入下面依赖
dependencies:
moblink:
mobcommonlib:
平台设置参考iOS集成文档
实现
Android端配置
平台设置参考 Android集成文档
实现
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 _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);
});