Android集成魔窗mLink
2017-09-06 本文已影响92人
ThrowException
1、魔窗官网创建应用
产品管理 -->> 新建产品 -->> 配置好包名和URI Scheme
2、创建mLink
mLink -->> 添加mLink服务 -->> 获取到mLink的key
3、下载SDK,导入jar
记得引用jar包
4、配置清单文件
...
添加权限
...
<!-- 连接互联网Internet权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 允许应用程序联网,以便向我们的服务器端发送数据。 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--判断程序是否在前台运行,必须 -->
<uses-permission android:name="android.permission.GET_TASKS" />
<!-- 检测手机基本状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 缓存资源优先存入SDcard -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
配置APPKEY
<activity
android:name="cn.magicwindow.common.base.MWActivity"
android:configChanges="orientation|keyboardHidden|screenSize|navigation"
android:exported="true">
</activity>
<!--MW sdk ID 此处跟activity同级,需要放在Application内,MW_APPID(也就是后台的”魔窗AppKey”)不能更改 -->
<meta-data android:name="MW_APPID" android:value="YOUR APP KEY" />
<meta-data android:name="MW_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />
5、MyApplication初始化Session和注册mLink
/**
* 初始化魔窗Session,在onCreate方法调用
*/
private void initMagic() {
// android-14之后才起作用
Session.setAutoSession(this);
// 注册mLink
registerMLink(this);
}
/**
* 注册mLink
* @param context
*/
private static void registerMLink(Context context) {
MLinkAPIFactory.createAPI(context).registerDefault(new MLinkCallback() {
@Override
public void execute(Map<String, String> map, Uri uri, Context context) {
MLinkIntentBuilder.buildIntent(context, MainActivity.class);
}
});
// 注意,这里的第一个参数为魔窗后台你注册的mLink key
MLinkAPIFactory.createAPI(context).register("mLink key", new MLinkCallback() {
@Override
public void execute(Map<String, String> map, Uri uri, Context context) {
for (String key: map.keySet()) {
}
// 提取map,将参数传给RegisterNewActivity
Intent intent = new Intent(context, RegisterNewActivity.class);
intent.putExtra("param1", map.get("param1"));
intent.putExtra("param2", map.get("param2"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent);
}
});
}
6、启动Activity初始化魔窗的配置,以及路由
/**
* 初始化魔窗SDK,在onCreate方法调用
*/
private void initMagicSDK() {
MWConfiguration config = new MWConfiguration(this);
config.setLogEnable(false);
config.setSharePlatform(MWConfiguration.ORIGINAL);
MagicWindowSDK.initSDK(config);
if (getIntent().getData() != null) {
// 路由跳转到注册界面
MLinkAPIFactory.createAPI(this).router(this, getIntent().getData());
finish();
} else {
// 跳转到应用宝
MLinkAPIFactory.createAPI(this).checkYYB();
}
}
7、在被打开的界面接收参数
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String param1= getIntent().getStringExtra("param1");
String param2= getIntent().getStringExtra("param2");
showToast("param1=" + param1+ ",param2=" + param2);
}
常见问题/注意事项
0、出了问题记得检查使用的版本是否与文档对应,他们的文档有点滞后。
1、应用宝无法唤起 APP
检查魔窗后台是否开启应用宝的功能。
2、应用宝开启跳转,但是用户第一次安装打开没有拿到参数
新版本需要在启动 activity 的 onCreate() 调用 MLinkAPIFactory.createAPI(this).deferredRouter();
,并且检查是否在 getData() 为空的时候调用checkYYB(); 调试的时候可以参考魔窗的示例流程,传送门。