微信SDK 1.8.9,iOS App分享给微信好友,微信好友通过小程序点击打开App,能后唤起App,但是[WXApi handleOpenURL:url delegate:self]方法返回nil,onReq:(BaseReq *)req方法不回掉,无法获取到微信小程序传回的参数。请问该如何解决?我看论坛中也有相似的问题,然而并没有解决办法。
注:universalLink配置正确,且通过[WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult* result) {}];方法验证通过。
微信版本:8.0.2,iOS版本 13.4.1
微信版本:8.0.4,iOS版本:14.4.2
从微信点击打开App后的日志打印依次如下:
xlog:clear property list
wxlog:command:2040
wxlog:Error:data[{length = 0, bytes = 0x}] is empty
wxlog:Error:idPaste is nil
wxlog:Error:pasteDictionary is nil
wxlog:Error:dict is nil
wxlog:appdata is nil,
wxlog:Error:data[{length = 0, bytes = 0x}] is empty
wxlog:Error:idPaste is nil
wxlog:Error:pasteDictionary is nil
wxlog:Error:dict is nil
wxlog:appdata is nil,
handleOpenURl 方法在不同地方调用过多次,可能多个不同的插件使用了微信,微信拉起APP传参的实现方法是使用iOS的剪切板
然而,微信在handleOpenURL调用时,会清空剪切版
导致第二次调用handleOpenURL的方法返回false,
同时也无法监听到回调。相关错误日志如上。
其中你的第一行打印日志:clear properList,已经清理了剪切版,后续再调用handleOpenURl,就会失败,return false
解决方法是通过保存剪切版信息,向下传递
在override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool
方法中先保存剪切版,在低啊用一次handleOpenURL之后,再给剪切版重新附上值
let board = UIPasteboard.general.items // 微信handle使用剪切板之后会清空 super.application(app, open: url, options: options) // 为了后续的微信handle可以正常使用,重新复制剪切板 UIPasteboard.general.setItems(board) WXApi.handleOpen(url, delegate: self)