iOS 9人機界面指南(三):iOS 技術 (中)
文章索引
- 3.9 通知(Notifications)
- 3.10 社交媒體(Social Media)
- 3.11 iCloud
- 3.12 HealthKit
- 3.13 應用內購買服務(In-App Purchase)
- 3.14 游戲中心(Game Center)
- 3.15 iAd富媒體廣告(iAd Rich Media Ads)
- 3.16 無線打印 (AirPrint)
- 3.17 訪問用戶數據(Accessing User Data)
- 3.18 快速查看(Quick Look)
譯者注:本文譯自蘋果官方人機界面指南 iOS Human Interface Guidelines (2015年10 月21日),由騰訊ISUX設計師翻譯整理,非發文者一人之作。譯文首發于ISUX博客,如在閱讀過程中發現錯誤與疏漏之處,歡迎不吝指出。后續章節會陸續更新,敬請期待。
3.9 通知(Notifications)
通知為人們提供即時的重要信息和功能。人們能在多種情況下收到通知,例如在鎖屏界面中,或者在使用應用時,或者訪問通知中心時。 通知中心有兩種視圖:通知(Notifications )和今天(Today)。
今天視圖顯示了一組可編輯的部件。今天部件是一個應用擴展,顯示了少量及時和重要的信息或功能,這些信息或功能則是由用戶所關注的應用所提供。舉例來說,日歷部件只顯示了今天的事件。點擊日歷部件中的一個事件可以喚起日歷應用,并打開該事件,用戶接下來可以編輯該事件或管理其他的事件。想要了解更多關于設計今天部件的內容,請參見今天部件。
通知視圖會顯示用戶感興趣的應用所發出的最近通知。用戶可以在設置(Settings)中來設置是否在通知中心顯示該應用的通知。 iOS應用可以使用通知來讓人們知道一些有趣的事情是什么時候發生的,例如:
- 收到一條消息
- 事件即將發生
- 有新的數據可下載了
- 某些狀態發生了變化
在iOS8及之后的版本中,應用可以定義用戶在通知中的操作。例如,用戶可以在待辦事項應用的通知中就標記該事項已完成,而無需額外打開應用。 iOS定義了兩種類型的通知。
- 本地通知(local notification)由應用安排待發送,最終通過iOS發送到同一設備中,無論該應用當前是否正在后臺運行。例如,日歷或待辦事項應用可以安排一條本地通知來提醒人們一個即將到來的會議或者日期。
- 遠程通知(remote notification)(也稱為推送通知(push notification))是由應用的遠程服務器通過蘋果推送通知服務來發送的,這類通知最終會被推送到所有安裝了該應用的設備。例如,一款在線競技類的游戲,用戶可以和其他玩家競賽的,可以更新所有玩家的最新狀態。
注意:應用擴展可能會要求遠程通知必須發送到它的容器應用。在這種場景下,容器應用常常會在后臺運行來處理通知。想要了解更多關于應用擴展的內容,請參見應用擴展。
如果當你的應用正在后臺運行時收到了本地或遠程的通知,你就應該以你的應用所特有的方式將信息傳達給你的用戶。 為了確保用戶能夠自定義他們的通知體驗,你應該盡可能多地支持以下的通知類型:
- 橫幅(Banner)
- 警告框(Alert)
- 小氣泡(Badge)
- 聲音(Sound)
注意:在iOS8及之后的版本中,你必須對所有你想發送給用戶的通知類型進行注冊。當你第一次進行注冊動作時,用戶會遇到一個警告框,他們可以在其中操作來決定允許或拒絕所有來自你的應用的通知。不管用戶選擇的結果是什么,他們應始終能訪問應用的設置來更改此項設置,或者設置他們想要接收的通知類型。
橫幅(banner)是一個小而透明的視圖,會出現在屏幕頂部并在幾秒后消失。用戶還可以看到在鎖屏當中的橫幅以及在通知中心中以通知形式出現的橫幅。在橫幅中,iOS會顯示通知的內容和應用的小圖標(欲了解更多關于小圖標的內容,請參見 App Icon)。用戶點擊橫幅來隱藏顯示并切換到發送通知的應用。
除了默認的點擊動作之外,當用戶輕掃橫幅時,你還可以定義兩個動作按鈕。點擊通知動作按鈕來隱藏橫幅的顯示并啟動你的應用(可能是在后臺)來執行動作。
通知警告框是顯示在屏幕上的標準警告框視圖,需要用戶操作后才會隱藏。當用戶點擊Options按鈕后,你需要提供并顯示通知消息以及任何一個默認動作,或最多四個特定動作。警告框的背景樣式不能做修改。 當用戶點擊警告框中的一個默認或自定義動作按鈕時,iOS會同時隱藏警告框并運行你的應用(可能是在后臺)。點擊關閉或確定按鈕會隱藏警告框而不打開應用。
小氣泡(badge)是一個顯示未讀通知數量的紅色小圓(小氣泡顯示在應用圖標的右上角)。小氣泡的大小和顏色不能做修改。 橫幅、警告框和小氣泡這三種通知都可以使用自定義或系統提供的聲音。
在通知中謹慎使用具破壞性的動作。要確定用戶有足夠的上下文來避免意想不到的后果。為了幫助用戶區分你所定義的破壞性動作,iOS會用紅色來顯示它。有時候,在應用執行破壞性動作之前,應該請求用戶進行確認。舉個例子,如果在鎖屏的橫幅(banner)中提供了一個破壞性動作,那么就應確保只有設備的主人才能執行該動作(你需要在代碼上實現這一需求)。
為每個動作按鈕提供自定義標題。創建一個簡短的標題來描述清楚將要發生的動作。例如,游戲可能會使用“Play”作為標題來表明,點擊這個按鈕會打開應用來進行游戲。確保標題:
- 使用標題樣式的大小寫(title-style capitalization)
- 足夠簡短,能不被截斷地顯示在按鈕內(也應確保測試各種語言文字的標題顯示正常)
不要為同一個事件重復發送通知。用戶可以選擇處理通知項;通知項在用戶未處理前會一直顯示。如果為同一事件重復發送通知,通知中心列表中會滿是通知,用戶就有可能會關閉你的應用的通知。
不要在通知消息中包含你的應用名稱。自定義信息會在警告框和橫幅中顯示,也會在通知中心中以通知的形式顯示。你無需在自定義信息中顯示你的應用名稱,因為iOS會在顯示信息的同時自動顯示應用名稱。 為了使本地或遠程通知信息更有作用,你應該:
- 專注于信息而不是用戶的行為。避免告訴人們點擊哪個按鈕或如何打開你的應用
- 足夠簡短,一兩行就可以顯示完整。較長的信息對于用戶來說很難進行快速閱讀,也會造成在警告框中需要滾動才能查看完整
- 使用句式大小寫(sentence-style capitalization),并配以合適的結束語句符號??赡艿臅r候,可以使用一個整句
注意:如有必要,iOS會縮短你的消息以便能在各種通知發送樣式下顯示;為了最好的效果,你不應主動縮減你的消息。
保持小氣泡的內容是最新的。當用戶注意到新信息時,即時更新小氣泡非常重要,這樣用戶就不會覺得收到了額外的通知。注意,當小氣泡為0時也會移除通知中心中所有對應的通知項。
重要:不要使用小氣泡做通知以外的用途。記住,用戶能夠關閉應用的小氣泡,所以你無法確定他們一定能看到小氣泡中的內容。
當收到通知時,提供用戶可以選擇聽到的音效。當人們沒有在看屏幕的時候,可以通過音效獲取他們的注意。例如,日歷應用可能會在顯示警告框的同時播放一個音效來提醒人們一個即將到來的事件。再如,協作任務管理應用可能會在小氣泡更新時播放一個音效來告知某個遠程協同的同事已經完成了某個任務。
你可以提供自定義的音效,或者使用內置的警告音。如果你創建了自定義音效,請確保它是簡短的、有特色的并且是經由專業制作的。(想要了解更多關于音效的技術需求,請參閱Local and Remote Notification Programming Guide中的Preparing Custom Alert Sounds。)注意,當通知發送后,你無法以編程方式來觸發設備的震動,因為用戶對于警告框是否伴隨震動擁有支配權。
3.10 社交媒體(Social Media)
人們會期望在任何場景下都可以使用他們喜愛的社交媒體帳號。iOS以人們喜歡的方式將社交媒體的交互與你的應用進行了整合。
注意:當用戶點擊動作按鈕時,他們會得到一個如上圖的動作視圖控制器。想要了解更多關于這個視圖控制器的內容,請參見Activity View Controller。
動作視圖控制器的中間一行顯示了用戶啟用的和系統提供的分享應用擴展。想要了解更多關于設計分享擴展的內容,請參見 Share and Action Extensions。
考慮在你的應用中為用戶提供一種簡便的方式來撰寫郵件。用戶有可能會啟用分享擴展以便能在任何地方都可以發送內容。但是你也可以使用系統提供的撰寫視圖控制器來呈現給用戶,他們可以在其中進行編輯操作。你可以在顯示給用戶進行編輯之前,預先加載具有自定義內容的撰寫視圖(在你呈現給用戶之后,只有用戶可以編輯這些自定義內容)。想要了解更多關于社交框架(Social framework)的編程界面,包括SLComposeViewController類,請參見 Social Framework Reference.
如果可能,避免要求用戶登錄進入一個社交媒體賬戶。社交框架(Social framework)會和帳號框架(Accounts framework)一起來支持一個單點登錄模式,所以你可以獲得授權來訪問用戶的帳號,而無需要求他們來重新授權。如果用戶還沒有登錄進入一個帳號,你可以顯示UI來讓他們進行登錄。
3.11 iCloud
iCloud可以讓用戶隨時隨地用不同的設備訪問他們想要的內容。將iCloud集成到應用中,用戶不用進行同步操作就可以在不同場景下使用不同的設備訪問并編輯私人信息。
為了提供這種體驗,你可能需要重新檢查你的應用中現有的信息,尤其是用戶自建內容的存儲、訪問和展示方式。想要了解如何使用iCloud,請參考iCloud Design Guide.
iCloud用戶體驗的一個基本方向是透明性:理想情況下,用戶不需要知道他們的信息存儲在什么地方,也不需要去思考當前瀏覽的信息是哪個版本的。以下幾點可以幫助你創建用戶期望的iCloud體驗。
如果可能,讓用戶方便地在你的應用中啟用iCloud。在iOS設備上,用戶可以在設置中登錄iCloud賬戶,因此多半用戶會期望應用可以自動啟用iCloud。但是如果你覺得用戶可能需要自主選擇是否使用你應用的云服務,你可以在用戶第一次進入應用時提供一個簡單的選項來進行設置。大多數情況下,這個選項應該為:是否將所有內容上傳到云端。
尊重用戶的iCloud空間。一定要記住iCloud空間是用戶花錢買來的有限資源。你應該使用iCloud來存儲用戶自己創建和可理解的信息,避免將可再生的應用資源和內容存儲在云端。同樣要記住,當用戶登錄了iCloud賬戶時,你的應用的文件夾內容也會自動備份到云端。所以為了節省用戶云端空間,你最好只挑選必要的信息存儲于文件夾中。
避免讓用戶自己選擇在iCloud上存儲哪些文件。一般地,用戶會期望他們在意的所有信息都能夠通過iCloud訪問到。實際上大多數用戶都不需要進行個人文件存儲的管理,所以你的應用也可以不用考慮這個問題。為了提供更好的用戶體驗,你可能想要重新構建處理和展示內容的方式,這樣就可以給用戶提供更多的文件管理功能。
決定哪種類型的信息需要存儲在云端。除了存儲用戶自建的文件和內容,你還可以存儲少量的其他信息在云端,例如用戶當前的狀態,用戶的偏好設置等等。你可以使用iCloud的關鍵值存儲來保存這類信息。例如,用戶使用你的應用看了一個雜志,你可以使用iCloud的關鍵值存儲來保存用戶瀏覽到的位置,這樣用戶在別的設備上重新打開這個雜志時就能從上次離開的地方繼續瀏覽了。
如果你使用iCloud的關鍵值存儲來保存用戶的偏好設置,確保用戶在每個設備上都是想這樣設置的。例如,有些偏好設置在工作環境中比在家里要更好用。在某些情況下,將偏好設置保存在應用服務器上要比保存在云端更合理,這樣偏好設置就不會受iCloud的限制。
確保iCloud無法使用時應用的行為是合理的。例如,用戶退出iCloud賬戶,關閉應用的iCloud或者進入飛行模式時,iCloud都是無法使用的。在這些情況下,用戶都進行了某些操作來禁止iCloud服務,所以你的應用可以不用再進行提醒。但是,需要告訴用戶在打開iCloud之前,當前做的修改在其他設備上都無法看到。
避免給用戶創建“本地”文件的選項。不管你的應用是否支持iCloud,都不應該給用戶提供因設備而區分的文件系統。相反,你應該希望用戶關注通過iCloud訪問文件的普適性。
在合適的時候自動更新信息。最好不需要用戶來確認他們正在訪問的是最新的內容。但是,也需要在用戶設備存儲空間和帶寬限制之間做出平衡。如果你的用戶要使用非常大的文件,那么讓他們自己選擇是否要從云端下載一個更新的文件可能更合適。如果需要這樣做的話,可以設計一種方式來指出當前在云端有一個該文件的最新版本。當用戶選擇更新時,如果下載時間較長最好給用戶明顯的反饋。
告知用戶刪除某文件的后果。當用戶從有iCloud服務的應用上刪除文件的時候,這個文件同樣會從用戶的iCloud賬號和其他設備上刪除。所以最好在執行刪除操作之前告知用戶刪除的后果,讓用戶進行確認。
必要時盡可能早地告知用戶沖突問題。使用iCloud編程接口,你需要在不打擾到用戶的情況下解決大多數不同版本之間的沖突問題。但在有些情況下,你需要盡可能早地檢測出沖突問題來避免用戶在錯誤版本上浪費太多時間。你需要設計一種自然的方式來告訴用戶有沖突存在,接著給用戶提供方便的方式來區分不同版本以及做出決策。
確保在搜索中包括用戶在云端的信息。使用iCloud的用戶趨向于認為云端的信息是普遍可訪問的,所以他們會期望搜索結果中也有云端的信息。如果你的應用允許用戶搜索他們的信息,確保你使用了將搜索擴展到iCloud賬戶的接口。
3.12 HealthKit
在iOS 8及之后的版本中,使用HealthKit構建的應用可以利用從健康應用中獲取的數據為用戶提供更強大、更完整的健康及健身服務。在用戶允許的情況下,應用可以通過HealthKit來讀寫健康應用(用戶健康相關數據的存儲中心)中的數據。
舉例來說,用戶可以允許營養應用從健康應用中獲取體重及活動數據,用于告訴他們為了達到既定目標一天應該消耗多少卡路里。這個營養應用還可以通過HealthKit更新健康應用上實際消耗的卡路里數據,讓用戶能更容易地跟蹤他們的健康計劃的進展。想要了解如何將HealthKit整合進你的應用中,請參閱HealthKit Framework Reference.
下面的指南能夠幫助你設計出讓人信任且喜愛的健康類應用:
當且僅當你有令人信服的理由時才去訪問健康應用中的數據。HealthKit是為了專注于健康及健身服務的應用而設計的。如果一個應用請求獲取與其不相關的健康信息,用戶不太可能會放心地將個人數據提供給這個應用。因此,你需要確保用戶能夠理解你的應用需要獲取他們某些具體的個人健康數據的原因,并告訴他們共享這些數據的好處。
避免在用戶還不知道用途前就向他們請求訪問私人健康數據。當用戶能夠看到當前的任務和你需要訪問的數據的關聯性時,會更樂意給予你訪問權限。舉例來說,當用戶在給一個減肥應用填寫資料時,讓他允許你訪問健康應用中儲存的體重數據是合理的。但如果那個減肥應用在啟動時就立即提出訪問體重數據的請求,用戶更可能會選擇拒絕分享該個人數據。
使用系統提供的用戶界面來請求訪問用戶的數據。當用戶想要向應用授予訪問他們的數據的權限時,一般會期望看到如下圖所示的系統權限許可列表。為了確保給用戶提供良好的用戶體驗,應避免在應用的其他頁面中重復使用權限許可列表上的信息。而是應該在權限列表中添加些自定義信息來說明為什么你的應用需要訪問特定的數據(參閱HKHealthStore Class Feference可獲取更多信息)的原因。確保這些信息簡潔且能清晰地說明你的應用是如何利用健康應用中的數據,以及收集這些數據的好處。
注意:當用戶決定停止與你的應用共享數據時,讓他們可以在系統設置中即可完成變更,而不需要通過你的應用界面。
不要在你的應用界面中使用健康應用的圖標、圖片或者截圖。和蘋果所有的系統設計一樣,這些圖像都是受到版權保護的,不應該在你的應用中出現。
不要在你的應用中使用“HealthKit”這個專用術語。HealthKit是代表能夠獲取健康應用中儲存的數據的技術框架的專用技術術語。如果你需要向用戶解釋你的應用和健康應用中的數據的聯系,請使用“健康應用”這個用語。例如,你可以說你的應用“將保存信息至健康應用中”或“所使用的數據是從健康應用中獲取的”。
3.13 應用內購買服務(In-App Purchase)
應用內購買服務使得用戶可以在你的應用中、你所設計的商店中購買到數字產品。
例如,用戶可以做這些事:
- 將一個應用從基礎版本升級到高級版本。
- 每月訂閱新內容。
- 購買虛擬商品,比如游戲中的等級或道具。
- 購買并下載新的書籍。
你可以使用StoreKit框架以嵌入的方式將商店添加到你的應用中,并且用來支持應用內購買服務。當用戶進行購買時,StoreKit會連接到應用商店進行安全支付,然后再告知你的應用以便它可以提供用戶已購買的商品。
重要:應用內購買服務只提供支付功能,其他功能由你自己提供,例如向用戶展示商品,解鎖內置功能,從你自己的服務器上下載內容等等。當然,你所提供的所有商品都必須在應用商店注冊過。
想要了解關于在應用中添加商店的技術要求,請查看In-App Purchase Programming Guide.想要了解更多關于應用內購買的商業需求信息,請查看App Store Resource Center.當然,你還應該查看相關許可協議來確定你的應用可以出售哪些商品以及如何提供商品。
遵循以下幾點規范,可以幫助你設計出用戶喜歡的購買體驗。
將商店的使用體驗優雅地集成到你的應用中。在展示商品和處理交易時,給用戶提供一種熟悉、一致的體驗。你一定不希望用戶在訪問你的商店時感覺像是進入別的應用。
使用簡單明了的標題和說明。最好能讓用戶在掃過一組項目時,可以快速發現感興趣的內容。文案上不要截斷隱晦,簡單直白的語言和標題更容易讓用戶理解你所要展示的商品。
不要更改默認的確認對話框。當用戶購買一個商品時,StoreKit會提供一個確認對話框(如上圖所示)。這個確認對話框可以幫助用戶避免買錯東西,所以不要修改它。
3.14 游戲中心(Game Center)
游戲中心給用戶提供玩游戲、組織多人在線游戲以及其他更多功能。玩家可以使用內置的游戲中心應用來注冊賬戶、發現新游戲、添加好友、瀏覽玩家排名和戰績。
作為一名游戲開發人員,你可以使用GameKit應用接口來發布分數和戰績到游戲中心的服務器上,在你的游戲頁面中顯示玩家排名,幫助用戶找到其他玩家。想要了解如何將游戲中心集成到你的應用中,請查看Game Center Programming Guide.
遵循以下幾點規范,有助于你的應用給用戶提供好的游戲中心體驗。
不要使用自定義的用戶界面來提示用戶登錄到游戲中心。如果用戶在未登錄到游戲中心的情況下打開了一個需要啟用游戲中心的應用,系統會自動提醒他們去登錄。所以沒必要自定義一個登錄界面,而且有可能還會讓用戶感到困惑。
一般情況下,使用標準的游戲中心界面。在少數情況下,可能自定義游戲中心的界面是合理的,但是這樣做會有讓用戶感到困惑的風險。標準的游戲中心界面對于iOS和OS X的用戶是熟悉的,而且它會給用戶一種置身于一個龐大游戲社區的感覺。
允許用戶關閉語音聊天。有些用戶可能不想在進入游戲時就自動開啟語音聊天,而且大多數用戶希望在特定情境下可以關閉語音聊天。
3.15 iAd富媒體廣告(iAd Rich Media Ads)
如果你允許你的應用中出現廣告,那么你可以通過用戶瀏覽或者點擊這些廣告獲得收益。(如圖所示,這個底部預留位置就是用來放置iAd橫幅廣告。)
通過iAd網絡你可以在你的用戶界面中以特定的視圖投放一則廣告。最初,這種視圖可以用來承載目標橫幅廣告,起到引導用戶進入查看全面廣告詳情的作用。當用戶點擊該橫幅廣告時,廣告就會執行預先設定的動作,例如播放一段影片、展示可交互的內容,或者啟動Safari打開目標網頁。該動作所展示的內容可以遮擋住你當前的用戶界面,或者使你的應用轉換到后臺運行。
有三種類型的橫幅廣告供你在應用中使用:標準(standard)、中等矩形(medium rectangle) 和全屏(full screen)。所有類型的橫幅雖然在外觀和行為上存在差異,但都提供同樣的功能,就是引導用戶進入廣告。
標準橫幅(standard banner)占用屏幕較少的空間,通常從始至終都可見。你可以選擇在應用的哪些頁面展示標準橫幅,并在給這些頁面設計布局時預留出空間。
所有的iOS應用都可以展示標準橫幅。你可以使用ADBannerView類中的廣告視圖來顯示標準橫幅廣告。
中等矩形橫幅 (medium rectangle banner) 的行為同標準橫幅類似,同樣也可以選擇展示中等矩形橫幅的位置。
中等矩形橫幅只能在iPad的應用中使用。你可以使用ADBannerView類中的廣告視圖來顯示中等矩形橫幅廣告。
全屏橫幅 (full screen banner) 會占用屏幕的大部分甚至是全屏空間,并且通常只在應用程序流的特定時間或特定位置顯示。你可以選擇使用模態視圖來顯示橫幅廣告,或者用獨立頁來展示可滾動的廣告內容。(在下面的示例中,應用提供了一種雜志閱讀的體驗,通過翻頁離開或回到全屏廣告頁面。)
你可以使用ADInterstitialAd類中的廣告視圖在你的應用中顯示全屏橫幅廣告。
iAd框架包含了所有類型的橫幅廣告,并且會在右下角顯示iAd的標識。iAd框架的設計固定在屏幕底部時看起來效果最佳。
為了保證廣告無縫植入,并且要提供最好的用戶體驗,可以遵循以下幾點規范。
將標準橫幅廣告視圖盡量放置在屏幕底部或底部附近。這個位置的差別取決于屏幕底部是否包含欄(bar)以及是什么樣的欄。
將中等矩形橫幅廣告視圖放置在不會干擾內容的地方。和標準橫幅一樣,中等矩形橫幅也最好放置在屏幕底部或底部附近。放在底部附近也能減少干擾用戶的可能性。
當用戶體驗存在中斷時請使用模態視圖來展示全屏橫幅廣告。如果你的應用中有自然中斷或情景轉換,用模態樣式來展示會更合適。當你使用模態樣式來展示全屏橫幅時(通過用presentFromViewController實現),用戶要么進入廣告,要么關閉它。出于這個原因,當用戶有做出轉變的預期時 (比如完成了一個任務后) 用模態視圖的形式來展示比較好。
應用的界面視圖進行轉場切換時不要使用模態樣式展示全屏橫幅。如果用戶在使用你的應用時會頻繁的進行屏幕切換操作,例如雜志翻頁或翻閱一些畫冊圖片合集,此時使用非模態的形式會更合適。當你使用非模態來顯示全屏橫幅時(通過使用presentInView實現),可以在用戶界面中保留欄 (bar) 使得用戶可以通過應用中的控件進入或退出廣告。同其他橫幅廣告一樣,點擊全屏橫幅廣告也會觸發iAd體驗,但是如果條件允許的話,你的應用也可以對橫幅廣告區域支持其他手勢操作 (比如拖動或滑動)。
確保使用合適的動畫效果來顯示和隱藏非模態的全屏橫幅視圖。例如,雜志閱讀應用可以用和雜志翻頁一樣的動畫效果。
確保橫幅廣告在應用中出現的時間和位置是合理的。用戶只有在不覺得廣告會打擾他們正常的工作流程時才有可能去體驗iAd.這點對于游戲這樣的沉浸式應用尤其重要:你肯定不想將橫幅放置在影響用戶玩游戲的位置。
避免將橫幅放置在用戶只會一掃而過的頁面。最好不要將橫幅廣告放置在用戶會快速略過的頁面,比如用戶正要深入挖掘或前往他們所關注的內容。通常用戶在一個頁面停留至少1、2秒后才有可能會點擊廣告。
盡可能的支持雙向展示橫幅廣告。最好讓用戶在使用應用時不必旋轉設備就能瀏覽廣告。當然,支持雙向也能給你的廣告提供更大的展示區域。想要了解如何確保轉換方向時橫幅廣告能正常響應,請查看iAd Programming Guide.
不要讓標準或中等矩形橫幅廣告滾出屏幕。如果你的應用需要滾動來展示更多內容,確保橫幅廣告一直固定在它的位置上。
當用戶瀏覽或與廣告進行交互時,暫停那些吸引用戶注意力或需要操作的活動。當用戶選擇瀏覽廣告時,他們不想因此錯過應用中正發生的事件,也同樣不想讓應用打斷廣告體驗。一個好的經驗方法是像應用程序轉入后臺運行那樣暫停當前活動。
除非有特殊情況,否則不要中斷廣告。一般情況下,當用戶瀏覽并與廣告進行交互時,應用還是會繼續運行并接收事件,所以也有可能突然出現一個事件需要獲得用戶的注意力。然而,需要打斷廣告的場景其實非常少。有一種情景是有的應用會提供互聯網語音協議服務(VoIP).在這種應用中,有電話接入時可能會取消正在運行的廣告。
注意:取消廣告可能會對應用能接受的廣告類型以及能獲取的收益有不好的影響。
3.16 無線打印 (AirPrint)
用戶可以通過AirPrint無線打印應用中的內容,還可以使用打印中心應用檢查打印任務。
你可以利用內置的支持程序來打印圖片和PDF文件,或者可以使用特定的打印程序接口來完成自定義的格式設置和渲染設置。iOS可以處理打印機的發現、任務排序以及在指定打印機上執行打印任務。
通常來講,用戶想要打印文件的時候,只需要點擊應用中的標準動作按鈕(Action button)。當他們在界面視圖中選擇了要打印的項目后,可以接著選擇打印機,設置打印屬性,最后點擊打印按鈕開始打印。
打印中心應用是一個只有在處理打印任務時才可見的后臺系統應用,用戶可以用它來查看打印任務。用戶可以在打印中心瀏覽當前打印隊列,查看某個打印任務的詳情,還可以取消某個任務。
只需添加少量代碼就可以支持基本打印功能 (想要了解在代碼中添加打印功能,請查看Drawing and Printing Guide for iOS).想要確保好的打印體驗,可以遵循以下幾點規范:
使用系統提供的動作按鈕。用戶對系統提供的按鈕的含義和行為都很熟悉,所以盡可能的使用系統動作按鈕。如果你的應用沒有工具欄或導航欄,那就要另當別論了。在這種情況下,你就需要自己設計一個可以出現在應用主界面的打印按鈕,因為動作按鈕只能在工具欄和導航欄中使用。
在當前情境下打印操作是基本功能時才顯示打印項(Print item).如果當前情境并不適合打印,或者用戶并不想打印,就不要在由動作按鈕顯示的視圖中將打印項顯示出來。
合適的話,給用戶提供更多打印選項。例如,讓用戶設置打印頁碼范圍或打印份數。
如果用戶不能打印,則不要顯示特定的打印用戶界面。在向用戶展示有打印項的界面前,確保用戶的設備是支持打印的。想要了解如何在代碼中實現,請查看UIPrintInteractionController Class Reference.
3.17 訪問用戶數據(Accessing User Data)
位置服務允許應用獲取用戶當前大致的地理位置,設備指向的方向以及用戶移動的方向。其他系統服務,例如通訊錄、日歷、備忘錄和相冊等,同樣也允許應用訪問用戶存儲在里面的數據。
雖然獲取了用戶數據的應用能帶來一定的方便,但還是需要為用戶提供維持信息私密性的功能。例如,用戶喜歡應用自動給內容加上位置標簽,或者可以找到附近的好友,但用戶也需要能在不想分享位置的時候關閉這些功能。(想要學習如何給應用增加獲取位置功能,請參閱Location and Maps Programming Guide.)
以下幾點可以幫助您以用戶不反感的方式獲取用戶數據。
確保使用戶理解分享私人數據的原因。如果沒有明顯的需要,用戶自然會對私人信息的請求感到懷疑。為了避免用戶反感,確保在用戶使用明顯需要個人信息的功能時再進行提醒。例如,即使沒有打開位置服務用戶也可以使用地圖,但是在用戶使用定位或導航功能時就會有提醒。
應用需要個人信息的原因不明顯時向用戶做出解釋。你可以在提醒框中給出文字性的描述,例如“這個應用需要訪問你的通訊錄”或者“是否允許應用獲取你的地理位置?”。這些文案最好明確且有禮貌以讓用戶無壓力的理解為什么需要訪問他們的信息。
講述原因的文案應該遵循以下原則:
- 不要包含你的應用名稱,因為系統提供的提醒框已經包含了。
- 清楚地描述你的應用為什么需要這些數據。如果可以的話,你也可以解釋不會用這些數據做什么。
- 使用以用戶為中心的術語并且進行本地化。
- 在易于理解的情況下越短越好。盡可能避免超過一句話。
- 使用句式大小寫(sentence-style capitalization).(句式大小寫指的是第一個單詞大寫,除了專有名詞和專有形容詞以外的詞都小寫。)
只有當你的應用沒有用戶數據就無法提供基礎服務時,才在一開始就征求用戶的許可。如果你的應用在知道了用戶私人信息后才能提供主要功能是顯而易見的話,用戶不會因此覺得煩擾。
避免在用戶選擇需要數據的功能之前調用觸發提醒框的程序。這樣,就可以避免用戶疑惑為什么在使用不需要私人數據的功能時有請求提醒。(注意,檢查用戶位置服務的設置并不會觸發提醒。)
檢查位置服務的設置來避免觸發沒必要的提醒。你可以使用核心位置的程序接口來實現(想要學習如何做,請參閱Core Location Framework Reference).使用這些知識,可以盡可能地在使用需要位置信息的功能時才進行提醒,或者完全避免提醒。
3.18 快速查看(Quick Look)
通過使用Quick Look,用戶可以在你的應用內預覽文件,即使你的應用是打不開這個文件的。舉例來說,你可以允許用戶預覽一些從網站上下載或從其他來源獲得的文件。
想要學習如何在應用中加入Quick Look文件預覽功能,請參閱Document Interaction Programming Topics for iOS.
在你的應用內預覽文件之前,用戶可在你定制的視圖中查看該文件的信息。例如,用戶從一封郵件中下載了附件之后,郵件應用(Mail)會在郵件中使用定制的視圖展示文件的圖標、標題和大小。用戶可以通過點擊它來預覽文件。
你可以在應用中用一個新的視圖來展示文件預覽,或者使用全屏模態視圖。展示的形式取決于你的應用運行在什么設備上。
在iPad上使用模態視圖來顯示文件預覽。iPad的大屏幕適合在一個方便用戶離開的沉浸式環境中展示文件預覽。縮放操作(zoom transition)很適合展示預覽。
在iPhone上使用專用的視圖,最好是導航視圖來顯示文件預覽。這樣可以使用戶在應用情境中通過導航進入文件預覽,不至于迷失。雖然也可以在iPhone應用中使用模態顯示,但不推薦這樣做。(注意縮放操作在iPhone上并不適用。)
另外要注意的是,在導航視圖中顯示文件預覽意味著允許Quick Look在導航欄上放置特定的預覽控件。(如果你的視圖中包含工具欄,Quick Look會將預覽控件放在工具欄上。)
相關閱讀:
來源:騰訊ISUX
- 目前還沒評論,等你發揮!