Android

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(); 调试的时候可以参考魔窗的示例流程,传送门

上一篇 下一篇

猜你喜欢

热点阅读