V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xingshu1990
V2EX  ›  iOS

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

  •  
  •   xingshu1990 · 234 天前 · 7722 次点击
    这是一个创建于 234 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为 这些读取剪切板的国产 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 。

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

    61 条回复    2021-04-18 10:33:56 +08:00
    terrytang1
        1
    terrytang1  
       234 天前   ❤️ 10
    不能说开发人员的小心思,都是公司,产品的结果导物,ios 是比较强制
    EasonC
        2
    EasonC  
       234 天前 via iPhone
    划重点,国内开发人员小心思,安卓党是时候换一波手机了
    drunkdog
        3
    drunkdog  
       234 天前   ❤️ 25
    应该说是老板及其狗腿的小心思
    xingshu1990
        4
    xingshu1990  
    OP
       234 天前
    1 2 3 楼的朋友 其实说的是对的,国内公司领导的问题,不是开发人员的问题。在此修改。
    wellsc
        5
    wellsc  
       234 天前   ❤️ 4
    难道不是产品的心思吗?作为开发表示能够少写一行业务代码就尽量少写
    emeab
        6
    emeab  
       234 天前   ❤️ 1
    开发巴不得不写这些奇奇怪怪的功能
    ericwoflskin
        7
    ericwoflskin  
       234 天前   ❤️ 12
    都是一伙人,自己在做啥又不是不知道,又没人拿枪顶着脑门,还不是为了钱。
    jiayong2793
        8
    jiayong2793  
       234 天前
    有没有人验证一下,当我从 mac 上复制一个文件的时候,这种方法是读取文件路径还是文件流?

    也就是说,手机上的 app 能否通过这种方式访问 mac 上的文件
    jiayong2793
        9
    jiayong2793  
       234 天前
    @xingshu1990 本质上来说是国内互联网企业盈利模式单一,都是靠广告盈利
    trlove
        10
    trlove  
       234 天前
    @jiayong2793 mac 复制文件 在微信聊天窗口复制的时候 粘贴出来的是文件名 其他地方粘贴没试过 应该能读取文件
    antiquezzz
        11
    antiquezzz  
       234 天前
    说个确切的,ios 玩球球大作战,每次一进去就提示读取了粘贴板(类似),所以这跟 ios 和 android 没什么关系吧,可能 android 提示都不给提示?
    Muniesa
        12
    Muniesa  
       234 天前
    但就剪贴板这个问题,国产 android 的保护不是做的更好吗
    xumng123
        13
    xumng123  
       234 天前 via iPhone
    开发人员没有小心思,那是老板的大战略
    joesonw
        14
    joesonw  
       234 天前   ❤️ 6
    都是希特勒是灭犹太人, 为什么要审判我们?
    clrss
        15
    clrss  
       234 天前
    与其捷径自动清空剪贴板, 我建议把剪贴板改成: 马**是**
    doveyoung
        16
    doveyoung  
       234 天前
    我目前是用捷径清空剪贴板,敲三下手机背部执行

    @clrss #15 思路也不错,只不过 有没有比“马**是** ”更好的办法恶心一下恶意读剪贴板的
    jwing
        17
    jwing  
       234 天前
    @jiayong2793 唯 KPI 最大导致的,这种扒光用户隐私,构建用户画像的发展策略,只要国家不立法禁止,就永远不会消失
    dynastysea
        18
    dynastysea  
       234 天前   ❤️ 1
    我个人就没那么强的隐私概念,我觉得读取剪贴板这种功能真的超级方便。。。你们可以来鄙视我了。。
    watcher
        19
    watcher  
       234 天前
    国外也有不少吧?
    drrrtt
        20
    drrrtt  
       234 天前
    @doveyoung #16 sql 注入啦"drop table dbo.*"
    also24
        21
    also24  
       234 天前   ❤️ 3
    唉…… 都怪 Android 太开放,后台应用不能读写剪贴板,想做个剪贴板自动清理都不行,真是垃圾系统啊 🙄

    https://developer.android.com/about/versions/10/privacy/changes?hl=zh-cn#clipboard-data
    Jirajine
        22
    Jirajine  
       234 天前 via Android
    Android 可以为每个应用单独调整剪贴板的访问权限。
    felixcode
        23
    felixcode  
       234 天前
    我不懂移动端的开发,但这里引用的是 15 年的内容,六年了没啥变化吗?
    Cu635
        24
    Cu635  
       234 天前
    不要侮辱开发人员,这明明是产品经理 /公司 /资本的心思。
    winddweb
        25
    winddweb  
       234 天前
    安卓下个版本就会有读取剪贴板提示了🥴
    yigecaiji
        26
    yigecaiji  
       234 天前
    他要是只是在本地分析还好,就怕™每次打开 app 都把你剪贴板的内容上传到服务器去分析。
    en20
        27
    en20  
       234 天前 via Android
    为什么开发要出来挨打😭冤啊
    jiayong2793
        28
    jiayong2793  
       234 天前
    @Cu635 产品经理也是被 KPI 逼的
    victor
        29
    victor  
       234 天前
    @jiayong2793 本质上来说是国内互联网企业盈利模式单一,都是靠广告盈利

    能否给一些国外互联网企业的盈利模式,不靠广告那种
    processzzp
        30
    processzzp  
       234 天前 via iPhone
    @dynastysea 好的,已 Block
    xingshu1990
        31
    xingshu1990  
    OP
       234 天前
    @dynastysea #18 比如微信重置密码,要读取手机短信,那你只读取收取验证码的信息就好,不读取其他的信息的标题或者内容,这完全无可厚非,而现在,不能明确的说这些 APP 有直接读取隐私的情况,因为这中间还涉及到抓包的情况,技术上锤这些 APP 还是有点难度。
    简单都说,不是我们有强烈的隐私概念,而是有点精神洁癖。
    johnkiller
        32
    johnkiller  
       234 天前
    对我的困扰就是 iOS14 读剪贴板会一直弹窗提示,还不能关。每次打开 QQ 它居然连读三四次,然后屏幕上就开始疯狂弹窗……
    mschultz
        33
    mschultz  
       234 天前   ❤️ 1
    @xingshu1990 #31
    进一步,实际上微信连任何短信,包括验证码短信也不应该读取。iOS 的做法是让系统自带输入法读取短信,然后做一个一键快捷填写。

    ----

    我觉得读取剪贴板这件事可能大部分场景( 80%+?)都是不必要的、不最优的、捏着鼻子妥协的存在。

    举个例子:在微信里打开朋友发来的淘宝链接,正常人的思维是什么?点一下,打开,不香吗。结果厂商为了限制对家流量,互相屏蔽,然后再搞出火星文复制粘贴识别的一套流程。这不是脱裤子放屁嘛。

    本来互联网产品大家互相超链接「互联」好好的,我们应是眼睁睁地看着这个行业往互相屏蔽、流量圈地,然后搞个妥协流程来恶心用户的方向发展。市场如此,个人用户似乎也无能为力。
    xingshu1990
        34
    xingshu1990  
    OP
       234 天前   ❤️ 1
    @mschultz #33 因为有些互联网公司,在 URL 加入某些字段,在统计日志的时候,用来统计不同数据来源的地方,获得的流量,或者测试流量玩法,测试活动吸粉人数。
    有精神洁癖的用户呢,就想办法给互联网公司喂脏数据:就算我主动给 APP 喂屎,APP 主动推送屎,我也不觉得难受。
    xingshu1990
        35
    xingshu1990  
    OP
       234 天前
    @xingshu1990 #34 像我这类人呢,就是不喜欢 APP 主动推送信息,包括但不限于历史购物产品降价,或者我买了篮球鞋,APP 就推送我鞋子护理物品,或者鞋带,鞋垫。
    我会自己去买,但不要你推送给我。
    qing108
        36
    qing108  
       234 天前
    关于这个你应该喷腾讯才对,如果不是腾讯垄断,搞恶意竞争,不让竞争对手在微信和 qq 上分享,根本不会有这么多事情
    dingwen07
        37
    dingwen07  
       234 天前 via Android
    MIUI 能自动识别各种剪贴板里的码,对不属于 app 的内容询问是否允许,不比你这个强多了
    340746
        38
    340746  
       234 天前 via Android
    该死的百度网页还会修改剪贴板,真希望能有办法禁止。
    toptyloo
        39
    toptyloo  
       234 天前
    单就剪贴板而言,Android 是可以控制剪贴板权限的。。。
    honeycomb
        40
    honeycomb  
       234 天前 via Android
    @antiquezzz Android 底层部署了这个功能(包含读取,写入权限的控制),想用的话可以整一个 rikka 的 appops 加以利用。
    但原生系统要到 Android12 才会将其发布。

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

    xiangbohua
        45
    xiangbohua  
       234 天前
    希望 IOS 后面出禁止访问剪贴板的功能吧,毕竟我知道她访问了剪贴板又怎么样呢?
    ZSeptember
        46
    ZSeptember  
       234 天前
    然后 ios 并不可以禁用复制剪切板
    Biggoldfish
        47
    Biggoldfish  
       234 天前 via Android
    动心思那么直接卸载就是了
    charlie21
        48
    charlie21  
       234 天前
    都是月亮惹的祸
    avia1ae
        49
    avia1ae  
       234 天前
    苹果现在的功能挤牙膏太严重了,相比 IDFA,更希望这次能加入剪切板的隐私权限,IDFA 无非就是一个匿名识别码,剪切板这种东西能包含的东西就多了去了。
    qianmoumou
        50
    qianmoumou  
       234 天前
    悲观的说,可以躺平了,国内的隐私环境,这点小聪明解决不了什么。现在基本一个手机号走天下,从广告投放的角度无所遁形。只要消费理性,无所谓的。
    secretman
        51
    secretman  
       234 天前
    MIUI 就能控制剪贴板权限啊,1202 年了,可以醒醒了,还有别说 MIUI 广告的问题了,我用了快一年,拿到手就关广告,根本就没弹广告~
    YY
        52
    YY  
       234 天前
    Mac 上不能随便复制东西了 自动同步到 iPhone
    hkezh
        53
    hkezh  
       234 天前 via iPhone
    应该禁止一部分 app 读取剪贴板
    Hackerchai
        54
    Hackerchai  
       234 天前
    楼主这简书链接 https://www.jianshu.com/p/10a6900cc904?from=timeline 是我学长,碰熟人了
    godpeo
        55
    godpeo  
       234 天前 via iPhone
    @also24 那其他安卓 app 不一样读取不了
    Ballmer
        56
    Ballmer  
       234 天前
    @drunkdog 你甚至不愿意叫他们一句:股东和精神股东
    Jaeden
        57
    Jaeden  
       233 天前
    开发人员不背这个锅,产品说了算
    xuanbg
        58
    xuanbg  
       233 天前
    这和开发人员又个半毛钱关系啊,还不是产品花样多。。。
    xshenmi
        59
    xshenmi  
       233 天前
    @secretman 喊一下米厂把“广告可以关”做成“广告可以开”怎么样?
    mfmal
        60
    mfmal  
       233 天前 via iPhone
    @xingshu1990 那不挺自由的么,想找也找不到,也没人知道有这么个人存在,也不会有人找
    loarland
        61
    loarland  
       232 天前
    开发背不了这个锅,这坑代码自己都不想去写
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1298 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:23 · PVG 02:23 · LAX 10:23 · JFK 13:23
    ♥ Do have faith in what you're doing.