解决6.5.16及以上版本微信内部M页不能唤起APP

背景

深夜放毒

最近微信唤起app的数据急速下降,产品同学告诉我们大事来了,微信不能唤起Android的App了

微信语录

为提升微信 webivew 中网页打开其他应用的体验,防止诱导点击、强制跳出等不合理行为, 我们的“唤起外部客户端”的能力统一调整为:

  • 1、 在 6.5.16 及以上版本的微信客户端中,贵方网页将只能使用 launchApplication 接口,打
    开其他应用。该接口会在唤起前要求用户接受弹窗确认。
  • 2、 在 6.5.16 以下版本的微信客户端中,贵方网页可以继续使用现有方式,打开其他应用。

解决版本

我们在接入微信的 opensdk 的时候会在自己项目代码中包含 xxx.xxx.xxx.wxapi.WXEntryActivity 这个页面。
在 6.5.16 及以上版本的微信客户端中,微信首先唤起的是 xxx.xxx.xxx.wxapi.WXEntryActivity 这个页面,将参数放在 extInfo 字段中,由第三方 APP 自行解析处理 ShowMessageFromWX.Req 的微信回调。

public class WXEntryActivity extends WXCallBack {
    @Override
    public void onReq(BaseReq req) {
        super.onReq(req);
        if (req != null && req instanceof ShowMessageFromWX.Req) {
            ShowMessageFromWX.Req request = (ShowMessageFromWX.Req) req;
            if (request.message != null && request.message.mediaObject != null
                    && request.message.mediaObject instanceof WXAppExtendObject) {
                WXAppExtendObject appExtendObject = (WXAppExtendObject) request.message.mediaObject;
                //唤起app的启动页面,将scheme协议中的数据进行透传
                Intent intent = new Intent(this, LaunchActivity.class);
                intent.setData(Uri.parse(appExtendObject.extInfo));
                startActivity(intent);
            }
        }
    }
}

微信官方具体描述我们可以参见: 微信webview唤起外部客户端接入说明2018版

总结

微信这样做,将微信与其下游的app的之前的影响继续加强。虽然我们做了不同的适配,但是同时能得到微信唤起app的成功或者失败的数据。在互联网产品竞争激烈的今天我们不仅仅要做好用户产品也好做好技术产品。

文章到这里就全部讲述完啦,若有其他需要交流的可以留言哦

想阅读作者的更多文章,可以查看我 个人博客 和公共号:

振兴书城

推荐阅读更多精彩内容