加入收藏 | 设为首页 | 会员中心 | 我要投稿 海南站长网 (https://www.0898zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 应用 > 正文

APP编程指南 (二) —— 应用程序必须实现的行为(一)

发布时间:2023-01-11 13:38:35 所属栏目:应用 来源:转载
导读: 版本记录版本号时间
V1.0
2018.05.29
前言
我们在做一个APP时候需要注意哪些方面呢,接下来我们就看一下APP编程指南。里面有些可能大家在平时编程中都经历过,但是再系统的了解下也不是坏事

版本记录版本号时间

V1.0

2018.05.29

前言

我们在做一个APP时候需要注意哪些方面呢,接下来我们就看一下APP编程指南。里面有些可能大家在平时编程中都经历过,但是再系统的了解下也不是坏事。感兴趣的可以看上面写的几篇。

1. APP编程指南 (一) —— 基本概览(一)

Expected App Behaviors - 应用程序必须实现的行为

每个新的Xcode项目都配置为在iOS模拟器或设备上立即运行。 但仅仅能够在设备上运行并不意味着您的应用程序已准备好在App Store上发布。 每个应用程序都需要一定量的定制以确保为用户提供良好的体验。 自定义的范围可以从为应用程序提供图标,到关于应用程序如何呈现和使用信息的架构级决策。 本章描述了所有应用程序预期要处理的行为,并且应该在规划过程中尽早考虑。

Providing the Required Resources - 提供所需的资源

您创建的每个应用都必须具有以下一组资源和元数据,才能在iOS设备上正确显示:

这些资源对于所有应用程序都是必需的,但不是您应该包含的唯一资源。默认情况下,Xcode在您的应用程序的Info.plist文件中不包含许多键。只有将特定功能合并到您的应用程序中时,大多数附加键才是重要的。例如,使用麦克风的应用程序应包含NSMicrophoneUsageDescription项,并向用户提供有关应用程序打算如何使用它的信息。

1. The App Bundle - App包

当你构建你的iOS应用程序时,Xcode将它打包成一个包。 一个包是文件系统中的一个目录,它将相关资源集中在一起。 iOS应用程序包包含应用程序可执行文件和支持资源文件,如应用程序图标,图像文件和本地化内容。表1-1列出了典型的iOS应用程序包的内容,用于演示目的称为MyApp。 此示例仅用于说明目的。 此表中列出的某些文件可能不会显示在您自己的应用程序包中。

Table 1-1 A typical app bundle

文件示例描述

App executable

MyApp

可执行文件包含应用程序的编译代码。 应用程序可执行文件的名称与您的应用程序名称减去.app扩展名相同。该文件是必需的。

The information property list file

Info.plist

Info.plist文件包含应用程序的配置数据。 系统使用这些数据来确定如何与应用进行交互。该文件是必需的,必须取名Info.plist。 有关更多信息,请参阅。

App icons

Icon.png、Icon@2x.png、Icon-Small.png、Icon-Small@2x.png

您的应用图标用于在设备的主屏幕上表示您的应用。 其他图标由系统在适当的地方使用。 带有@ 2x文件名的图标适用于带有Retina显示器的设备。应用程序图标是必需的。 有关指定图标图像文件的信息,请参阅。

Launch images

Default.png、Default-Portrait.png 、Default-Landscape.png

系统在启动应用程序时将此文件用作临时背景。 只要您的应用准备好显示其用户界面,它就会被删除。至少需要一个启动图像。 有关指定启动图像的信息,请参阅。

Storyboard files (or nib files)

MainBoard.storyboard

Storyboards包含应用在屏幕上呈现的视图和视图控制器。 故事板中的视图根据呈现它们的视图控制器进行组织。 故事板还标识将用户从一组视图转移到另一组视图的转换(称为segues)。主要故事板文件的名称在创建项目时由Xcode设置。 您可以通过为Info.plist文件中的UIMainStoryboardFile键指定一个不同的值来更改名称。)使用nib文件而不是storyboard的应用程序可以用NSMainNibFile键替换UIMainStoryboardFile键,并使用该键指定它们的主要nib文件。故事板(或nib文件)的使用是可选的,但建议使用。

Ad hoc distribution icon

iTunesArtwork

如果您要专门发布您的应用,请添加512 x 512像素版本的应用图标。 此图标通常由App Store根据您提交给iTunes Connect的资料提供。 但是,因为ad hoc分发的应用程序不通过App Store,您的图标必须出现在应用程序包中。 iTunes使用此图标来表示您的应用程序。 (如果您是以这种方式发布您的应用程序,则您指定的文件应该与提交给App Store的文件相同。)此图标的文件名必须为iTunesArtwork,且不得包含文件扩展名。 此文件是ad hoc分发所必需的,但在其他情况下是可选的。

Settings bundle

Settings.bundle

如果您想通过设置应用公开自定义应用首选项,则必须包含设置包。 该软件包包含用于定义应用程序首选项的属性列表数据和其他资源文件。 Settings应用程序使用此包中的信息来组装应用程序所需的界面元素。该bundle是可选的。 有关首选项和指定设置包的更多信息,请参阅 。

Nonlocalized resource files

sun.png、mydata.plist

非本地化资源包括应用程序使用的图像,声音文件,电影和自定义数据文件等内容。 所有这些文件都应放置在应用程序包的顶层。

Subdirectories for localized resources

en.lproj、fr.lproj、es.lproj

本地化资源必须放置在语言特定的项目目录中,其名称由ISO 639-1语言缩写和.lproj后缀组成。 (例如,en.lproj,fr.lproj和es.lproj目录包含用于英语,法语和西班牙语的本地化资源。)。一个iOS应用程序应该国际化,并为其支持的每种语言提供一个language.lproj目录。 除了提供应用程序自定义资源的本地化版本之外,还可以通过在特定于语言的项目目录中放置具有相同名称的文件来本地化应用程序图标,启动图像和设置图标。有关更多信息,请参阅。

注意:iOS应用程序包不能包含名为Resources的自定义目录。

有关iOS应用程序包结构的更多信息,请参阅。 有关如何从您的包中加载资源文件的信息,请参阅 。

2. The Information Property List File - 信息属性列表文件

Xcode使用项目的General,Capabilities和Info选项卡中的信息在编译时为您的应用程序生成信息属性列表(Info.plist)文件。 Info.plist文件是一个结构化文件,其中包含有关应用配置的重要信息。它由App Store和iOS用来确定您的应用程序的功能并定位关键资源。每个应用程序必须包含此文件。

尽管Xcode提供的Info.plist文件包含所有必需条目的默认值,但大多数应用程序都需要进行一些更改或添加。尽可能使用General和Capabilities选项卡指定应用程序的配置信息。这些选项卡包含可用于应用程序的最常用配置选项。如果在这些选项卡上没有看到特定选项,请使用Info选项卡。

对于Xcode不提供自定义配置界面的选项,您必须使用Xcode属性列表编辑器直接提供适当的键和值。Info选项卡的Custom iOS Target Properties部分包含要包含在Info.plist文件中的条目的摘要。默认情况下,Xcode显示预期功能的可读描述,但每个功能实际上都对应Info.plist文件中的唯一键。大多键都是可选的并且很少使用,但是在定义任何新项目时应该考虑一些键:

必需的设备功能部分包含有关应用程序运行所需的设备级功能的信息。 App Store使用此条目中的信息来确定您应用的功能,并防止它安装在不支持您的应用所需的功能的设备上。 有关更多信息,请参阅。

如果您的应用程序通过网络与服务器通话,则可以将应用程序使用Wi-Fi条目添加到项目的Info选项卡中。 该条目对应于Info.plist文件中的UIRequiresPersistentWiFi项。 将此项设置为YES可防止iOS在长时间处于非活动状态时关闭活动的Wi-Fi连接。 对于使用网络与服务器通信的所有应用程序,建议使用此密钥。

包含UINewsstandApp键以表明您的应用程序显示来自Newsstand的内容。

使用Info选项卡的Document Types部分指定您支持的文档格式的图标和UTI信息。 系统使用这些信息来识别能够处理特定文件类型的应用程序。 有关将文档支持添加到应用程序的更多信息,请参阅 。

使用Info选项卡的URL Types部分指定您的应用处理的自定义URL方案。 应用可以使用自定义URL scheme相互沟通。 有关如何实现对此功能的支持的更多信息,请参阅。

当访问用户数据或设备功能的应用存在隐私问题时,iOS将提示用户并代表您的应用请求许可。 应用程序必须通过Info.plist文件中定义的用途字符串向用户解释为什么需要访问。 如果您的应用尝试访问而未提供相应的用途字符串,则您的应用将退出。

描述了需要用户许可的数据和功能。的章节中描述了用途字符串。

有关可包含在Info.plist文件中的键和值的详细信息,请参阅 。

3. Declaring the Required Device Capabilities - 声明所需的设备功能

所有应用程序都必须声明它们需要运行的设备特定功能。 Xcode在项目的Info选项卡中包含必需的设备功能条目,并将其填入一些最低要求。您可以向此条目添加值以指定您的应用的附加要求。必需的设备功能条目对应于应用Info.plist文件中的UIRequiredDeviceCapabilities键。

UIRequiredDeviceCapabilities键的值是一个数组或字典,其中包含标识您的应用程序需要(或明确禁止)的功能的附加键。如果使用数组指定键的值,则键的存在表示该功能是必需的;缺少键表示该功能不是必需的,并且该应用程序可以在没有该功能的情况下运行。如果您指定了字典,则字典中的每个键都必须具有一个布尔值,该值指示该功能是必需还是禁止。值为true表示该功能是必需的,值为false表示该功能不能出现在设备上。如果给定的功能对于您的应用程序是可选的,请不要在字典中包含相应的键。

有关您可以为UIRequiredDeviceCapabilities键包含的值的详细信息,请参阅。

4. App Icons - App图标

每个应用程序都必须提供一个图标以显示在设备的主屏幕和App Store中。 应用程序可能实际上指定了几个不同的图标以用于不同的情况。 例如,应用程序可以提供一个小图标,用于显示搜索结果,并且可以为具有Retina显示器的设备提供高分辨率图标。

新的Xcode项目包含您的应用程序图标图像的图像资产条目。 要添加图标,请将相应的图像文件分配给项目的图像资源。 在构建时,Xcode会将相应的键添加到应用程序的Info.plist文件中,并将这些图像放入应用程序包中。

有关设计应用程序图标的信息,包括这些图标的大小,请参阅iOS Human Interface Guidelines。

5. App Launch (Default) Images - 应用程序启动(默认)图像

当系统首次在设备上启动应用程序时,它会在屏幕上暂时显示静态启动图像。该图像是您的应用程序的启动图像,它是您在Xcode项目中指定的资源。启动图像为用户提供即时反馈,表明您的应用已启动,同时为您的应用准备其初始用户界面。当您的应用程序的窗口已配置并准备好显示时,系统将为该窗口去除启动图像。

当您的应用的用户界面的最近快照可用时,相对应用的启动图像,系统优先使用快照。当您的应用从前台转换到后台时,系统会为您的应用的用户界面拍摄快照。当您的应用程序返回到前台时,它会尽可能使用该图像而不是启动图像。在用户杀了你的应用程序或你的应用程序长时间没有运行的情况下,系统会放弃快照并再次使用你的启动图像。

新的Xcode项目包含应用启动图像的图像资产条目。要添加启动图像,请将相应的图像文件添加到项目的图像资源中。在构建时,Xcode会将相应的键添加到应用程序的Info.plist文件中,并将这些图像放入应用程序包中。

有关设计应用的启动图像的信息,包括这些图像的大小,请参阅iOS Human Interface Guidelines。

Supporting User Privacy - 支持用户隐私

设计用户隐私很重要。 大多数iOS设备包含用户可能不想公开给应用程序或外部实体的个人数据。 如果您的应用访问或使用不当数据,用户可能会通过删除您的应用进行回应。

只有在用户根据适用法律获得知情同意后才能访问用户或设备数据。 另外,请采取适当措施保护用户和设备数据,并对使用方式保持透明。 以下是您可以采取的一些最佳做法:

加利福尼亚州检察长对移动隐私的建议:Privacy on the Go: Recommendations for the Mobile Ecosystem

这些报告为保护用户隐私提供了有用的建议。您还应该与贵公司的法律顾问审核这些文件。

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

重要提示:当您的应用尝试使用受保护的项目时,系统会提示用户提供访问权限的警报。 从iOS 10开始,Info.plist文件必须包含用于显示在权限警报中的每个此类项目的目标字符串。 如果您的应用尝试在未提供相应的目的字符串的情况下访问受保护的项目,则您的应用将退出。 (此行为同样适用于iMessage应用程序,在访问设备的摄像头或麦克风之前应用程序包,该应用程序必须包含表1-2中列出的相关键。)

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

由于用户可以随时使用设置更改授权,因此在访问任何这些项目之前请检查授权状态。 (有些功能,特别是Motion和HomeKit,没有提供检查系统授权状态的专用API,详情请参见表1-2)。

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

Data or resourcesPurpose-string Info.plist keysSystem authorization APIs

Bluetooth peripherals

使用CBCentralManager类的state属性来检查使用蓝牙外围设备的系统授权状态。

Calendar data

使用EKEventStore类的authorizationStatusForEntityType:方法来检查访问日历数据的系统授权状态。

Camera

使用AVCaptureDeviceInput类的deviceInputWithDevice:error:方法来检查使用设备摄像头的系统授权状态。

Contacts

使用CNContactStore类的authorizationStatusForEntityType:方法来检查用于访问联系人数据的系统授权状态。

Health sharing

使用HKHealthStore类的authorizationStatusForType:方法来检查访问健康数据的系统授权状态。要请求授权,请使用requestAuthorizationToShareTypes:readTypes:completion:方法。

Health updating

使用HKHealthStore类的authorizationStatusForType:方法来检查访问健康数据的系统授权状态。要请求授权,请使用requestAuthorizationToShareTypes:readTypes:completion:方法。

HomeKit

当您的应用程序首次尝试访问HMHomeManager类的属性时,系统会向用户提供授权请求。

Location

,

使用CLLocationManager类的authorizationStatus方法来检查访问位置数据的系统授权状态。要请求授权,请使用requestWhenInUseAuthorization或requestAlwaysAuthorization方法。

Microphone

使用AVAudioSession类的recordPermission方法来检查使用设备麦克风的系统授权状态。要请求授权,请使用requestRecordPermission:方法。

Motion

检查CMMotionActivityManager类的queryActivityStartingFromDate:toDate:toQueue:withHandler:方法中的CMErrorNotAuthorized错误,以检查加速度计访问的系统授权状态。

Music and the media library

使用ALAssetsLibrary类的authorizationStatus方法来检查访问媒体资产的系统授权状态。

Photos

使用PHPhotoLibrary类的authorizationStatus方法来检查访问照片库的系统授权状态。

Reminders

使用EKEventStore类的authorizationStatusForEntityType:方法来检查访问提醒数据的系统授权状态。

Siri

使用INPreferences类的siriAuthorizationStatus方法来检查使用Siri的系统授权状态。要请求授权您的应用程序使用SiriKit,请使用requestSiriAuthorization:方法。

Speech recognition

使用SFSpeechRecognizer类的 authorizationStatus方法来检查使用语音识别的系统授权状态。要请求您的应用使用语音识别的授权,请使用requestAuthorization方法。

TV provider

使用VSAccountManager类的checkAccessStatusWithOptions:completionHandler:方法来检查用于访问用户的视频服务订购信息的系统授权状态。要请求授权,请使用enqueueResourceAuthorizationRequest:completionHandler:方法。

将表1-2作为您的应用程序隐私行为的起点,而不是作为完全的清单,此表的内容会在iOS更新中演变。

Internationalizing Your App - 国际化您的应用程序

由于iOS应用分布在许多国家/地区,因此本地化应用的内容可以帮助您覆盖更多的客户。当用户使用本地语言进行本地化时,用户更有可能使用该应用。将面向用户的内容分解为资源文件时,将内容本地化是一个相对简单的过程。

在您可以本地化您的内容之前,您必须国际化您的应用程序以促进本地化过程。将您的应用程序国际化涉及将任何面向用户的内容分解为可本地化的资源文件并提供用于存储该内容的特定于语言的项目(.lproj)目录。这还意味着在使用特定于语言和特定于语言环境的内容时使用适当的技术(如date和number格式化)。

对于完全国际化的应用程序,本地化过程将创建新的特定于语言的资源文件集,供您添加到项目中。典型的iOS应用程序需要以下类型的资源文件的本地化版本:

有关国际化和本地化过程的信息,请参阅。有关在应用程序中使用资源文件的正确方法的信息,请参阅。

后记

本篇主要介绍了应用程序必须实现的行为,感兴趣的给个赞和关注~~~

(编辑:海南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章