關(guān)于iOS應(yīng)用程序架構(gòu)
應(yīng)用程序需要與iOS一起工作沐寺,以確保他們提供出色的用戶體驗查剖。 除了為您的應(yīng)用程序的設(shè)計和用戶界面設(shè)計一個很好的設(shè)計,一個偉大的用戶體驗包含許多其他因素。 用戶期望iOS應(yīng)用程序能夠快速響應(yīng)尸折,同時期待應(yīng)用程序盡可能少地使用電能。應(yīng)用程序針對當(dāng)前設(shè)備但是需要支持所有最新的iOS設(shè)備 殷蛇。開始執(zhí)行這些行為似乎有點困難实夹,但是iOS能提供幫助。
該文檔突出顯示了使您的應(yīng)用程序在iOS上正常運行的核心行為粒梦。 您可能不會實現(xiàn)本文檔中描述的每個功能亮航,但您應(yīng)該為您創(chuàng)建的每個項目考慮這些功能。
注意:開發(fā)iOS應(yīng)用程序需要安裝了iOS SDK的基于Intel的Macintosh計算機匀们。 有關(guān)如何獲取iOS SDK的信息缴淋,請轉(zhuǎn)到iOS Dev Center。
簡述
當(dāng)您準(zhǔn)備好將您的想法轉(zhuǎn)化為應(yīng)用程序時,您需要了解系統(tǒng)和應(yīng)用之間發(fā)生的互動重抖。
應(yīng)用程序期望支持的主要功能
該系統(tǒng)期望每個應(yīng)用程序都具有一些特定的資源和配置數(shù)據(jù)露氮,例如應(yīng)用程序圖標(biāo)和有關(guān)應(yīng)用程序功能的信息。 Xcode為每個新項目提供一些信息钟沛,但必須提供資源文件畔规,并且在提交應(yīng)用程序之前必須確保項目中的信息正確無誤。
相關(guān)章節(jié):預(yù)期應(yīng)用行為 Expected App Behaviors
應(yīng)用程序遵循良好的執(zhí)行路徑
從用戶啟動應(yīng)用程序到它退出的時候恨统,應(yīng)用程序遵循一個定義良好的執(zhí)行路徑叁扫。在應(yīng)用程序的生命周期中,它可以在前臺和后臺執(zhí)行之間轉(zhuǎn)換畜埋,它可以被終止和重新啟動莫绣,并且可以暫時進入睡眠狀態(tài)。每次轉(zhuǎn)換到新的狀態(tài)時由捎,應(yīng)用程序的期望都會改變兔综。前臺應(yīng)用程序幾乎可以做任何事情,但后臺應(yīng)用程序必須盡可能少地執(zhí)行狞玛。您可以使用狀態(tài)轉(zhuǎn)換來相應(yīng)地調(diào)整應(yīng)用的行為软驰。
相關(guān)章節(jié):應(yīng)用程序生命周期,處理應(yīng)用程序狀態(tài)轉(zhuǎn)換的策略 The App Life Cycle,Strategies for Handling App State Transitions
應(yīng)用程序必須在多任務(wù)環(huán)境中高效運行
電池壽命對于用戶來說非常重要心肪,性能锭亏,響應(yīng)能力和良好的用戶體驗也是如此。盡量減少應(yīng)用程序的電池使用量硬鞍,確保用戶可以全天候運行應(yīng)用程序慧瘤,而無需為設(shè)備充電,但啟動和準(zhǔn)備快速運行也很重要固该。 iOS多任務(wù)實現(xiàn)提供良好的電池壽命锅减,而不會犧牲用戶期望的響應(yīng)性和用戶體驗,但運行起來需要應(yīng)用程序采用系統(tǒng)提供的行為伐坏。
相關(guān)章節(jié):后臺執(zhí)行怔匣,處理應(yīng)用程序狀態(tài)轉(zhuǎn)換的策略 Background Execution,Strategies for Handling App State Transitions
應(yīng)用程序之間的通信遵循具體的途徑
為了安全起見,iOS應(yīng)用程序在沙盒中運行桦沉,并且減少與其他應(yīng)用程序的交互每瞒。當(dāng)您想與系統(tǒng)中的其他應(yīng)用程序進行通信時,有具體的相關(guān)方法纯露。
相關(guān)章節(jié):應(yīng)用間通信 Inter-App Communication
性能調(diào)整對于應(yīng)用程序來說非常重要
應(yīng)用程序執(zhí)行的每個任務(wù)都有與之相關(guān)聯(lián)的電力成本剿骨。不會一次充電運行幾天而很快耗盡用戶電池的應(yīng)用程序會產(chǎn)生消極的用戶體驗抗悍,并且更有可能被刪除院溺。所以要注意不同操作的成本,并利用系統(tǒng)提供的省電措施够挂。
相關(guān)章節(jié):性能提示 Performance Tips
如何使用本文檔
本文檔不適合新手。對于準(zhǔn)備好將其應(yīng)用程序發(fā)布到App Store之前的開發(fā)人員荞膘。使用此文檔作為指導(dǎo)罚随,以了解應(yīng)用程序如何與系統(tǒng)進行交互,以及必須做什么才能使這些交互順利進行羽资。
先決條件
本文檔提供有關(guān)iOS應(yīng)用程序架構(gòu)的詳細(xì)信息淘菩,并向您展示如何實現(xiàn)許多應(yīng)用級功能。本書假設(shè)您已經(jīng)安裝了iOS SDK屠升,配置了開發(fā)環(huán)境潮改,并了解了在Xcode中創(chuàng)建和實現(xiàn)應(yīng)用程序的基礎(chǔ)知識。
如果您是iOS應(yīng)用程序開發(fā)的新手腹暖,請閱讀開始開發(fā)iOS Apps(Swift)Start Developing iOS Apps (Swift)汇在。該文檔為開發(fā)過程提供了一步一步的介紹,以幫助您快速上手脏答。它還包括一個動手教程糕殉,從開始到結(jié)束,引導(dǎo)您完成應(yīng)用創(chuàng)建過程殖告,向您展示如何創(chuàng)建一個簡單的應(yīng)用程序并快速運行阿蝶。
也可以看看
如果您正在學(xué)習(xí)iOS,請閱讀iOS技術(shù)概述iOS Technology Overview黄绩,您可以將其納入iOS應(yīng)用程序技術(shù)羡洁。
預(yù)期的應(yīng)用行為
每個新的Xcode項目配置為立即在iOS模擬器或相應(yīng)設(shè)備上運行。但只需能夠在設(shè)備上運行并不意味著您的應(yīng)用程序已準(zhǔn)備好在App Store上發(fā)布爽丹。每個應(yīng)用程序都需要定制化筑煮,以確保用戶有良好的體驗≡列可以為您的應(yīng)用程序提供自定義的圖標(biāo)真仲,用更好的想法來制定有關(guān)應(yīng)用程序使用界面。本章介紹了您應(yīng)該在早期規(guī)劃的過程中考慮所有應(yīng)用程序預(yù)期行為初澎。
提供所需資源
您創(chuàng)建的每個應(yīng)用都必須具有以下資源和元數(shù)據(jù)集袒餐,才能在iOS設(shè)備上正確顯示:
信息屬性列表文件。
?Info.plist文件包含您的應(yīng)用程序的元數(shù)據(jù)谤狡,系統(tǒng)用于與您的應(yīng)用程序交互。 Xcode將根據(jù)項目的配置和設(shè)置自動創(chuàng)建此文件卧檐。如果要直接查看或修改此文件的內(nèi)容墓懂,可以從項目的信息選項卡中進行修改。有關(guān)編輯此文件的信息以及有關(guān)應(yīng)包含哪些鍵的建議霉囚,請參閱信息屬性列表文件捕仔。The Information Property List File.
應(yīng)用程序所需功能的聲明。
每個應(yīng)用程序必須聲明運行所需的硬件功能或特性。 App Store使用此信息來確定用戶是否可以在特定設(shè)備上運行您的應(yīng)用榜跌。您可以使用項目的“信息”選項卡中的“必需設(shè)備”功能條目來編輯應(yīng)用程序的要求列表闪唆。有關(guān)如何配置此密鑰的信息,請參閱聲明所需的設(shè)備功能钓葫。Declaring the Required Device Capabilities
一個或多個圖標(biāo)悄蕾。
系統(tǒng)在用戶設(shè)備的主屏幕上顯示您的應(yīng)用程序圖標(biāo)。系統(tǒng)還可以在“設(shè)置”應(yīng)用程序中使用其他版本的圖標(biāo)础浮,或者在顯示搜索結(jié)果時使用帆调。有關(guān)如何指定應(yīng)用程序圖標(biāo)的信息,請參閱應(yīng)用程序圖標(biāo)豆同。App Icons
一個或多個啟動圖像番刊。
啟動應(yīng)用程序后,系統(tǒng)會顯示一個臨時圖片影锈,直到應(yīng)用程序能夠顯示其用戶界面芹务。這個臨時圖片是您應(yīng)用程序的啟動圖片,它向用戶提供應(yīng)用程序啟動的即時反饋鸭廷,并很快消失枣抱。您必須為應(yīng)用程序提供至少一個啟動圖片,您可以提供其他啟動圖片以解決具體情況靴姿。有關(guān)創(chuàng)建啟動圖片的信息沃但,請參閱應(yīng)用啟動(默認(rèn))圖片。App Launch (Default) Images
這些資源是所有應(yīng)用程序所必需的佛吓,但不是您應(yīng)該包含的唯一資源宵晚。默認(rèn)情況下,Xcode不包含在應(yīng)用的Info.plist文件中的許多鍵维雇。只有將特定功能合并到應(yīng)用程序中淤刃,一些附加鍵才顯得重要。例如吱型,使用麥克風(fēng)的應(yīng)用程序應(yīng)包含NSMicrophoneUsageDescription鍵逸贾,并向用戶提供有關(guān)應(yīng)用程序如何使用它的信息。
應(yīng)用程序包
當(dāng)您構(gòu)建您的iOS應(yīng)用程序時津滞,Xcode將其作為捆綁包進行打包铝侵。bundle 是文件系統(tǒng)中的一個目錄,將相關(guān)資源組合在一起触徐。 iOS應(yīng)用程序包包含應(yīng)用程序可執(zhí)行文件和支持的資源文件咪鲜,如應(yīng)用程序圖標(biāo),圖像文件和本地化內(nèi)容撞鹉。表1-1列出了典型的iOS應(yīng)用程序包的內(nèi)容疟丙,為了演示的目的颖侄,該應(yīng)用程序捆綁包稱為MyApp。此示例僅用于說明目的享郊。本表中列出的某些文件可能不會出現(xiàn)在您自己的應(yīng)用程序包中览祖。
表1-1典型的應(yīng)用程序包
?應(yīng)用程序可執(zhí)行文件 App executable
MyApp
可執(zhí)行文件包含應(yīng)用程序的編譯代碼。應(yīng)用程序的可執(zhí)行文件的名稱與您的應(yīng)用程序名稱相同炊琉。減去.app擴展名展蒂。
此文件是必需的。
信息屬性列表文件
Info.plist
Info.plist文件包含應(yīng)用程序的配置數(shù)據(jù)温自。系統(tǒng)使用這些數(shù)據(jù)來確定如何與應(yīng)用程序交互玄货。
此文件是必需的,必須稱為Info.plist悼泌。有關(guān)詳細(xì)信息松捉,請參閱信息屬性列表文件。
應(yīng)用程式圖示
icon.png
Icon@2x.png
ICON-Small.png
Icon-Small@2x.png
您的應(yīng)用圖標(biāo)用于在設(shè)備的主屏幕上表示您的應(yīng)用馆里。系統(tǒng)在適當(dāng)?shù)牡胤绞褂闷渌麍D標(biāo)隘世。文件名中帶有@ 2x的圖標(biāo)適用于帶有Retina顯示器的設(shè)備。
需要應(yīng)用圖標(biāo)鸠踪。有關(guān)指定圖標(biāo)圖像文件的信息丙者,請參閱應(yīng)用程序圖標(biāo)。
啟動圖像
Default.png
Default Portrait.png?
Default Landscape.png?
系統(tǒng)在您的應(yīng)用程序啟動時將此文件用作臨時背景营密。只要您的應(yīng)用程序準(zhǔn)備好顯示其用戶界面械媒,它就會被刪除。
至少需要一個啟動映像评汰。有關(guān)指定啟動映像的信息纷捞,請參閱應(yīng)用啟動(默認(rèn))圖片。App Launch (Default) Images.
故事板文件(或nib文件)
MainBoard.storyboard
故事板包含應(yīng)用程序在屏幕上顯示的視圖和視圖控制器被去。故事板中的視圖根據(jù)呈現(xiàn)它們的視圖控制器進行組織主儡。故事板還會識別將用戶從一組視圖轉(zhuǎn)移到另一組視圖的轉(zhuǎn)換(稱為段 segues )。
當(dāng)您創(chuàng)建項目時惨缆,主要故事板文件的名稱由Xcode設(shè)置糜值。您可以通過為Info.plist文件中的UIMainStoryboardFile鍵分配不同的值來更改名稱。)使用nib文件而不是故事板的應(yīng)用程序可以使用NSMainNibFile鍵替換UIMainStoryboardFile鍵坯墨,并使用該鍵指定其主要nib文件寂汇。
故事板(或nib文件)的使用是可選的,但推薦使用捣染。
臨時分發(fā)圖標(biāo)
iTunesArtwork
如果您正在分發(fā)您的應(yīng)用程序健无,請?zhí)砑?12 x 512像素版本的應(yīng)用程序圖標(biāo)。該圖標(biāo)通常由App Store從您提交給iTunes Connect的資料提供液斜。但是累贤,由于分發(fā)的應(yīng)用程序不會通過App Store,您的圖標(biāo)必須存在于應(yīng)用程序包中少漆。 iTunes使用此圖標(biāo)表示您的應(yīng)用程序臼膏。 (如果您以這種方式分發(fā)您的應(yīng)用程序,則您指定的文件應(yīng)與App Store中提交的文件相同)示损。
該圖標(biāo)的文件名必須是iTunesArtwork渗磅,不得包含文件擴展名。此文件是臨時分發(fā)所必需的检访,否則為其他選項始鱼。
設(shè)置包
Settings.bundle
如果要通過“設(shè)置”應(yīng)用程序公開自定義應(yīng)用程序首選項,則必須包含設(shè)置包脆贵。此軟件包包含屬性列表數(shù)據(jù)和定義應(yīng)用程序首選項的其他資源文件医清。 “設(shè)置”應(yīng)用程序使用此包中的信息來組合應(yīng)用程序所需的界面元素。
此捆綁是可選的卖氨。有關(guān)首選項和指定設(shè)置包的詳細(xì)信息会烙,請參閱首選項和設(shè)置編程指南。Preferences and Settings Programming Guide.
非本地化資源文件
sun.png
mydata.plist
非本地化資源包括您的應(yīng)用使用的圖像筒捺,聲音文件柏腻,電影和自定義數(shù)據(jù)文件。所有這些文件應(yīng)該放置在應(yīng)用程序包的頂層系吭。
本地化資源的子目錄
en.lproj
fr.lproj
es.lproj
必須將本地化資源放置在特定于語言的項目目錄中五嫂,其名稱由ISO 639-1語言縮寫加上.lproj后綴組成。 (例如肯尺,en.lproj沃缘,fr.lproj和es.lproj目錄包含本地化為英文,法文和西班牙文的資源蟆盹。)
iOS應(yīng)用應(yīng)該是國際化的孩灯,并且為它支持的每種語言都有一個language.lproj目錄。除了提供應(yīng)用程序自定義資源的本地化版本之外逾滥,還可以通過在特定于語言的項目目錄中放置具有相同名稱的文件來本地化應(yīng)用程序圖標(biāo)峰档,啟動映像和設(shè)置圖標(biāo)。
有關(guān)更多信息寨昙,請參閱國際化您的應(yīng)用程序讥巡。Internationalizing Your App.
注意:iOS應(yīng)用程序包不能包含名為“資源”的自定義目錄。
有關(guān)iOS應(yīng)用程序包結(jié)構(gòu)的更多信息舔哪,請參閱“捆綁編程指南”Bundle Programming Guide欢顷。有關(guān)如何從包中加載資源文件的信息,請參閱資源編程指南捉蚤。Resource Programming Guide
信息屬性列表文件
Xcode使用您項目的“常規(guī)”General 抬驴,“功能”Capabilities 和“信息”Info 選項卡中的信息炼七,以在編譯時生成應(yīng)用程序的信息屬性列表(Info.plist)文件。 Info.plist文件是一個結(jié)構(gòu)化文件布持,其中包含有關(guān)應(yīng)用程序配置的重要信息豌拙。它由App Store和iOS用于確定您的應(yīng)用程序的功能并查找關(guān)鍵資源。每個應(yīng)用都必須包含此文件题暖。
雖然Xcode提供的Info.plist文件包含所有必需條目的默認(rèn)值按傅,但大多數(shù)應(yīng)用程序需要進行一些更改或添加。只要有可能就使用“常規(guī)”和“功能”選項卡來指定應(yīng)用程序的配置信息胧卤。這些選項卡包含可用于應(yīng)用程序的最常見的配置選項唯绍。如果在這些選項卡中沒有看到特定選項,請使用“信息”選項卡枝誊。
對于Xcode不提供自定義配置界面的選項况芒,您必須使用Xcode屬性列表編輯器直接提供適當(dāng)?shù)逆I和值。 “信息”選項卡的“自定義iOS目標(biāo)屬性”部分包含要包含在Info.plist文件中的條目的摘要侧啼。默認(rèn)情況下牛柒,Xcode顯示預(yù)期功能的可讀描述,但每個功能實際上對應(yīng)于Info.plist文件中的唯一鍵痊乾。大多數(shù)鍵是可選的皮壁,很少使用,但在定義任何新項目時哪审,您應(yīng)該考慮幾個鍵:
在“信息”選項卡中聲明應(yīng)用程序所需的功能蛾魄。所需的設(shè)備功能部分包含有關(guān)您的應(yīng)用程序運行所需的設(shè)備級功能的信息。 App Store使用此條目中的信息來確定應(yīng)用程序的功能湿滓,并防止將其安裝在不支持應(yīng)用程序功能的設(shè)備上滴须。有關(guān)詳細(xì)信息,請參閱聲明所需的設(shè)備功能叽奥。Declaring the Required Device Capabilities
需要持續(xù)Wi-Fi連接的應(yīng)用程序必須事先聲明扔水。如果您的應(yīng)用程序與網(wǎng)絡(luò)上的服務(wù)器通信,則可以將應(yīng)用程序使用Wi-Fi條目添加到項目的“信息”選項卡朝氓。此條目對應(yīng)于Info.plist文件中的UIRequiresPersistentWiFi鍵魔市。將此鍵設(shè)置為YES將阻止iOS在長時間不活動時關(guān)閉活動的Wi-Fi連接。對于使用網(wǎng)絡(luò)與服務(wù)器進行通信的所有應(yīng)用程序赵哲,建議使用此密鑰待德。
報亭應(yīng)用程序必須聲明自己。包括UINewsstandApp密鑰枫夺,以表明您的應(yīng)用程序提供了報亭應(yīng)用程序的內(nèi)容将宪。
定義自定義文檔類型的應(yīng)用程序必須聲明這些類型。使用“信息”選項卡的“文檔類型”部分為您支持的文檔格式指定圖標(biāo)和UTI信息。系統(tǒng)使用此信息來識別能夠處理特定文件類型的應(yīng)用程序较坛。有關(guān)向您的應(yīng)用程序添加文檔支持的更多信息印蔗,請參閱基于文檔的iOS應(yīng)用程序編程指南。Document-Based App Programming Guide for iOS.
應(yīng)用程序可以聲明他們支持的任何自定義URL方案燎潮。使用“信息”選項卡的“URL類型”部分來指定應(yīng)用程序處理的自定義URL方案喻鳄。應(yīng)用程序可以使用自定義URL方案進行通信。有關(guān)如何實現(xiàn)對此功能的支持的更多信息确封,請參閱使用URL方案與Apps進行通信。Using URL Schemes to Communicate with Apps
應(yīng)用程序必須提供用于訪問用戶數(shù)據(jù)和某些應(yīng)用程序功能的目的字符串(有時稱為“使用說明”)再菊。當(dāng)有關(guān)于訪問用戶數(shù)據(jù)或設(shè)備功能的應(yīng)用程序存在隱私權(quán)時爪喘,iOS會提示用戶并代表您的應(yīng)用程序請求許可。應(yīng)用程序必須通過在其Info.plist文件中定義的目的字符串向用戶解釋為什么需要訪問纠拔。如果您的應(yīng)用嘗試在沒有提供相應(yīng)的目的字符串的情況下訪問秉剑,則您的應(yīng)用程序?qū)⑼顺觥?/p>
需要用戶許可的數(shù)據(jù)和功能如表1-2所示。Purpose strings are described in theCocoa Keyschapter ofInformation Property List Key Reference.
有關(guān)可以包含在Info.plist文件中的鍵和值的詳細(xì)信息稠诲,請參閱信息屬性列表鍵參考侦鹏。Information Property List Key Reference
聲明所需的設(shè)備功能
所有應(yīng)用程序必須聲明其運行所需設(shè)備的特定功能。 Xcode包括項目信息選項卡中的必需設(shè)備功能條目臀叙,并填寫一些最低要求略水。您可以向此條目添加值以指定應(yīng)用程序的其他要求。所需的設(shè)備功能條目對應(yīng)于應(yīng)用的Info.plist文件中的UIRequiredDeviceCapabilities密鑰劝萤。
UIRequiredDeviceCapabilities鍵的值是數(shù)組或字典渊涝,其中包含標(biāo)識應(yīng)用程序需要的功能的其他鍵(或明確禁止)。如果使用數(shù)組指定鍵的值床嫌,則鍵的存在表示該功能是必需的;沒有鍵表示該功能不是必需的跨释,并且應(yīng)用程序可以在沒有它的情況下運行。如果您指定字典厌处,字典中的每個鍵都必須有一個布爾值鳖谈,表示該功能是必需還是被禁止。值為true表示功能是必需的阔涉,值為false表示該功能不能在設(shè)備上顯示缆娃。如果給定的功能是您的應(yīng)用程序可選的,請勿在字典中包含相應(yīng)的鍵洒敏。
有關(guān)可以為UIRequiredDeviceCapabilities鍵包含的值的詳細(xì)信息龄恋,請參閱信息屬性列表鍵參考。Information Property List Key Reference
應(yīng)用圖標(biāo)
每個應(yīng)用程序必須提供一個圖標(biāo)顯示在設(shè)備的主屏幕和App Store中凶伙。一個應(yīng)用程序?qū)嶋H上可以指定幾個不同的圖標(biāo)郭毕,以便在不同的情況下使例如,當(dāng)顯示搜索結(jié)果時函荣,應(yīng)用程序可以提供一個小圖標(biāo)显押,并且可以為Retina顯示器的設(shè)備提供高分辨率圖標(biāo)扳肛。
新的Xcode項目包括應(yīng)用程序圖標(biāo)圖像的圖像資源條目。要添加圖標(biāo)乘碑,請將相應(yīng)的圖像文件分配給項目的圖像資源挖息。在構(gòu)建時,Xcode會將相應(yīng)的密鑰添加到應(yīng)用的Info.plist文件中兽肤,并將圖像放置在應(yīng)用程序包中套腹。
有關(guān)設(shè)計應(yīng)用圖標(biāo)(包括這些圖標(biāo)的大小)的信息资铡,請參閱iOS人機界面指南电禀。iOS Human Interface Guidelines
應(yīng)用啟動(默認(rèn))圖像
當(dāng)系統(tǒng)首次在設(shè)備上啟動應(yīng)用程序時,它會在屏幕上臨時顯示靜態(tài)啟動映像笤休。這個圖像是您應(yīng)用程序的啟動映像尖飞,它是您在Xcode項目中指定的資源。啟動圖像為用戶提供應(yīng)用程序啟動的即時反饋店雅,同時讓應(yīng)用程序準(zhǔn)備初始用戶界面政基。當(dāng)您的應(yīng)用程序的窗口已配置并準(zhǔn)備好顯示時,系統(tǒng)會切換該窗口的啟動圖片闹啦。
當(dāng)您的應(yīng)用程序的用戶界面的最新快照可用時沮明,系統(tǒng)會更喜歡使用該映像作為應(yīng)用程序的啟動映像。當(dāng)您的應(yīng)用程序從前臺轉(zhuǎn)換到后臺時亥揖,系統(tǒng)會收到應(yīng)用程序用戶界面的快照珊擂。當(dāng)您的應(yīng)用程序返回到前臺時,盡可能使用該映像而不是啟動映像费变。如果用戶已經(jīng)殺死了您的應(yīng)用程序摧扇,或者您的應(yīng)用程序未運行很長時間,則系統(tǒng)將放棄快照挚歧,并再次依賴于啟動映像扛稽。
新的Xcode項目包括您的應(yīng)用程序啟動圖像的圖像資源條目。要添加啟動圖片滑负,請將相應(yīng)的圖片文件添加到項目的圖片資產(chǎn)(image assets)在张。在構(gòu)建時,Xcode會將相應(yīng)的密鑰添加到應(yīng)用的Info.plist文件中矮慕,并將圖像放置在應(yīng)用程序包中帮匾。
有關(guān)設(shè)計應(yīng)用程序啟動映像(包括這些映像的大小)的信息痴鳄,請參閱“iOS人機界面指南”瘟斜。iOS Human Interface Guidelines
支持用戶隱私
設(shè)計用戶隱私很重要。大多數(shù)iOS設(shè)備都包含用戶可能不想暴露給應(yīng)用或外部實體的個人數(shù)據(jù)。如果您的應(yīng)用訪問或不正確地使用數(shù)據(jù)螺句,則用戶可能會通過刪除您的應(yīng)用虽惭。
只有在根據(jù)適用法律獲得的用戶知情同意的情況下才能訪問用戶或設(shè)備數(shù)據(jù)。此外蛇尚,采取適當(dāng)步驟保護用戶和設(shè)備數(shù)據(jù)芽唇,并對您如何使用它們進行透明化。以下是您可以采取的一些最佳做法:
審查政府或行業(yè)來源的指導(dǎo)方針取劫,包括以下文件:
聯(lián)邦貿(mào)易委員會關(guān)于移動隱私的報告:移動隱私披露:通過透明度建立信任匆笤。
歐盟數(shù)據(jù)保護委員對移動應(yīng)用數(shù)據(jù)保護的意見:http://ec.europa.eu/justice/data-protection/article-29/documentation/opinion-recommendation/files/2013/wp202_en.pdf
日本內(nèi)政部智能手機隱私舉措:
智能手機隱私計劃(2012):
英文:http://www.soumu.go.jp/main_sosiki/joho_tsusin/eng/presentation/pdf/Initiative.pdf
日語:http://www.soumu.go.jp/main_content/000171225.pdf
智能手機隱私計劃II(2013):
英文:http://www.soumu.go.jp/main_sosiki/joho_tsusin/eng/presentation/pdf/Summary_II.pdf
日語:http://www.soumu.go.jp/main_content/000247654.pdf
加利福尼亞州總檢察長關(guān)于移動隱私的建議:隱私權(quán):移動生態(tài)系統(tǒng)的建議
這些報告為保護用戶隱私提供了有用的建議。您還應(yīng)該與公司的法律顧問一起審查這些文件谱邪。
在您的應(yīng)用程序需要數(shù)據(jù)時疚膊,請求訪問受iOS系統(tǒng)授權(quán)設(shè)置保護的敏感用戶或設(shè)備數(shù)據(jù)。您必須在應(yīng)用程序的Info.plist文件中提供用途字符串(有時稱為使用說明字符串)虾标,以解釋您的應(yīng)用程序需要您嘗試訪問的數(shù)據(jù)或資源的原因。由iOS系統(tǒng)授權(quán)設(shè)置保護的數(shù)據(jù)包括位置灌砖,聯(lián)系人璧函,日歷活動,提醒基显,照片蘸吓,媒體和許多其他類型;參見表1-2。在用戶未授權(quán)訪問所請求的數(shù)據(jù)的情況下提供合理的回退行為撩幽。
與用戶透明地了解他們的數(shù)據(jù)將如何使用库继。例如,當(dāng)您將應(yīng)用程序提交到App Store時窜醉,請將您的隱私政策或聲明的URL指定為iTunes Connect元數(shù)據(jù)的一部分宪萄。您可能還想在您的應(yīng)用說明中總結(jié)該政策或聲明。
有關(guān)在iTunes Connect中提供應(yīng)用隱私政策的更多信息榨惰,請參閱在iTunes Connect中添加應(yīng)用程序拜英。
給用戶控制其用戶或設(shè)備數(shù)據(jù)。提供設(shè)置琅催,以便用戶可以根據(jù)需要禁用對某些類型的敏感信息的訪問居凶。
請求并使用完成給定任務(wù)所需的最少量的用戶或設(shè)備數(shù)據(jù)。不要因為不明顯的原因?qū)で笤L問或收集數(shù)據(jù)藤抡,因為不必要的原因侠碧,或者您認(rèn)為以后可能會有用。
采取合理的步驟來保護您在應(yīng)用程序中收集的用戶和設(shè)備數(shù)據(jù)缠黍。在本地存儲此類信息時弄兜,請嘗試使用iOS數(shù)據(jù)保護功能(使用“使用磁盤加密保護數(shù)據(jù)”中的描述)將其存儲為加密格式。通過網(wǎng)絡(luò)發(fā)送用戶或設(shè)備數(shù)據(jù)時,使用應(yīng)用傳輸安全性(如NSAppTransportSecurity所述)挨队。
如果您的應(yīng)用程序使用ASIdentifierManager類谷暮,則必須遵守其advertisingTrackingEnabled屬性的值。如果用戶將該屬性設(shè)置為否盛垦,則僅對有限廣告目的使用ASIdentifierManager類湿弦。 “有限廣告用途”是指頻次上限,歸因腾夯,轉(zhuǎn)換事件颊埃,估計唯一用戶數(shù)量,廣告欺詐檢測蝶俱,僅用于廣告目的的調(diào)試班利,以及Apple可能允許的廣告支持API在文檔中可能允許的其他用途。
如果還沒有這樣做榨呆,請停止使用由UIDevice類的uniqueIdentifier屬性提供的唯一設(shè)備標(biāo)識符(UDID)罗标。該屬性在iOS 5.0中已被棄用,App Store不接受使用該標(biāo)識符的新應(yīng)用或應(yīng)用更新积蜻。相反闯割,應(yīng)用程序應(yīng)該根據(jù)需要使用UIDevice類的identifierForVendor屬性或ASIdentifierManager類的advertisingIdentifier屬性。
如果您的應(yīng)用程序支持音頻輸入竿拆,請將音頻會話配置為僅在實際計劃開始錄制時進行錄制宙拉。如果您不打算馬上錄制,請勿在啟動時配置您的音頻會話進行錄制丙笋。當(dāng)應(yīng)用程序配置他們的音頻會話進行錄制時谢澈,該系統(tǒng)會提醒用戶,并為用戶提供禁用應(yīng)用程序錄制的選項御板。
表1-2列出了iOS支持的資源和數(shù)據(jù)授權(quán)類型锥忿。對于每個項目,表格顯示用途字符串密鑰和用于檢查授權(quán)狀態(tài)的API稳吮。
重要提示:當(dāng)您的應(yīng)用程序嘗試使用受保護的項目時缎谷,系統(tǒng)會提示用戶提示要求訪問的權(quán)限。從iOS 10開始灶似,Info.plist文件必須包含用于顯示在權(quán)限警報中的每個這樣的項目的用途字符串列林。如果您的應(yīng)用程序嘗試訪問受保護的項目,而您沒有提供相應(yīng)的目的字符串酪惭,則應(yīng)用程序?qū)⑼顺觥?(此行為同樣適用于iMessage應(yīng)用程序希痴,在應(yīng)用程序訪問設(shè)備的相機或麥克風(fēng)之前必須包含表1-2中列出的相關(guān)鍵。)
對于一些受保護的數(shù)據(jù)和資源春感,iOS框架提供專門的API來檢查和請求授權(quán)砌创,如表1-2所示虏缸。
由于用戶可以隨時使用“設(shè)置”來更改授權(quán),請在訪問任何這些項目之前檢查授權(quán)狀態(tài)嫩实。 (某些功能刽辙,特別是運動和HomeKit,不提供用于檢查系統(tǒng)授權(quán)狀態(tài)的專用API甲献,具體請參見表1-2)
表1-2受系統(tǒng)授權(quán)設(shè)置保護的數(shù)據(jù)和資源
查看表1-2作為應(yīng)用程序隱私行為的起點宰缤,而不是一個全面的清單。此表的內(nèi)容隨iOS更新而變化晃洒。
國際化您的應(yīng)用程序
由于iOS應(yīng)用程序分布在許多國家/地區(qū)慨灭,因此本地化應(yīng)用的內(nèi)容可以幫助您吸引更多客戶。當(dāng)用戶本地化為母語時球及,用戶更有可能使用該應(yīng)用氧骤。當(dāng)您將面向用戶的內(nèi)容視為資源文件時,本地化該內(nèi)容是一個相對簡單的過程吃引。
在您可以本地化您的內(nèi)容之前筹陵,您必須將您的應(yīng)用程序國際化,以方便本地化過程镊尺。將您的應(yīng)用程序國際化包括將任何面向用戶的內(nèi)容分解為可本地化的資源文件惶翻,并提供用于存儲該內(nèi)容的特定于語言的項目(.lproj)目錄。它還意味著在使用特定于語言的區(qū)域設(shè)置內(nèi)容時使用適當(dāng)?shù)募夹g(shù)(如日期和數(shù)字格式化程序)鹅心。
對于完全國際化的應(yīng)用程序,本地化過程將創(chuàng)建新的特定于語言的資源文件纺荧,以供您添加到項目中旭愧。典型的iOS應(yīng)用程序需要以下類型資源文件的本地化版本:
故事板文件(或nib文件) - 工作臺可以包含需要本地化的文本標(biāo)簽和其他內(nèi)容。您可能還需要調(diào)整界面項的位置以適應(yīng)文本長度的更改宙暇。 (類似地输枯,nib文件可以包含需要本地化的文本或需要更新的布局。)
字符串文件 - 字符串文件(由于它們的.strings文件擴展名而被命名)包含應(yīng)用程序顯示的靜態(tài)文本的本地化版本占贫。
圖像文件 - 您應(yīng)避免本地化圖像桃熄,除非圖像包含文化特定的內(nèi)容。盡可能避免將文本直接存儲在圖像文件中型奥。對于您在應(yīng)用程序中加載和使用的圖像瞳收,將文本存儲在字符串文件中,并在運行時將該文本與基于圖像的內(nèi)容合并厢汹。
視頻和音頻文件 - 您應(yīng)該避免本地化多媒體文件螟深,除非它們包含語言特定或特定于文化的內(nèi)容。例如烫葬,您將需要本地化包含語音跟蹤軌道的視頻文件界弧。
有關(guān)國際化和本地化流程的信息凡蜻,請參閱國際化和本地化指南。Internationalization and Localization Guide 有關(guān)在應(yīng)用程序中使用資源文件的正確方法的信息垢箕,請參閱資源編程指南划栓。 Resource Programming Guide