flutter:微信h5端开放标签wx-open-launch-app跳转app冷启动时无法获取到携带参数问题

场景:从微信h5跳转打开app时携带参数,根据参数跳转到对应界面。

  1. 热启动
    app没有杀掉后台,App只是从后台恢复,Flutter引擎保持运行,参数传递正常。
  2. 冷启动
    App完全关闭后启动,Flutter引擎需要重新初始化,此时原生端到Flutter端的参数传递可能还未完成
final Fluwx fluwx = Fluwx();
Function(WeChatResponse)? responseListener;


  void initState() {
    super.initState();
    _init();
    }

 
  void dispose() {
  	fluwx.removeSubscriber(responseListener);
    super.dispose();
  }

_init()async{
final isRegister = await fluwx.registerApi(appId: CommonConfig.wChatOpenSdkAppId, doOnIOS: true,universalLink: CommonConfig.wechatUniversalLink);
  if(isRegister == true){
    setWxExtResponseListener();
  }
}

setWxExtResponseListener (){
  responseListener = (WeChatResponse response) {
    if (response is WeChatShowMessageFromWXRequest ) {
      // Android 平台处理
      getWxMsg(wxMessage: response.extMsg);
    }else if(response is WeChatLaunchFromWXRequest){
      // iOS 平台处理
      getWxMsg(wxMessage: response.extMsg);
    }
  };
  if(responseListener != null){
    _fluwx.addSubscriber(responseListener!);
    //从冷启动重新加载数据(关键)
    _fluwx.attemptToResumeMsgFromWx();
  }
}

getWxMsg({String? wxMessage}) async {
  String? wxMsg;
  if (wxMessage == null) {
    //这个只在热启动(app没有杀掉后台)时有效
    wxMsg = await fluwx.getExtMsg();
  } else {
    wxMsg = wxMessage;
  }
  ///处理参数或跳转页面等逻辑
}


//热启动时,能正常获取到参数,但是冷启动获取不到,返回的是null。在不需要考虑冷启动时,使用该方法更简便
_hotBoot(){
String? wxMsg = await fluwx.getExtMsg();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值