调用openSDk打开微信小程序后剪贴板被清空的解决

现象

「跨时空」群里有用户反馈,通过小工具直达快递小程序,原先粘贴好的地址或者单号会被清空,需要再次复制,很不方便。

排查了下代码,除非用户主动点击复制按钮,「跨时空」本身并不对剪贴板执行写入操作。于是将关注点转移到跳转小程序阶段。经过一番查找,发现已有部分用户反馈,iOS16系统下,微信8.0.25及之前版本都没有问题,8.0.26~8.0.28版本调用[WXApi openWXApp]后都会清空剪切板。在 H5 页面,调用 launchApplication ,同样存在剪贴板被清空问题。

最终在开发者社区找到官方说明 《关于微信 OpenSDK 适配 iOS 16 系统的说明


背景

微信 iOS OpenSDK 通过剪切板在应用和微信间进行数据传递,在用户同意后完成授权登录、分享等功能。具体说明如下:

1、应用通过 OpenSDK 跳转到微信。在应用内,OpenSDK 会将业务数据写入剪切板;然后在拉起微信后,微信从剪切板中读出业务数据,完成相关功能;

2、微信完成相关功能后,微信将相关业务数据(例如授权登录结果、错误信息等)写入剪切板,然后跳转回应用。在应用内,OpenSDK 从剪切板中读出数据,回调给开发者。

在 iOS 16 系统上,读取其它应用写入剪切板的数据时,系统会阻塞调用,弹窗提示,让用户手动选择是否允许读取。如下图所示:

为了提升用户体验,微信和 OpenSDK 进行数据传输方式的改造,尽量避免使用剪切板传递数据。具体说明如下:

1、对于一般传输数据的接口,会在 Scheme 或者 Universal Link 中携带相关数据;

2、对因传输数据量较大等原因无法使用上述数据传输方式的接口,保持通过剪切板传递数据。

因此,开发者需要应用升级 OpenSDK,并配合微信客户端 8.0.24 及以上版本使用。

解决方案

看到这里,原因就很明白了,解决方案则是应用升级 OpenSDK 到 1.9.6 以上版本,原文中有升级指引,这里不再赘述。

交流反馈群

「跨时空」APP交流群

分享到:

评论完整模式加载中...如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理