因为国内部分开发人员的小心思,所以我更偏向较为封闭的 iPhone 手机。

2021-04-16 09:04:01 +08:00
 xingshu1990

因为 这些读取剪切板的国产 app 是真的烦: https://fast.v2ex.com/t/770796 这个帖子,我特地去搜索 IOS 自动化 清空剪切板,于是发现下面的内容

https://www.jianshu.com/p/10a6900cc904?from=timeline

以下是以上网址中的文字,涉及到的代码 不做验证,只想说有人动歪脑筋。

之前用淘宝给微信好友分享链接的时候,发现在微信中复制了宝贝的链接,然后再从后台切换到淘宝客户端,淘宝就会弹出一个页面,询问是否要跳转到相关页面,今天试着实现了一下,分享出来~

//识别剪贴板中的内容
if let paste = UIPasteboard.generalPasteboard().string where
    (paste.hasPrefix("http://") || paste.hasPrefix("https://")) { 
    //如果剪贴板中的内容是链接
    let alert = UIAlertController(title: "要打开剪贴板中的链接吗?",
        message: nil,
        preferredStyle: UIAlertControllerStyle.Alert)
    alert.addAction(UIAlertAction(title: "打开",
        style: UIAlertActionStyle.Default,
        handler: { Void in
            // your implementation
            print(paste)
    }))
    alert.addAction(UIAlertAction(title: "忽略",
        style: UIAlertActionStyle.Cancel,
        handler: nil))
    //弹出 Alert
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    if let vc = storyboard.instantiateViewControllerWithIdentifier("navi") as? UINavigationController {
        self.window?.rootViewController = vc
        vc.presentViewController(alert, animated: true, completion: nil)
    }
}

获取设备的剪贴板很简单,第一行代码就搞定了,if 语句中判断了一下剪贴板中的内容是不是链接,注意 http 和 https 都要写上,这点很容易被忽略(在浏览器地址栏中复制以 www.开头的文本会自动在剪贴板中转为 http 或 https 开头的链接)。

更值得注意的是,因为你需要让 App 在每次从后台进入前台的时候都检测一下剪贴板中有没有链接,所以以上方法要放在 AppDelegate 文件的 applicationWillEnterForeground 方法中。

AppDelegate.swift 而这个方法中是不能通过 self 来调用 ViewController 的,所以要曲线救国的话,你需要手动获取 Storyboard 、ViewController,再设置 window 的 rootViewController 才能去掉所有报错和警告。

(这里我只是把剪贴板中的链接输出到控制台了,想要自己用 UIWebView 打开链接的话,在 // your implementation 这句注释这里写自己的方法吧)

[ 150928 更新]

对比 applicationWillEnterForeground 和 applicationDidBecomeActive 这两个方法,前者是指 App 从后台进入前台,后者是指 App 处于活跃状态,所以前者相对于后者,缺少的部分是,当 App 刚刚启动,而不是从后台取出的时候,它无法识别剪贴板。 因为你不能要求每次都让用户先把 App 打开,再往剪贴板里面填东西,再跳转回来,所以个人建议把上面的代码放在 applicationDidBecomeActive 方法中,而不是 applicationWillEnterForeground 。

———————————— 关于更大的监控,不用在这里讨论,大家放心里就好。

8951 次点击
所在节点    iOS
61 条回复
wipbssldo
2021-04-16 14:21:08 +08:00
@dingwen07 那说明 MIUI 掌握了你所有剪贴板里的码?
mfmal
2021-04-16 15:41:08 +08:00
至于更大的监控 ——
我建议出生的时候就别上户口,那就没人能监控到你
xingshu1990
2021-04-16 15:43:48 +08:00
@mfmal #42 可以啊,拐到一些地方 打折了手和脚当乞丐,或者关到黑砖窑,或者是偏僻矿区。
also24
2021-04-16 16:06:56 +08:00
@xingshu1990 #31
对应验证码场景,其实 Android 在 8.0 版本开始就已经提供了解决方案。(需要厂商主动接入)
https://danielw.cn/android-new-feature-sms-verification

xiangbohua
2021-04-16 16:29:26 +08:00
希望 IOS 后面出禁止访问剪贴板的功能吧,毕竟我知道她访问了剪贴板又怎么样呢?
ZSeptember
2021-04-16 16:36:47 +08:00
然后 ios 并不可以禁用复制剪切板
Biggoldfish
2021-04-16 16:44:16 +08:00
动心思那么直接卸载就是了
charlie21
2021-04-16 17:14:02 +08:00
都是月亮惹的祸
avia1ae
2021-04-16 17:39:54 +08:00
苹果现在的功能挤牙膏太严重了,相比 IDFA,更希望这次能加入剪切板的隐私权限,IDFA 无非就是一个匿名识别码,剪切板这种东西能包含的东西就多了去了。
qianmoumou
2021-04-16 17:42:46 +08:00
悲观的说,可以躺平了,国内的隐私环境,这点小聪明解决不了什么。现在基本一个手机号走天下,从广告投放的角度无所遁形。只要消费理性,无所谓的。
secretman
2021-04-16 18:08:39 +08:00
MIUI 就能控制剪贴板权限啊,1202 年了,可以醒醒了,还有别说 MIUI 广告的问题了,我用了快一年,拿到手就关广告,根本就没弹广告~
YY
2021-04-16 19:33:02 +08:00
Mac 上不能随便复制东西了 自动同步到 iPhone
hkezh
2021-04-16 19:52:31 +08:00
应该禁止一部分 app 读取剪贴板
Hackerchai
2021-04-16 20:24:40 +08:00
楼主这简书链接 https://www.jianshu.com/p/10a6900cc904?from=timeline 是我学长,碰熟人了
godpeo
2021-04-16 20:45:56 +08:00
@also24 那其他安卓 app 不一样读取不了
Ballmer
2021-04-16 22:34:07 +08:00
@drunkdog 你甚至不愿意叫他们一句:股东和精神股东
Jaeden
2021-04-17 06:39:28 +08:00
开发人员不背这个锅,产品说了算
xuanbg
2021-04-17 08:56:41 +08:00
这和开发人员又个半毛钱关系啊,还不是产品花样多。。。
xshenmi
2021-04-17 11:00:36 +08:00
@secretman 喊一下米厂把“广告可以关”做成“广告可以开”怎么样?
mfmal
2021-04-17 11:48:30 +08:00
@xingshu1990 那不挺自由的么,想找也找不到,也没人知道有这么个人存在,也不会有人找

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/770993

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX