收藏
回答

小程序冷启动App,handleOpenURL返回YES,但是onReq不执行

点击小程序里打开App按钮,唤醒app(冷启动)。

会执行这个系统方法

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options

微信SDK的这个方法返回YES

但是onReq代理未执行

另外App在后台的时候onReq是会执行的。

搜索了一下这个问题,基本都没有明确的回复或解答。

这个是bug,还是设计本身就是这样的。

友盟可以做到小程序冷热启动都可以接受到传过来的参数!!!Ta是怎么办到的?合作关系有特殊的权限吗?

回答关注问题邀请回答
收藏

11 个回答

  • 咖啡凉了
    咖啡凉了
    2022-09-21

    我遇到了同样问题

    handleOpenURl 方法在不同地方调用过多次,多个不同的插件使用了微信,微信拉起APP传参是使用iOS的剪切板

    然而,微信在handleOpenURL调用时,会清空剪切版,导致第二次调用handleOpenURL的方法返回false,同时也无法监听到回调。相关错误日志如:

    微信wx1og:Error:data[{length=0,bytes=0x}Jisempty
    微信wx1og:Error:idpasteisnil
    微信wx1og:Error:pasteDictionaryisnil
    微信wx1og:Error:dictisnil
    微信wx1og:appdataisnil,ur1:wx72a3+969b0a54413://platformId=wec
    


    解决方法是通过保存剪切版信息,向下传递

            let board = UIPasteboard.general.items
            // 微信handle使用剪切板之后会清空
            super.application(app, open: url, options: options)
    
            // 为了后续的微信handle可以正常使用,重新复制剪切板
            UIPasteboard.general.setItems(board)
            WXApi.handleOpen(url, delegate: self)
    
    2022-09-21
    有用
    回复
  • 。。
    。。
    2022-03-17

    现在2022年了,2年了,这个问题有解吗,不调用onReq这个方法

    2022-03-17
    有用
    回复
  • Emmm...
    Emmm...
    2021-04-27

    [04-27 17:40:01]-[DEBUG]-->[微信登录调试] - [wxlog:Error:pasteData[(null)] is empty]


    [04-27 17:40:01]-[DEBUG]-->[微信登录调试] - [wxlog:Error:pasteDictionary is nil]


    [04-27 17:40:01]-[DEBUG]-->[微信登录调试] - [wxlog:Error:dict is nil]


    [04-27 17:40:01]-[DEBUG]-->[微信登录调试] - [wxlog:appdata is nil, url:wxafd7499ce5e91fda://platformId=wechat]


    2021-04-27
    有用
    回复 1
    • Emmm...
      Emmm...
      2021-04-27
      微信开放标签在微信里打开的h5 然后通过h5唤起app handleOpen 返回false
      2021-04-27
      回复
  • 大迪子
    大迪子
    2021-04-01

    log : WXApi 注册成功

    log : wxlog:send req[<WXLaunchMiniProgramReq: 0x280730900>], appID:wxf3434b6998bc63c4, universalLink:https://m.haoshugongdu.com/open_app/, sdkVersion:1.8.7.1

    log : wxlog:LaunchMiniProgram todata extDic=(null)

    log : wxlog:set property list

    log : wxlog:launch app with ul only success

    log : wxlog:launch app with universal link, ret:1

    log : wxlog:req:<WXLaunchMiniProgramReq: 0x280730900>, cid:c4c7f58084b5bd95a9f260f1965394de995cbd6d

    log : wxlog:Error:pasteData[(null)] is empty

    log : wxlog:Error:pasteDictionary is nil

    log : wxlog:Error:dict is nil

    log : wxlog:appdata is nil, url:wxf3434b6998bc63c4://platformId=wechat

    log : wxlog:send req[<WXLaunchMiniProgramReq: 0x28079b700>], appID:wxf3434b6998bc63c4, universalLink:https://m.haoshugongdu.com/open_app/, sdkVersion:1.8.7.1

    log : wxlog:LaunchMiniProgram todata extDic=(null)

    log : wxlog:set property list

    log : wxlog:launch app with ul only success

    log : wxlog:launch app with universal link, ret:1

    log : wxlog:req:<WXLaunchMiniProgramReq: 0x28079b700>, cid:5622d765cd6402ab23302808e62f3d0eed1f49ae

    这个日志是我App拉起小程序,以及在小程序点击返回App按钮的打印的日志,并没有调用- (void)onResp:(BaseResp *)resp


    2021-04-01
    有用
    回复
  • 小米渣
    小米渣
    2021-03-05

    “要确保在handleOpenURl或者handleOpenUniversalLink之前调用register才能处理”,不只是看是不是调用了,要看调用成功没有,我遇到的问题是其他的三方SDK影响到了微信SDK的注册。对有冲突的SDK做了下延时,处理的这个问题。

    2021-03-05
    有用
    回复
  • 唯心而动
    唯心而动
    2020-12-30

    我的解决方案是:收到三方启动url后,延迟一下执行[WXApi handleOpenURL:url delegate:self];然后就走onReq:(BaseReq *)req方法了

    代码如下:

    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options

    {

        // 微信回调,字符串是自己在微信注册时的appkey

        if ([url.absoluteString containsString:@"wxXXXXXXXXXXXXXXX"]) {

            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.35 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

                [WXApi handleOpenURL:url delegate:self];

            });

            return YES;

        }

        return YES;

    }

    2020-12-30
    有用
    回复
  • 吴瑞杰
    吴瑞杰
    2020-08-14

    无解这个问题 大家都遇到了

    2020-08-14
    有用
    回复 1
    • 疯狂的小辣椒
      疯狂的小辣椒
      2020-10-30
      要确保在handleOpenURl或者handleOpenUniversalLink之前调用register才能处理
      2020-10-30
      回复
  • 👋👋
    👋👋
    2020-08-11

    我也遇到这个问题了,错误日志已上传,时间为2020-08-11 17:10,麻烦跟进以下

    2020-08-11
    有用
    回复 2
    • 吴瑞杰
      吴瑞杰
      2020-08-14
      么用的 我发了好多帖子 没人回复
      2020-08-14
      回复
    • 疯狂的小辣椒
      疯狂的小辣椒
      2020-10-30
      要确保在handleOpenURl或者handleOpenUniversalLink之前调用register才能处理
      2020-10-30
      回复
  • Vincent Peng
    Vincent Peng
    2020-07-22

    遇到这种情况,没有找到原因和解决方案

    2020-07-22
    有用
    回复 2
    • 疯狂的小辣椒
      疯狂的小辣椒
      2020-10-30
      要确保在handleOpenURl或者handleOpenUniversalLink之前调用register才能处理
      2020-10-30
      回复
    • 大迪子
      大迪子
      2021-04-01回复疯狂的小辣椒
      执行(lldb) po [WXApi handleOpenURL:url delegate:self]
      WXApiManager.mm:41 log : wxlog:Error:pasteData[(null)] is empty
      WXApiManager.mm:41 log : wxlog:Error:pasteDictionary is nil
      WXApiManager.mm:41 log : wxlog:Error:dict is nil
      WXApiManager.mm:41 log : wxlog:appdata is nil, url:wxf3434b6998bc63c4://platformId=wechat
      返回的并不是YESorNO,而切无法回调onResp:
      2021-04-01
      回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2020-07-01

    你好,麻烦再重现一次,在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,提供一下微信号,复现问题的详细时间点(如:2020-4-10 10:10)

    2020-07-01
    有用
    回复 2
    • 袁致营
      袁致营
      2020-10-29
      能否回答下:h5冷启动app可以实现吗?
      2020-10-29
      回复
    • 张波
      张波
      2021-02-22
      21年2月22日,刚接入这个功能,还是有这个帖子的问题。热启动可以,冷启动收不到onReq回调。打印的错误appdata is nil
      2021-02-22
      回复

正在加载...

登录 后发表内容
问题标签