V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
moonkiller
V2EX  ›  iDev

iOS 的 app 是如何获取设备的唯一标示的?

  •  
  •   moonkiller · 2017-05-14 23:33:37 +08:00 · 6706 次点击
    这是一个创建于 2785 天前的主题,其中的信息可能已经有所发展或是发生改变。
    苹果对用户的隐私控制一直比较严格;
    尽量不让 app 获取设备的唯一 ID。

    但是发现探探这个 app 能直接封禁设备,
    如果你在某个 iPhone 上被封了号;
    即使卸载 app,重装后用小号注册,还是会被封禁。
    请问是用了什么技术原理?
    19 条回复    2017-06-08 13:41:14 +08:00
    wj2061
        1
    wj2061  
       2017-05-14 23:37:02 +08:00   ❤️ 1
    广告 id ?
    zanyzephyr
        2
    zanyzephyr  
       2017-05-14 23:39:38 +08:00
    读取了 iCloud 信息?
    Jaylee
        3
    Jaylee  
       2017-05-14 23:44:54 +08:00
    我猜是利用了推送 sdk 里面的 deviceId
    simpleapples
        4
    simpleapples  
       2017-05-15 00:05:05 +08:00   ❤️ 1
    有一个很机智的办法就是,第一次安装时候获取 deviceID 然后存到 keychain 里,这样无论怎么删除 app 都没问题了。
    moonkiller
        5
    moonkiller  
    OP
       2017-05-15 00:32:48 +08:00
    @simpleapples 只能把 iPhone 恢复出厂设置了吗?
    zhaojjxvi
        6
    zhaojjxvi  
       2017-05-15 00:34:12 +08:00 via iPhone
    突然想到 Uber 收集 uuid 的事儿,是不是一样性质的?
    或者我记错了
    a412739861
        7
    a412739861  
       2017-05-15 00:38:32 +08:00
    @simpleapples #4 如果是这样,在 10.3 里删除该 app 的所有 group 组,那这个 keychain 就会被清空。
    LZ 的系统如果是 10.3,就不会受到这个方法的限制了。
    可以试一试。

    如果探探有申请广告 id,那么也一样可以做到的封禁。
    推送的 deviceID 的话,也一样,这种情况的话,可以尝试初始化去重置 deviceID 的。我记得 deviceID 是会更改的,所以 Apple 建议是每次都去获取新的。但是一般似乎基本不会改动。
    gluttony
        8
    gluttony  
       2017-05-15 01:02:50 +08:00   ❤️ 1
    @a412739861 iOS 10.3 beta 2 - 5 删掉同 group 的 app 后会清除 keychain,beta 6 - release 版又改回来了。
    moonkiller
        9
    moonkiller  
    OP
       2017-05-15 01:17:39 +08:00
    @gluttony
    @a412739861 我还停留在 iOS8...因为 10 还不能越狱😢
    1023400273
        10
    1023400273  
       2017-05-15 09:46:17 +08:00
    我都是安装第一次随机一个 uuid 直接存到 keychain,以后就都用这个了
    jackisnotspirate
        11
    jackisnotspirate  
       2017-05-15 09:53:11 +08:00 via iPhone
    上面都讲了生成一个 uuid , 存到 keychain
    还可以同时存到 iCloud
    UIView
        12
    UIView  
       2017-05-15 09:55:49 +08:00
    通过推送的 deviceid,存到 keychain
    kIdJoEy
        13
    kIdJoEy  
       2017-05-15 10:20:47 +08:00
    高要求 /风控相关的可以用设备特征指纹,相对可靠性和通用性都高一些=。=
    Jaylee
        14
    Jaylee  
       2017-05-15 10:55:26 +08:00
    @kIdJoEy 显然你没有做过 iOS 开发
    skylancer
        15
    skylancer  
       2017-05-15 12:37:06 +08:00
    目前 iOS 只能识别一个不抹掉设备重设情况下的半永久识别
    esile
        16
    esile  
       2017-05-15 13:24:04 +08:00 via iPhone
    重置广告标识符
    xi_lin
        17
    xi_lin  
       2017-05-15 14:01:10 +08:00   ❤️ 1
    @a412739861 10.3 正式版 keychain 并不会被删除
    Joyreece
        18
    Joyreece  
       2017-05-24 10:23:05 +08:00
    估计是自定义了一个类似 UID 的字符串,然后存在 KeyChain 里面。
    每次 App 首次启动时,检查 KeyChain 里面有没有特定的 key,如果没有则新建,有的话则发送给服务器进行匹配。
    jackrex
        19
    jackrex  
       2017-06-08 13:41:14 +08:00
    KeyChain 目前是最靠谱的方法,还有 SFSafariViewController + Cookie 的方式,有点黑
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1475 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 17:12 · PVG 01:12 · LAX 09:12 · JFK 12:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.