iOS 14 适配:更严格的用户隐私保护

今年的iOS 14系统更新了不少内容,本文重点介绍和用户隐私保护相关的部分。iOS 14在iOS 13基础上进一步深化了对用户隐私的保护,新增的几项措施对于广告行业影响较大。

LocalNetwork/本地网络隐私权限

升级至iOS 14 之后,每次首次打开一款App,都会弹出如下的提示框:

“EASEAPI”想要查找并连接到本地网络上的设备。 此App将可发现和连接到您所用网络上的设备

这是Apple新增的「LocalNetwork」(本地网络)隐私权限功能。本地网络实际上就是局域网,当移动设备连接到同一个WiFi热点时,即可组成一个局域网。在Apple设备中,使用Bonjour服务可以允许App便捷地发现本地的其它设备和服务并传播自己的服务。局域网组网的方式千差万别,几乎没有一个局域网看起来是完全一样的,这些信息可以被App用来创建「指纹」 ,从而获取定位,设备使用情况等隐私信息。

从iOS 14开始,Apple将允许用户控制哪些App可以访问本地网络。当关闭LocalNetwork权限后,App将无法连接到局域网的服务。

对于普通用户来说,关闭LocalNetwork权限后,App将无法直接在App内(使用AirPrint、AirPlay、AirDrop、HomeKit等系统服务不会受到影响)访问智能家居,本地打印机等,但并不会影响到对互联网的访问。可以在设置-隐私-本地网络中开启指定App的LocalNetwork权限。

对开发者来讲,一个很明显的影响就是App无法发起基于本地IP的网络请求。

error [-1009] Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline."

如果App有访问本地网络的功能,则开发者需要在Info.plist中新增NSLocalNetworkUsageDescription来描述使用本地网络的用途。

Support local network privacy in your app

WiFi私有地址

设备联网都需要有一个MAC地址。在iOS 14之前,iOS设备连接到不同的网络MAC地址都不会变化,都会显示真实的MAC地址。

如何查询iOS设备真实的Wi-Fi MAC地址

设置-通用-关于本机-无线局域网地址

在iOS 14中,用户可以针对指定Wi-Fi热点开启「私有地址」开关,开启后则会在本地网络中显示虚拟的无线局域网地址。连接到不同的Wi-Fi热点,无线局域网地址都会不同,且即使同一个Wi-Fi热点,无线局域网地址也会存在更新的情况。

PS:注意与CNCopyCurrentNetworkInfo获取的BSSID区别。

广告标识符IDFA的变化

iOS 14之前,只要我们在系统设置(默认是开启的)中开启了广告跟踪的权限,在所有的App都可以通过以下接口获取IDFA:

[[ASIdentifierManager sharedManager] advertisingIdentifier].UUIDString

而在iOS 14系统中(跟踪开关默认是关闭的),在确保打开的情况下,App需要先使用ATTrackingManager的requestTrackingAuthorizationWithCompletionHandler接口请求广告跟踪权限,用户授权之后才能获取IDFA信息。

在请求跟踪权限时,系统会弹窗提示,需要在Info.plist文件中新增NSUserTrackingUsageDescription来说明使用IDFA的用途。

Apple在2012年同样也是出于隐私保护的原因废弃了设备唯一标识符,启用广告标识符(IDFA)来帮助广告商跟踪监控广告投放效果。这次IDFA的变化对于依赖IDFA的广告商影响较大。为了让开发者有时间进行必要的更改,Apple推迟新隐私政策生效时间至明年初。在其生效之前,不申请权限直接获取IDFA也是可以的。

和IDFA类似的还有一个IDFV,可以参考IDFV(identifierForVendor)使用陷阱

其它隐私相关

  • 剪切板访问提示;
  • 相机和麦克风访问提示;
  • 相册新增「Limited Photo Library Access」模式;
  • 定位新增「Precise」开关,允许显示用户的大致位置。

其他文章:

Xcode 10/iOS 12适配
iOS 13 适配
iOS Sign With Apple实践
iOS Asset Catalog and Bundle