微信h5端wx-open-launch-app跳转app(Flutter端接收extinfo)

  1. 通过官方文档把需要配置的都配好, 公众号appId,微信开放平台appId, 确保运行wx.ready能返回正确的结果
    https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html#22

  2. 在微信开放平台,增加配置js安全域名,要跟公众号平台配置保致一致,否则会报: launch:fail_check fail

  3. h5端增加标签wx-open-launch-app, 加上跳转成功和失败的handler

extinfo用来传递参数: sign?start_lat=&start_lng&

vue
  <wx-open-launch-app id="launch-btn" appid="xxx"  extinfo="sign?start_lat=&start_lng&"       
      @error="handleError" @launch="handleLaunch">
        <script type="text/wxtag-template">
          <style>.btn { padding: 12px }</style>
          <button class="btn">App内查看</button>
        </script>
      </wx-open-launch-app>
      
	const handleError = (e) => {
      console.log('handleError', e.detail)
      Toast(`打开失败: ${e.detail}, 下载app...`)
    }
    const handleLaunch = (e) => {
      console.log('handleLaunch', e.detail)
    }
  1. 至此打开页面, 点击wx-open-launch-app,如果报launch:fail,说明已经完成一半
“launch:fail”当前场景不支持跳转,或Android上该应用未安装,或iOS上用户在弹窗上点击确认但该应⽤未安装
“launch:fail”当前打开h5页面的域名跟wx.ready里不一样时,也是同会报错, 例: 链接是http打头的,打开时自动转到https,此时wx.ready去验证的域名应该是https打头的,此时也会报错,解决方式: 用一致的域名打开,如果还提示,微信h5刷新一下页面即可
  1. flutter端引入fluwx,注册appId
    fluwx = Fluwx();//微信
    fluwx.registerApi(appId: "xxx");
  1. 处理extInfo,仅启动时获取一次
final String? extMsg = await fluwx.getExtMsg();//extMsg = sign?start_lat=&start_lng&
还原为标准的uri去处理
Uri initialUri = Uri.parse(extMsg);
  1. 如果在启动之后,还需要一直去获取到extInfo的话…就得去注册获取这个事件,具体能不能多次从微信接收消息,这个我没有去尝试.

fluwx里,已经把通过IWXAPIEventHandler把从微信过来的消息,放到methodChannel里,

kt
    override fun onReq(req: BaseReq?) {
        activityPluginBinding?.activity?.let { activity ->
            req?.let {
                if (FluwxConfigurations.interruptWeChatRequestByFluwx) {
                    when (req) {
                        is ShowMessageFromWX.Req -> handleShowMessageFromWX(req)
                        is LaunchFromWX.Req -> handleLaunchFromWX(req)
                        else -> {}
                    }
                } else {
                    FluwxRequestHandler.customOnReqDelegate?.invoke(req, activity)
                }
            }
        }
    }

以下是默认的单次获取

dart
  /// Get ext Message
  @override
  Future<String?> getExtMsg() {
    return methodChannel.invokeMethod('getExtMsg');
  }

如果需要接收extInfo的话.以上接收微息的消息,使用fluwx还有点问题
最终的处理方式

  1. 加了个新的Activity,并实现IWXAPIEventHandler接口
  2. 在onReq方法中获取到extInfo
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值