关于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复制

相关推荐
StarkCoder1 天前
打造炫酷浮动式 TabBar:让 iOS 应用导航更有格调!
前端·ios
2501_940094021 天前
索尼PSP游戏资源下载 推荐中文汉化ios格式合集分享开源掌机模拟器都支持
游戏·ios·cocoa
2501_916007471 天前
iOS性能调试工具终极指南,从系统底层到多端协同的全方位优化实践(2025版)
android·ios·小程序·https·uni-app·iphone·webview
私人珍藏库1 天前
Miraplay – iOS端类TVbox可添加解析源的影视聚合播放器+解析影视源
ios·应用·tv·影视
2501_915921431 天前
iOS崩溃日志深度分析与工具组合实战,从符号化到自动化诊断的完整体系
android·ios·小程序·uni-app·自动化·cocoa·iphone
2501_916008892 天前
没有源码如何加密 IPA 实战流程与多工具组合落地指南
android·ios·小程序·https·uni-app·iphone·webview
CocoaKier2 天前
微信与苹果就小程序支付达成和解,iOS用户有望在小程序内直接使用苹果支付
ios·apple
QuantumLeap丶2 天前
《uni-app跨平台开发完全指南》- 07 - 数据绑定与事件处理
vue.js·ios·uni-app
ajassi20002 天前
开源 Objective-C IOS 应用开发(五)iOS操作(action)和输出口(Outlet)
ios·开源·objective-c