关于H5复制ios没有效果

问题场景:今天遇到这样一个问题,需要从后端接口获取到的值进行复制,且不能提现调用获取值,因为是一个数据列表,每个列表元素需要当场点击调用接口获取值进行复制,本来以为很简单的一个需求,当做好之后发布到线上发现ios机型无效

api:uni.setClipboardData

原因:这是iOS的安全限制,要求复制操作必须是由用户直接触发的同步操作。如果在异步回调中调用复制API,iOS会认为这不是用户直接触发的操作,从而拒绝执行。

有一个解决方法,一个降级方案

解决方法:

使用 async/await 保证在同一个事件循环中完成复制:

javascript 复制代码
async function copyContent() {
    uni.showLoading({
        title: '加载中...'
    });
    
    try {
        const content = await new Promise((resolve, reject) => {
            request({
                url: '/api/xxx',
                success: (res) => resolve(res.data),
                fail: (err) => reject(err)
            });
        });
        
        uni.hideLoading();
        
        uni.setClipboardData({
            data: content,
            success: function() {
                uni.showToast({
                    title: that.i18n.page.text24,
                    icon: 'none'
                });
            }
        });
    } catch(err) {
        uni.hideLoading();
        console.error(err);
    }
}

降级方案:点击按钮调用接口获取到值,弹出弹框,在弹框点击按钮调api复制

相关推荐
函数的彼端14 小时前
iOS Model Generator - 让 JSON 转模型变得简单高效
ios·json·cocoa
2501_9159184114 小时前
HTTPS 端口深度解析,443 并不是唯一入口,理解 TLS 流量行为与抓包策略
网络协议·http·ios·小程序·https·uni-app·iphone
2501_9160088915 小时前
iOS 开发者工具全景图,构建从编码、调试到性能诊断的多层级工程化工具体系
android·ios·小程序·https·uni-app·iphone·webview
ElenaYu15 小时前
在 macOS 上安装 iOS Simulator(iPhone 模拟器)
macos·ios·iphone
Digitally16 小时前
如何在没有电脑的情况下备份 iPhone
ios·电脑·iphone
儿歌八万首17 小时前
Flutter 混合开发指南:项目打包与原生 Android/iOS 集成
android·flutter·ios
如此风景17 小时前
iOS SwiftUI 布局容器详解
ios
2501_9159214317 小时前
从需求到上架,现代 iOS 开发流程的工程化方法论
android·ios·小程序·https·uni-app·iphone·webview
TouchWorld18 小时前
iOS逆向-哔哩哔哩增加3倍速播放(2)-[横屏视频-半屏播放]增加3倍速播放
ios·swift
1024小神19 小时前
xcode 中配置AR Resource Group并设置图片宽度等
ios·swiftui·ar·xcode·swift