关于ios点击分享自动复制到粘贴板的问题

前言

Android 系统没有什么特别的要求,实现这个也比较容易。但ios在某些情况下就会出现问题。

  1. 如果ios是点击之后,请求接口,再把接口的内容赋值给粘贴板肯定行不通,会被ios系统拦截,导致赋值失败或者赋值为空。
  2. 建议使用第三方库clipboard.js来实现粘贴板赋值
  3. 将点击的dom设置为一个button最好实现。
js 复制代码
<!-- 辅助copy的button Android不需要被用户查看 -->
<button id="copy-share" ref="copyBtn" v-show="showBtn">
	Copy to clipboard
</button>

import ClipboardJS from 'clipboard';

const copyBtn = ref('')
const showBtn = ref(false)
const handleShareLink = async () => {
	// 这是一个异步函数
	const res = await shareLinkGenerate({
      ...
    })
    if(res) {
	    copyBtn.value.setAttribute('data-clipboard-text', res); // 并且将这个res的结果,赋值给这个按钮
	    var clipboard = new ClipboardJS('#copy-share'); // 如果请求成功了 让clipboard 和按钮绑定
	    clipboard.on('success', function(e) {  // 成功的回调
	        showSuccessToast('分享链接已复制');
	        e.clearSelection();
	    });
	    clipboard.on('error', function(e) { // 和失败的回调
	      showToast('复制失败');
	      e.clearSelection();
	    });
    	//判断是不是ios系统或者苹果系列
    	if (navigator?.userAgent?.match(/(iPhone|iPod|iPad);?/i)) {
	       	// 控制让一个按钮出现,或者弹一个按钮出来,让用户再点击这个按钮一次
	       	showBtn.value = true
	        return
      } else {
		// 如果不是苹果,就可以直接赋值给剪贴板了copyBtn 就是对应的按钮
        const handleCopy = () => {
          if(copyBtn.value) {
            copyBtn.value.click()
          }
        }
        setTimeout(() => {
          handleCopy()
        },1000)	
	  }
    }
}
相关推荐
0xAaron1 小时前
符号表和 dSYM UUID 确认
ios·cocoa·uuid·符号表·dsym
0xAaron1 小时前
如何使用dSYM文件来符号化崩溃信息
ios·swift·调试·崩溃·符号化·dsym
2501_915918413 小时前
Flutter 加固方案全解析,从 Dart 层到 IPA 成品的多工具协同防护体系
flutter·macos·ios·小程序·uni-app·cocoa·iphone
wsxlgg4 小时前
IOS 打包上传提示you do not have required contracts to perform an operation
ios
每周报刊4 小时前
初代 iPhone SE 谢幕:被标为 “过时”,小屏旗舰时代彻底落幕
ios·iphone
RollingPin4 小时前
iOS 动态库与静态库的区别
ios·framework·动态库·静态库·符号表·三方库·dyld
0xAaron5 小时前
ips 文件符号化
ios·swift·调试·ips·符号化
AirDroid_cn5 小时前
iPhone放大镜跟随模式下,画面抖动,如何稳定?
macos·ios·objective-c·cocoa·iphone·ipad
AirDroid_cn5 小时前
iPhone 新安装的APP无法调用摄像头,如何重置权限?
macos·ios·objective-c·cocoa·iphone
陈朝晖SHS5 小时前
Flutter项目结合iOS OC原生页面禁止截屏
flutter·ios