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

相关推荐
开心就好20259 小时前
UniApp开发应用多平台上架全流程:H5小程序iOS和Android
后端·ios
开心就好202512 小时前
免 Xcode 的 iOS 开发新选择?聊聊一款更轻量的 iOS 开发 IDE kxapp 快蝎
后端·ios
恋猫de小郭15 小时前
Apple 的 ANE 被挖掘,AI 硬件公开,宣传的 38 TOPS 居然是"数字游戏"?
前端·人工智能·ios
忆江南1 天前
iOS 深度解析
flutter·ios
没有故事的Zhang同学1 天前
05-主题|事件响应者链@iOS-应用场景与进阶实践
ios
FeliksLv2 天前
尝试给Lookin 支持 MCP
ios
没有故事的Zhang同学2 天前
01-研究系统框架@Web@iOS | JavaScriptCore 框架:从使用到原理解析
ios
CocoaKier3 天前
苹果谷歌商店:如何监控并维护用户评分评论
ios·google·apple
iOS日常3 天前
iOS设备崩溃日志获取与查看
ios·xcode
wangruofeng4 天前
AI 助力 Flutter 3.27 升级到 3.38 完整指南:两周踩坑与实战复盘
flutter·ios·ai编程