iOS 官方文档翻译iOS官方文档翻译iOS官方文档

App Programming Guide for iOS -&

2017-06-16  本文已影响12人  raingu24

支持用户隐私

为用户的隐私进行设计是很重要的。大多数iOS设备包含了用户不想泄露的隐私数据。如果你的应用访问或者不正确的使用这些数据,用户有可能删除你的应用。

只有根据适用的法律获得了用户知情同意的情况下,才能访问用户或者设备的数据。此外,采取适当的步骤保护用户和设备的数据,并对清晰说明你如何使用它们。这里有一些你可以采用的最佳实践:

表1-2罗列了iOS授权支持的资源和数据的类型。对于每个项,这表显示了目标字符串的键和用来检查授权状态的API。

重要:当你的应用试图使用一个被保护的项(item)时,系统会使用一个警告来提示用户,这个警告会询问是否允许访问。从iOS 10开始, Info.plist文件必须为每个这样的项包含目的字符串,显示在授权警告中。如果应用试图访问一个没有提供合适目的字符串的项时,应用退出。(此行为同样适用于iMessage 应用,它必须在访问设备的相机和麦克风之前包含表1-2罗列的相关键。)

对于受保护的数据和资源,iOS框架提供专门的API来检查并请求授权,如表1-2所描述的。

因为用户可以使用Setting(设置)应用来随时改变授权,所以要在访问这些项之前,检查授权状态。(一些功能,尤其是motion和HomeKit,没有提供专门的API来检查系统授权状态。详细内容参见表1-2。)

表1-2 通过系统授权设置保护数据和资源

数据或资源 目标字符串,Info.plist键 系统授权API
蓝牙外设 NSBluetoothPeripheralUsageDescription 使用这个CBCentralManager类的state属性来为蓝牙外设检查系统的授权状态。
日历数据 NSCalendarsUsageDescription 使用EKEventStore类的authorizationStatusForEntityType:方法来检查访问日历数据的系统授权状态。
相机 NSCameraUsageDescription 使用AVCaptureDeviceInput类的deviceInputWithDevice:error:方法来检查使用设备相机的系统授权状态。
通讯录 NSContactsUsageDescription 使用CNContactStore类的authorizationStatusForEntityType:方法来检查访问通讯录数据的系统授权状态。
健康分享 NSHealthShareUsageDescription 使用HKHealthStore类的authorizationStatusForType:方法来检查访问健康数据的系统授权状态。
使用requestAuthorizationToShareTypes:readTypes:completion:来请求许可。
健康更新 NSHealthUpdateUsageDescription 使用HKHealthStore 类的authorizationStatusForType:方法来检查访问健康数据的系统授权状态。
使用requestAuthorizationToShareTypes:readTypes:completion:方法来请求授权。
HomeKit NSHomeKitUsageDescription 当你的应用第一次试图访问HMHomeManager类的属性时,系统为用户呈现授权请求。
位置 NSLocationAlwaysUsageDescription, NSLocationWhenInUseUsageDescription 使用CLLocationManager类的authorizationStatus 方法来检查访问位置数据的系统授权状态。
使用requestWhenInUseAuthorization或requestAlwaysAuthorization方法来请求授权。
麦克风 NSMicrophoneUsageDescription 使用AVAudioSession 类的recordPermission方法来检查使用设备麦克风的系统授权状态。
使用requestRecordPermission:方法请求授权。
运动 NSMotionUsageDescription 检查来自CMMotionActivityManager类的queryActivityStartingFromDate:toDate:toQueue:withHandler:方法的CMErrorNotAuthorized错误,用来检查访问加速计的系统授权状态。
音乐和媒体库 NSAppleMusicUsageDescription 使用ALAssetsLibrary 类的authorizationStatus 方法来检查访问媒体资源的系统授权状态。
照片 NSPhotoLibraryUsageDescription 使用PHPhotoLibrary 类的authorizationStatus 方法来检查访问照片库的系统授权状态。
提醒 NSRemindersUsageDescription 使用EKEventStore 类的authorizationStatusForEntityType: 方法来检查访问提醒数据的系统授权状态。
Siri NSSiriUsageDescription 使用INPreferences 类的siriAuthorizationStatus 方法来检查使用Siri的系统授权状态。
使用requestSiriAuthorization:方法来为应用请求使用SiriKit的授权。
语音识别 NSSpeechRecognitionUsageDescription 使用SFSpeechRecognizer 类的 authorizationStatus方法来检查使用语音识别的系统授权状态。
使用requestAuthorization方法,来为应用使用语音识别请求授权。
TV提供商 NSVideoSubscriberAccountUsageDescription 使用 VSAccountManager 类的 checkAccessStatusWithOptions:completionHandler:方法来检查访问用户视频服务订购信息的系统授权状态。
使用enqueueResourceAuthorizationRequest:completionHandler:方法请求授权。

查看表1-2是了解应用隐私行为的起点,而不是一个全面的清单。这个表会随着iOS的升级而变化。

国际化你的应用

因为iOS应用会在很多国家发布,本地化你的应用内容能够帮助你得到更多的客户。和用户更喜欢使用用他们国家的语言进行了本地化的应用。当你的将用户界面内容视为资源文件的时候,本地化这些内容是相对简单的过程。

在你能够本地化你的内容之前,你必须使你的应用国际化,以便本地化的过程。国际化应用需要将任何用户界面内容分解为本地化资源文件,并提供用于存储的特定语言项目(.lproj)目录。它也意味着当使用特定语言和特定本地化内容的时候要使用合适的技术。

对于完全国际化应用,本地化过程创建新的一组特定语言资源文件,用来添加到你的项目中。一个典型的iOS应用需要有以下类型的资源文件的本地化版本:

关于国际化和本地化过程的信息,参见Internationalization and Localization Guide。关于在应用中使用资源文件的正确方式的信息,参见Resource Programming Guide。

上一篇下一篇

猜你喜欢

热点阅读