iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

2016-1-7    用心設(shè)計(jì)

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里


iOS 9人機(jī)界面指南(二):設(shè)計(jì)策略

譯者注:本文譯自蘋(píng)果官方人機(jī)界面指南 iOS Human Interface Guidelines (2015年10 月21日),由騰訊ISUX設(shè)計(jì)師翻譯整理,非發(fā)文者一人之作。譯文首發(fā)于ISUX博客,如在閱讀過(guò)程中發(fā)現(xiàn)錯(cuò)誤與疏漏之處,歡迎不吝指出。后續(xù)章節(jié)會(huì)陸續(xù)更新,敬請(qǐng)期待。

往期:
iOS 9人機(jī)界面指南(一):UI設(shè)計(jì)基礎(chǔ)
iOS 9人機(jī)界面指南(二):設(shè)計(jì)策略
iOS 9人機(jī)界面指南(三):iOS 技術(shù) (上)

文章索引

  • 3.12 HealthKit
  • 3.13 應(yīng)用內(nèi)購(gòu)買(mǎi)服務(wù)(In-App Purchase)
  • 3.14 游戲中心(Game Center)
  • 3.15 iAd富媒體廣告(iAd Rich Media Ads)
  • 3.16 無(wú)線(xiàn)打印 (AirPrint)
  • 3.17 訪(fǎng)問(wèn)用戶(hù)數(shù)據(jù)(Accessing User Data)
  • 3.18 快速查看(Quick Look)
  • 3.19 聲音(Sound)
  • 3.19.1 理解用戶(hù)期望(Understand User Expectations)
  • 3.19.2 定義應(yīng)用的音頻行為(Define the Audio Behavior of Your App)
  • 3.19.3 管理音頻中斷(Manage Audio Interruptions)
  • 3.19.4 適時(shí)處理媒體遠(yuǎn)程控制事件(Handle Media Remote Control Events, if Appropriate)
  • 3.20 VoiceOver
  • 3.21 路線(xiàn)選擇(Routing)
  • 3.22 編輯菜單(Edit Menu)
  • 3.23 撤銷(xiāo)與重做(Undo and Redo)
  • 3.24 鍵盤(pán)和輸入頁(yè)面(Keyboards and Input Views)

3.12 HealthKit

在iOS 8及之后的版本中,使用HealthKit構(gòu)建的應(yīng)用可以利用從健康應(yīng)用中獲取的數(shù)據(jù)為用戶(hù)提供更強(qiáng)大、更完整的健康及健身服務(wù)。在用戶(hù)允許的情況下,應(yīng)用可以通過(guò)HealthKit來(lái)讀寫(xiě)健康應(yīng)用(用戶(hù)健康相關(guān)數(shù)據(jù)的存儲(chǔ)中心)中的數(shù)據(jù)。

舉例來(lái)說(shuō),用戶(hù)可以允許營(yíng)養(yǎng)應(yīng)用從健康應(yīng)用中獲取體重及活動(dòng)數(shù)據(jù),用于告訴他們?yōu)榱诉_(dá)到既定目標(biāo)一天應(yīng)該消耗多少卡路里。這個(gè)營(yíng)養(yǎng)應(yīng)用還可以通過(guò) HealthKit更新健康應(yīng)用上實(shí)際消耗的卡路里數(shù)據(jù),讓用戶(hù)能更容易地跟蹤他們的健康計(jì)劃的進(jìn)展。想要了解如何將HealthKit整合進(jìn)你的應(yīng)用 中,請(qǐng)參閱HealthKit Framework Reference.

下面的指南能夠幫助你設(shè)計(jì)出讓人信任且喜愛(ài)的健康類(lèi)應(yīng)用:

當(dāng)且僅當(dāng)你有令人信服的理由時(shí)才去訪(fǎng)問(wèn)健康應(yīng)用中的數(shù)據(jù)。HealthKit是為了專(zhuān)注于健康及健身服務(wù)的應(yīng)用而設(shè)計(jì)的。如果一個(gè)應(yīng)用請(qǐng)求獲取與其不相關(guān)的健康信息,用戶(hù)不太可能會(huì)放心地將個(gè)人數(shù)據(jù)提供給這個(gè)應(yīng)用。因此,你需要確保用戶(hù)能夠理解你的應(yīng)用需要獲取他們某些具體的個(gè)人健康數(shù)據(jù)的原因,并告訴他們共享這些數(shù)據(jù)的好處。

避免在用戶(hù)還不知道用途前就向他們請(qǐng)求訪(fǎng)問(wèn)私人健康數(shù)據(jù)。當(dāng)用戶(hù)能夠看到當(dāng)前的任務(wù)和你需要訪(fǎng)問(wèn)的數(shù)據(jù)的關(guān)聯(lián)性 時(shí),會(huì)更樂(lè)意給予你訪(fǎng)問(wèn)權(quán)限。舉例來(lái)說(shuō),當(dāng)用戶(hù)在給一個(gè)減肥應(yīng)用填寫(xiě)資料時(shí),讓他允許你訪(fǎng)問(wèn)健康應(yīng)用中儲(chǔ)存的體重?cái)?shù)據(jù)是合理的。但如果那個(gè)減肥應(yīng)用在啟動(dòng) 時(shí)就立即提出訪(fǎng)問(wèn)體重?cái)?shù)據(jù)的請(qǐng)求,用戶(hù)更可能會(huì)選擇拒絕分享該個(gè)人數(shù)據(jù)。

使用系統(tǒng)提供的用戶(hù)界面來(lái)請(qǐng)求訪(fǎng)問(wèn)用戶(hù)的數(shù)據(jù)。當(dāng)用戶(hù)想要向應(yīng)用授予訪(fǎng)問(wèn)他們的數(shù)據(jù)的權(quán)限時(shí),一般會(huì)期望看到如下圖所示的系統(tǒng)權(quán)限許可列表。為了確保給用戶(hù)提供良好的用戶(hù)體驗(yàn),應(yīng)避免在應(yīng)用的其他頁(yè)面中重復(fù)使用權(quán)限許可列表上的信息。而是應(yīng)該在權(quán)限列表中添加些自定義信息來(lái)說(shuō)明為什么你的應(yīng)用需要訪(fǎng)問(wèn)特定的數(shù)據(jù)(參閱HKHealthStore Class Feference可獲取更多信息)的原因。確保這些信息簡(jiǎn)潔且能清晰地說(shuō)明你的應(yīng)用是如何利用健康應(yīng)用中的數(shù)據(jù),以及收集這些數(shù)據(jù)的好處。

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

注意:當(dāng)用戶(hù)決定停止與你的應(yīng)用共享數(shù)據(jù)時(shí),讓他們可以在系統(tǒng)設(shè)置中即可完成變更,而不需要通過(guò)你的應(yīng)用界面。

不要在你的應(yīng)用界面中使用健康應(yīng)用的圖標(biāo)、圖片或者截圖。和蘋(píng)果所有的系統(tǒng)設(shè)計(jì)一樣,這些圖像都是受到版權(quán)保護(hù)的,不應(yīng)該在你的應(yīng)用中出現(xiàn)。

不要在你的應(yīng)用中使用“HealthKit”這個(gè)專(zhuān)用術(shù)語(yǔ)。HealthKit是代表能夠獲取健康應(yīng)用中儲(chǔ)存的數(shù)據(jù)的技術(shù)框架的專(zhuān)用技術(shù)術(shù)語(yǔ)。如果你需要向用戶(hù)解釋你的應(yīng)用和健康應(yīng)用中的數(shù)據(jù)的聯(lián)系,請(qǐng)使用“健康應(yīng)用”這個(gè)用語(yǔ)。例如,你可以說(shuō)你的應(yīng)用“將保存信息至健康應(yīng)用中”或“所使用的數(shù)據(jù)是從健康應(yīng)用中獲取的”。

 

3.13 應(yīng)用內(nèi)購(gòu)買(mǎi)服務(wù)(In-App Purchase)

應(yīng)用內(nèi)購(gòu)買(mǎi)服務(wù)使得用戶(hù)可以在你的應(yīng)用中、你所設(shè)計(jì)的商店中購(gòu)買(mǎi)到數(shù)字產(chǎn)品。

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

例如,用戶(hù)可以做這些事:

  • 將一個(gè)應(yīng)用從基礎(chǔ)版本升級(jí)到高級(jí)版本。
  • 每月訂閱新內(nèi)容。
  • 購(gòu)買(mǎi)虛擬商品,比如游戲中的等級(jí)或道具。
  • 購(gòu)買(mǎi)并下載新的書(shū)籍。

你可以使用StoreKit框架以嵌入的方式將商店添加到你的應(yīng)用中,并且用來(lái)支持應(yīng)用內(nèi)購(gòu)買(mǎi)服務(wù)。當(dāng)用戶(hù)進(jìn)行購(gòu)買(mǎi)時(shí),StoreKit會(huì)連接到應(yīng)用商店進(jìn)行安全支付,然后再告知你的應(yīng)用以便它可以提供用戶(hù)已購(gòu)買(mǎi)的商品。

重要:應(yīng)用內(nèi)購(gòu)買(mǎi)服務(wù)只提供支付功能,其他功能由你自己提供,例如向用戶(hù)展示商品,解鎖內(nèi)置功能,從你自己的服務(wù)器上下載內(nèi)容等等。當(dāng)然,你所提供的所有商品都必須在應(yīng)用商店注冊(cè)過(guò)。

想要了解關(guān)于在應(yīng)用中添加商店的技術(shù)要求,請(qǐng)查看In-App Purchase Programming Guide.想要了解更多關(guān)于應(yīng)用內(nèi)購(gòu)買(mǎi)的商業(yè)需求信息,請(qǐng)查看App Store Resource Center.當(dāng)然,你還應(yīng)該查看相關(guān)許可協(xié)議來(lái)確定你的應(yīng)用可以出售哪些商品以及如何提供商品。

遵循以下幾點(diǎn)規(guī)范,可以幫助你設(shè)計(jì)出用戶(hù)喜歡的購(gòu)買(mǎi)體驗(yàn)。

將商店的使用體驗(yàn)優(yōu)雅地集成到你的應(yīng)用中。在展示商品和處理交易時(shí),給用戶(hù)提供一種熟悉、一致的體驗(yàn)。你一定不希望用戶(hù)在訪(fǎng)問(wèn)你的商店時(shí)感覺(jué)像是進(jìn)入別的應(yīng)用。

使用簡(jiǎn)單明了的標(biāo)題和說(shuō)明。最好能讓用戶(hù)在掃過(guò)一組項(xiàng)目時(shí),可以快速發(fā)現(xiàn)感興趣的內(nèi)容。文案上不要截?cái)嚯[晦,簡(jiǎn)單直白的語(yǔ)言和標(biāo)題更容易讓用戶(hù)理解你所要展示的商品。

不要更改默認(rèn)的確認(rèn)對(duì)話(huà)框。當(dāng)用戶(hù)購(gòu)買(mǎi)一個(gè)商品時(shí),StoreKit會(huì)提供一個(gè)確認(rèn)對(duì)話(huà)框(如上圖所示)。這個(gè)確認(rèn)對(duì)話(huà)框可以幫助用戶(hù)避免買(mǎi)錯(cuò)東西,所以不要修改它。

3.14 游戲中心(Game Center)

游戲中心給用戶(hù)提供玩游戲、組織多人在線(xiàn)游戲以及其他更多功能。玩家可以使用內(nèi)置的游戲中心應(yīng)用來(lái)注冊(cè)賬戶(hù)、發(fā)現(xiàn)新游戲、添加好友、瀏覽玩家排名和戰(zhàn)績(jī)。

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

作為一名游戲開(kāi)發(fā)人員,你可以使用GameKit應(yīng)用接口來(lái)發(fā)布分?jǐn)?shù)和戰(zhàn)績(jī)到游戲中心的服務(wù)器上,在你的游戲頁(yè)面中顯示玩家排名,幫助用戶(hù)找到其他玩家。想要了解如何將游戲中心集成到你的應(yīng)用中,請(qǐng)查看Game Center Programming Guide.

遵循以下幾點(diǎn)規(guī)范,有助于你的應(yīng)用給用戶(hù)提供好的游戲中心體驗(yàn)。

不要使用自定義的用戶(hù)界面來(lái)提示用戶(hù)登錄到游戲中心。如果用戶(hù)在未登錄到游戲中心的情況下打開(kāi)了一個(gè)需要啟用游戲中心的應(yīng)用,系統(tǒng)會(huì)自動(dòng)提醒他們?nèi)サ卿洝K詻](méi)必要自定義一個(gè)登錄界面,而且有可能還會(huì)讓用戶(hù)感到困惑。

一般情況下,使用標(biāo)準(zhǔn)的游戲中心界面。在少數(shù)情況下,可能自定義游戲中心的界面是合理的,但是這樣做會(huì)有讓用戶(hù)感到困惑的風(fēng)險(xiǎn)。標(biāo)準(zhǔn)的游戲中心界面對(duì)于iOS和OS X的用戶(hù)是熟悉的,而且它會(huì)給用戶(hù)一種置身于一個(gè)龐大游戲社區(qū)的感覺(jué)。

允許用戶(hù)關(guān)閉語(yǔ)音聊天。有些用戶(hù)可能不想在進(jìn)入游戲時(shí)就自動(dòng)開(kāi)啟語(yǔ)音聊天,而且大多數(shù)用戶(hù)希望在特定情境下可以關(guān)閉語(yǔ)音聊天。

 

3.15 iAd富媒體廣告(iAd Rich Media Ads)

如果你允許你的應(yīng)用中出現(xiàn)廣告,那么你可以通過(guò)用戶(hù)瀏覽或者點(diǎn)擊這些廣告獲得收益。(如圖所示,這個(gè)底部預(yù)留位置就是用來(lái)放置iAd橫幅廣告。)

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

通過(guò)iAd網(wǎng)絡(luò)你可以在你的用戶(hù)界面中以特定的視圖投放一則廣告。最初,這種視圖可以用來(lái)承載目標(biāo)橫幅廣告,起到引導(dǎo)用戶(hù)進(jìn)入查看全面廣告詳情的作用。當(dāng)用戶(hù)點(diǎn)擊該橫幅廣告時(shí),廣告就會(huì)執(zhí)行預(yù)先設(shè)定的動(dòng)作,例如播放一段影片、展示可交互的內(nèi)容,或者啟動(dòng)Safari打開(kāi)目標(biāo)網(wǎng)頁(yè)。該動(dòng)作所展示的內(nèi)容可以遮擋住你當(dāng)前的用戶(hù)界面,或者使你的應(yīng)用轉(zhuǎn)換到后臺(tái)運(yùn)行。

有三種類(lèi)型的橫幅廣告供你在應(yīng)用中使用:標(biāo)準(zhǔn)(standard)、中等矩形(medium rectangle) 和全屏(full screen)。所有類(lèi)型的橫幅雖然在外觀(guān)和行為上存在差異,但都提供同樣的功能,就是引導(dǎo)用戶(hù)進(jìn)入廣告。

標(biāo)準(zhǔn)橫幅(standard banner)占用屏幕較少的空間,通常從始至終都可見(jiàn)。你可以選擇在應(yīng)用的哪些頁(yè)面展示標(biāo)準(zhǔn)橫幅,并在給這些頁(yè)面設(shè)計(jì)布局時(shí)預(yù)留出空間。

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

所有的iOS應(yīng)用都可以展示標(biāo)準(zhǔn)橫幅。你可以使用ADBannerView類(lèi)中的廣告視圖來(lái)顯示標(biāo)準(zhǔn)橫幅廣告。

中等矩形橫幅 (medium rectangle banner) 的行為同標(biāo)準(zhǔn)橫幅類(lèi)似,同樣也可以選擇展示中等矩形橫幅的位置。

 


[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

中等矩形橫幅只能在iPad的應(yīng)用中使用。你可以使用ADBannerView類(lèi)中的廣告視圖來(lái)顯示中等矩形橫幅廣告。

全屏橫幅 (full screen banner) 會(huì)占用屏幕的大部分甚至是全屏空間,并且通常只在應(yīng)用程序流的特定時(shí)間或特定位置顯示。你可以選擇使用模態(tài)視圖來(lái)顯示橫幅廣告,或者用獨(dú)立頁(yè)來(lái)展示可滾動(dòng)的廣告內(nèi)容。(在下面的示例中,應(yīng)用提供了一種雜志閱讀的體驗(yàn),通過(guò)翻頁(yè)離開(kāi)或回到全屏廣告頁(yè)面。)

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

你可以使用ADInterstitialAd類(lèi)中的廣告視圖在你的應(yīng)用中顯示全屏橫幅廣告。

iAd框架包含了所有類(lèi)型的橫幅廣告,并且會(huì)在右下角顯示iAd的標(biāo)識(shí)。iAd框架的設(shè)計(jì)固定在屏幕底部時(shí)看起來(lái)效果最佳。

為了保證廣告無(wú)縫植入,并且要提供最好的用戶(hù)體驗(yàn),可以遵循以下幾點(diǎn)規(guī)范。

將標(biāo)準(zhǔn)橫幅廣告視圖盡量放置在屏幕底部或底部附近。這個(gè)位置的差別取決于屏幕底部是否包含欄(bar)以及是什么樣的欄。

標(biāo)準(zhǔn)橫幅的位置
屏幕底部沒(méi)有欄 屏幕底部
屏幕任何地方都沒(méi)有欄 屏幕底部
有工具欄(toolbar)或標(biāo)簽欄(tab bar) 底部欄的上方

將中等矩形橫幅廣告視圖放置在不會(huì)干擾內(nèi)容的地方。和標(biāo)準(zhǔn)橫幅一樣,中等矩形橫幅也最好放置在屏幕底部或底部附近。放在底部附近也能減少干擾用戶(hù)的可能性。

當(dāng)用戶(hù)體驗(yàn)存在中斷時(shí)請(qǐng)使用模態(tài)視圖來(lái)展示全屏橫幅廣告。如果你的應(yīng)用中有自然中斷或情景轉(zhuǎn)換,用模態(tài)樣式來(lái)展示會(huì)更合適。當(dāng)你使用模態(tài)樣式來(lái)展示全屏橫幅時(shí)(通過(guò)用presentFromViewController實(shí)現(xiàn)),用戶(hù)要么進(jìn)入廣告,要么關(guān)閉它。出于這個(gè)原因,當(dāng)用戶(hù)有做出轉(zhuǎn)變的預(yù)期時(shí) (比如完成了一個(gè)任務(wù)后) 用模態(tài)視圖的形式來(lái)展示比較好。

應(yīng)用的界面視圖進(jìn)行轉(zhuǎn)場(chǎng)切換時(shí)不要使用模態(tài)樣式展示全屏橫幅。如果用戶(hù)在使用你的應(yīng)用時(shí)會(huì)頻繁的進(jìn)行屏幕切換操作,例如雜志翻頁(yè)或翻閱一些畫(huà)冊(cè)圖片合集,此時(shí)使用非模態(tài)的形式會(huì)更合適。當(dāng)你使用非模態(tài)來(lái)顯示全屏橫幅時(shí)(通過(guò)使用presentInView實(shí)現(xiàn)),可以在用戶(hù)界面中保留欄 (bar) 使得用戶(hù)可以通過(guò)應(yīng)用中的控件進(jìn)入或退出廣告。同其他橫幅廣告一樣,點(diǎn)擊全屏橫幅廣告也會(huì)觸發(fā)iAd體驗(yàn),但是如果條件允許的話(huà),你的應(yīng)用也可以對(duì)橫幅廣告區(qū)域支持其他手勢(shì)操作 (比如拖動(dòng)或滑動(dòng))。

確保使用合適的動(dòng)畫(huà)效果來(lái)顯示和隱藏非模態(tài)的全屏橫幅視圖。例如,雜志閱讀應(yīng)用可以用和雜志翻頁(yè)一樣的動(dòng)畫(huà)效果。

確保橫幅廣告在應(yīng)用中出現(xiàn)的時(shí)間和位置是合理的。用戶(hù)只有在不覺(jué)得廣告會(huì)打擾他們正常的工作流程時(shí)才有可能去體驗(yàn)iAd.這點(diǎn)對(duì)于游戲這樣的沉浸式應(yīng)用尤其重要:你肯定不想將橫幅放置在影響用戶(hù)玩游戲的位置。

避免將橫幅放置在用戶(hù)只會(huì)一掃而過(guò)的頁(yè)面。最好不要將橫幅廣告放置在用戶(hù)會(huì)快速略過(guò)的頁(yè)面,比如用戶(hù)正要深入挖掘或前往他們所關(guān)注的內(nèi)容。通常用戶(hù)在一個(gè)頁(yè)面停留至少1、2秒后才有可能會(huì)點(diǎn)擊廣告。

盡可能的支持雙向展示橫幅廣告。最好讓用戶(hù)在使用應(yīng)用時(shí)不必旋轉(zhuǎn)設(shè)備就能瀏覽廣告。當(dāng)然,支持雙向也能給你的廣告提供更大的展示區(qū)域。想要了解如何確保轉(zhuǎn)換方向時(shí)橫幅廣告能正常響應(yīng),請(qǐng)查看iAd Programming Guide.

不要讓標(biāo)準(zhǔn)或中等矩形橫幅廣告滾出屏幕。如果你的應(yīng)用需要滾動(dòng)來(lái)展示更多內(nèi)容,確保橫幅廣告一直固定在它的位置上。

當(dāng)用戶(hù)瀏覽或與廣告進(jìn)行交互時(shí),暫停那些吸引用戶(hù)注意力或需要操作的活動(dòng)。當(dāng)用戶(hù)選擇瀏覽廣告時(shí),他們不想因此錯(cuò)過(guò)應(yīng)用中正發(fā)生的事件,也同樣不想讓?xiě)?yīng)用打斷廣告體驗(yàn)。一個(gè)好的經(jīng)驗(yàn)方法是像應(yīng)用程序轉(zhuǎn)入后臺(tái)運(yùn)行那樣暫停當(dāng)前活動(dòng)。

除非有特殊情況,否則不要中斷廣告。一般情況下,當(dāng)用戶(hù)瀏覽并與廣告進(jìn)行交互時(shí),應(yīng)用還是會(huì)繼續(xù)運(yùn)行并接收事 件,所以也有可能突然出現(xiàn)一個(gè)事件需要獲得用戶(hù)的注意力。然而,需要打斷廣告的場(chǎng)景其實(shí)非常少。有一種情景是有的應(yīng)用會(huì)提供互聯(lián)網(wǎng)語(yǔ)音協(xié)議服務(wù) (VoIP).在這種應(yīng)用中,有電話(huà)接入時(shí)可能會(huì)取消正在運(yùn)行的廣告。

注意:取消廣告可能會(huì)對(duì)應(yīng)用能接受的廣告類(lèi)型以及能獲取的收益有不好的影響。

 

3.16 無(wú)線(xiàn)打印 (AirPrint)

用戶(hù)可以通過(guò)AirPrint無(wú)線(xiàn)打印應(yīng)用中的內(nèi)容,還可以使用打印中心應(yīng)用檢查打印任務(wù)。

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

你可以利用內(nèi)置的支持程序來(lái)打印圖片和PDF文件,或者可以使用特定的打印程序接口來(lái)完成自定義的格式設(shè)置和渲染設(shè)置。iOS可以處理打印機(jī)的發(fā)現(xiàn)、任務(wù)排序以及在指定打印機(jī)上執(zhí)行打印任務(wù)。

通常來(lái)講,用戶(hù)想要打印文件的時(shí)候,只需要點(diǎn)擊應(yīng)用中的標(biāo)準(zhǔn)動(dòng)作按鈕(Action button)。當(dāng)他們?cè)诮缑嬉晥D中選擇了要打印的項(xiàng)目后,可以接著選擇打印機(jī),設(shè)置打印屬性,最后點(diǎn)擊打印按鈕開(kāi)始打印。

打印中心應(yīng)用是一個(gè)只有在處理打印任務(wù)時(shí)才可見(jiàn)的后臺(tái)系統(tǒng)應(yīng)用,用戶(hù)可以用它來(lái)查看打印任務(wù)。用戶(hù)可以在打印中心瀏覽當(dāng)前打印隊(duì)列,查看某個(gè)打印任務(wù)的詳情,還可以取消某個(gè)任務(wù)。

只需添加少量代碼就可以支持基本打印功能 (想要了解在代碼中添加打印功能,請(qǐng)查看Drawing and Printing Guide for iOS).想要確保好的打印體驗(yàn),可以遵循以下幾點(diǎn)規(guī)范:

使用系統(tǒng)提供的動(dòng)作按鈕。用戶(hù)對(duì)系統(tǒng)提供的按鈕的含義和行為都很熟悉,所以盡可能的使用系統(tǒng)動(dòng)作按鈕。如果你的應(yīng)用沒(méi)有工具欄或?qū)Ш綑?,那就要另?dāng)別論了。在這種情況下,你就需要自己設(shè)計(jì)一個(gè)可以出現(xiàn)在應(yīng)用主界面的打印按鈕,因?yàn)閯?dòng)作按鈕只能在工具欄和導(dǎo)航欄中使用。

在當(dāng)前情境下打印操作是基本功能時(shí)才顯示打印項(xiàng)(Print item).如果當(dāng)前情境并不適合打印,或者用戶(hù)并不想打印,就不要在由動(dòng)作按鈕顯示的視圖中將打印項(xiàng)顯示出來(lái)。

合適的話(huà),給用戶(hù)提供更多打印選項(xiàng)。例如,讓用戶(hù)設(shè)置打印頁(yè)碼范圍或打印份數(shù)。

如果用戶(hù)不能打印,則不要顯示特定的打印用戶(hù)界面。在向用戶(hù)展示有打印項(xiàng)的界面前,確保用戶(hù)的設(shè)備是支持打印的。想要了解如何在代碼中實(shí)現(xiàn),請(qǐng)查看UIPrintInteractionController Class Reference.

3.17 訪(fǎng)問(wèn)用戶(hù)數(shù)據(jù)(Accessing User Data)

位置服務(wù)允許應(yīng)用獲取用戶(hù)當(dāng)前大致的地理位置,設(shè)備指向的方向以及用戶(hù)移動(dòng)的方向。其他系統(tǒng)服務(wù),例如通訊錄、日歷、備忘錄和相冊(cè)等,同樣也允許應(yīng)用訪(fǎng)問(wèn)用戶(hù)存儲(chǔ)在里面的數(shù)據(jù)。

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

雖然獲取了用戶(hù)數(shù)據(jù)的應(yīng)用能帶來(lái)一定的方便,但還是需要為用戶(hù)提供維持信息私密性的功能。例如,用戶(hù)喜歡應(yīng)用自動(dòng)給內(nèi)容加上位置標(biāo)簽,或者可以找到附近的好友,但用戶(hù)也需要能在不想分享位置的時(shí)候關(guān)閉這些功能。(想要學(xué)習(xí)如何給應(yīng)用增加獲取位置功能,請(qǐng)參閱Location and Maps Programming Guide.)

以下幾點(diǎn)可以幫助您以用戶(hù)不反感的方式獲取用戶(hù)數(shù)據(jù)。

確保使用戶(hù)理解分享私人數(shù)據(jù)的原因。如果沒(méi)有明顯的需要,用戶(hù)自然會(huì)對(duì)私人信息的請(qǐng)求感到懷疑。為了避免用戶(hù)反感,確保在用戶(hù)使用明顯需要個(gè)人信息的功能時(shí)再進(jìn)行提醒。例如,即使沒(méi)有打開(kāi)位置服務(wù)用戶(hù)也可以使用地圖,但是在用戶(hù)使用定位或?qū)Ш焦δ軙r(shí)就會(huì)有提醒。

應(yīng)用需要個(gè)人信息的原因不明顯時(shí)向用戶(hù)做出解釋。你可以在提醒框中給出文字性的描述,例如“這個(gè)應(yīng)用需要訪(fǎng)問(wèn)你的通訊錄”或者“是否允許應(yīng)用獲取你的地理位置?”。這些文案最好明確且有禮貌以讓用戶(hù)無(wú)壓力的理解為什么需要訪(fǎng)問(wèn)他們的信息。

講述原因的文案應(yīng)該遵循以下原則:

  • 不要包含你的應(yīng)用名稱(chēng),因?yàn)橄到y(tǒng)提供的提醒框已經(jīng)包含了。
  • 清楚地描述你的應(yīng)用為什么需要這些數(shù)據(jù)。如果可以的話(huà),你也可以解釋不會(huì)用這些數(shù)據(jù)做什么。
  • 使用以用戶(hù)為中心的術(shù)語(yǔ)并且進(jìn)行本地化。
  • 在易于理解的情況下越短越好。盡可能避免超過(guò)一句話(huà)。
  • 使用句式大小寫(xiě)(sentence-style capitalization).(句式大小寫(xiě)指的是第一個(gè)單詞大寫(xiě),除了專(zhuān)有名詞和專(zhuān)有形容詞以外的詞都小寫(xiě)。)

只有當(dāng)你的應(yīng)用沒(méi)有用戶(hù)數(shù)據(jù)就無(wú)法提供基礎(chǔ)服務(wù)時(shí),才在一開(kāi)始就征求用戶(hù)的許可。如果你的應(yīng)用在知道了用戶(hù)私人信息后才能提供主要功能是顯而易見(jiàn)的話(huà),用戶(hù)不會(huì)因此覺(jué)得煩擾。

避免在用戶(hù)選擇需要數(shù)據(jù)的功能之前調(diào)用觸發(fā)提醒框的程序。這樣,就可以避免用戶(hù)疑惑為什么在使用不需要私人數(shù)據(jù)的功能時(shí)有請(qǐng)求提醒。(注意,檢查用戶(hù)位置服務(wù)的設(shè)置并不會(huì)觸發(fā)提醒。)

檢查位置服務(wù)的設(shè)置來(lái)避免觸發(fā)沒(méi)必要的提醒。你可以使用核心位置的程序接口來(lái)實(shí)現(xiàn)(想要學(xué)習(xí)如何做,請(qǐng)參閱Core Location Framework Reference).使用這些知識(shí),可以盡可能地在使用需要位置信息的功能時(shí)才進(jìn)行提醒,或者完全避免提醒。

3.18 快速查看(Quick Look)

通過(guò)使用Quick Look,用戶(hù)可以在你的應(yīng)用內(nèi)預(yù)覽文件,即使你的應(yīng)用是打不開(kāi)這個(gè)文件的。舉例來(lái)說(shuō),你可以允許用戶(hù)預(yù)覽一些從網(wǎng)站上下載或從其他來(lái)源獲得的文件。

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

想要學(xué)習(xí)如何在應(yīng)用中加入Quick Look文件預(yù)覽功能,請(qǐng)參閱Document Interaction Programming Topics for iOS.

在你的應(yīng)用內(nèi)預(yù)覽文件之前,用戶(hù)可在你定制的視圖中查看該文件的信息。例如,用戶(hù)從一封郵件中下載了附件之后,郵件應(yīng)用(Mail)會(huì)在郵件中使用定制的視圖展示文件的圖標(biāo)、標(biāo)題和大小。用戶(hù)可以通過(guò)點(diǎn)擊它來(lái)預(yù)覽文件。

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

你可以在應(yīng)用中用一個(gè)新的視圖來(lái)展示文件預(yù)覽,或者使用全屏模態(tài)視圖。展示的形式取決于你的應(yīng)用運(yùn)行在什么設(shè)備上。

iPad上使用模態(tài)視圖來(lái)顯示文件預(yù)覽。iPad的大屏幕適合在一個(gè)方便用戶(hù)離開(kāi)的沉浸式環(huán)境中展示文件預(yù)覽。縮放操作(zoom transition)很適合展示預(yù)覽。

iPhone上使用專(zhuān)用的視圖,最好是導(dǎo)航視圖來(lái)顯示文件預(yù)覽。這樣可以使用戶(hù)在應(yīng)用情境中通過(guò)導(dǎo)航進(jìn)入文件預(yù)覽,不至于迷失。雖然也可以在iPhone應(yīng)用中使用模態(tài)顯示,但不推薦這樣做。(注意縮放操作在iPhone上并不適用。)

另外要注意的是,在導(dǎo)航視圖中顯示文件預(yù)覽意味著允許Quick Look在導(dǎo)航欄上放置特定的預(yù)覽控件。(如果你的視圖中包含工具欄,Quick Look會(huì)將預(yù)覽控件放在工具欄上。)

3.19 聲音(Sound)

無(wú)論聲音在你的應(yīng)用中是主要體驗(yàn)的一環(huán),還是錦上添花的元素,你都需要知道用戶(hù)對(duì)聲音表現(xiàn)的期望以及與如何滿(mǎn)足這些期望。

3.19.1 理解用戶(hù)期望(Understand User Expectations)

人們可以使用設(shè)備控件來(lái)調(diào)整聲音,他們還可能使用有線(xiàn)或無(wú)線(xiàn)的耳機(jī)和聽(tīng)筒。人們也會(huì)對(duì)于他們的行為如何作用于他們聽(tīng)到的聲音有各種各樣的期望。雖然你可能會(huì)發(fā)現(xiàn)有一些期望很讓人意外,但它們都會(huì)遵循用戶(hù)控制的原則,即應(yīng)是用戶(hù)而非設(shè)備掌控聽(tīng)到聲音的時(shí)機(jī)。

用戶(hù)會(huì)依據(jù)需要將設(shè)備靜音:

  • 避免被突兀的音效打斷,比如手機(jī)鈴聲和信息接收音等
  • 避免聽(tīng)到用戶(hù)操作所產(chǎn)生的副產(chǎn)品的聲音,比如鍵盤(pán)或其他反饋音、偶然的聲音或應(yīng)用啟動(dòng)的聲音
  • 避免聽(tīng)到那些在玩游戲時(shí)非必要出現(xiàn)的聲音,如音效和配樂(lè)

例如,在劇院中,用戶(hù)將他們的設(shè)備調(diào)至靜音以避免打擾劇院中的其他人。在這一情境下,用戶(hù)仍然希望能在他們的設(shè)備上使用應(yīng)用,但他們不希望被無(wú)預(yù)期或突兀的聲音所打斷,如手機(jī)鈴聲或新消息音。

當(dāng)用戶(hù)操作的明確目的就是聽(tīng)到聲音時(shí),鈴音/靜音開(kāi)關(guān)(或靜音開(kāi)關(guān))不會(huì)屏蔽這些操作所產(chǎn)生的聲音。例如:

  • 在僅有媒體播放功能的應(yīng)用中的進(jìn)行媒體播放是不會(huì)被靜音的,因?yàn)椴シ琶襟w是用戶(hù)明確期望的。
  • 鬧鐘不能被靜音,因?yàn)轸[鐘是用戶(hù)明確設(shè)定使用的。
  • 語(yǔ)言學(xué)習(xí)應(yīng)用中的音效素材不能被靜音,因?yàn)橛脩?hù)進(jìn)行了明確的操作希望聽(tīng)到它。
  • 音頻對(duì)話(huà)應(yīng)用中的對(duì)話(huà)不被靜音,因?yàn)橛脩?hù)打開(kāi)這個(gè)應(yīng)用的唯一目的就是進(jìn)行音頻對(duì)話(huà)。

用戶(hù)使用設(shè)備音量調(diào)節(jié)按鍵可調(diào)節(jié)他們的設(shè)備所能發(fā)出的所有聲音的音量,包括歌曲、應(yīng)用音效和設(shè)備聲音。不管鈴聲/靜音(或靜音)的開(kāi)關(guān)在什么位置,用戶(hù)都能使用音量調(diào)節(jié)按鍵屏蔽所有聲音,使用音量調(diào)節(jié)按鍵調(diào)節(jié)應(yīng)用當(dāng)前所播放的音頻時(shí)同樣調(diào)整了全局系統(tǒng)的音量,鈴聲音量除外。

對(duì)于iPhone:當(dāng)沒(méi)有音頻播放時(shí)使用音量鍵可以調(diào)整鈴聲音量。

用戶(hù)使用耳機(jī)的目的在于能夠私密地收聽(tīng)聲音以及解放他們的雙手。不管這些配件是有線(xiàn)的還是無(wú)線(xiàn)的,用戶(hù)對(duì)這個(gè)體驗(yàn)都有特定的期待。

當(dāng)用戶(hù)插入耳機(jī)或連接無(wú)線(xiàn)音頻設(shè)備時(shí),他們期望能以私密的狀態(tài)繼續(xù)收聽(tīng)當(dāng)前播放的音頻。因此,他們希望應(yīng)用能夠不中斷地繼續(xù)播放當(dāng)前正在播放的音頻。

當(dāng)用戶(hù)拔出耳機(jī)或斷開(kāi)與無(wú)線(xiàn)設(shè)備的連接時(shí)(抑或設(shè)備超出范圍或關(guān)閉時(shí)),他們不希望他們剛剛收聽(tīng)的內(nèi)容被自動(dòng)地與他人分享。因此,他們希望正在播放音頻的應(yīng)用暫停播放,讓他們能夠在自己想要繼續(xù)播放的時(shí)候再開(kāi)啟。

3.19.2 定義應(yīng)用的音頻行為(Define the Audio Behavior of Your App)

如果必要的話(huà),你可以通過(guò)調(diào)整相關(guān)的、獨(dú)立的音量水平以在你的應(yīng)用中制造最好的混音輸出效果。但最終音效輸出的音量也應(yīng)該能由系統(tǒng)音量控制,可以通過(guò)音量鍵或音量滑塊進(jìn)行調(diào)節(jié)。這意味著應(yīng)用的音頻輸出的控制權(quán)仍然歸屬在用戶(hù)手中。

確保你的應(yīng)用能適時(shí)地顯示音頻路徑選擇。(音頻路徑(audio route)是指音頻信號(hào)的電子通路,例如從設(shè)備到耳機(jī)或是從設(shè)備到揚(yáng)聲器。)即使人們沒(méi)有物理性的插入或拔出音頻設(shè)備,他們也仍希望能選擇其他不同的音頻路徑。為了實(shí)現(xiàn)這一訴求,iOS能自動(dòng)顯示可讓用戶(hù)選擇輸出音頻路徑的控件(使用MPVolumeView類(lèi)能允許這個(gè)控件顯示在你的應(yīng)用中)。由于選擇不同的音頻路徑是用戶(hù)主動(dòng)的行為,用戶(hù)期望當(dāng)前播放的音頻能繼續(xù)不中斷。

如果你需要顯示音量滑塊,在使用MPVolumeView類(lèi)時(shí),確保使用的是系統(tǒng)提供的可用的音量滑塊。注意,當(dāng)正在使用的音頻輸出設(shè)備不支持音量控制時(shí),音量滑塊會(huì)被合適的設(shè)備名稱(chēng)所替代。

如果你的應(yīng)用只產(chǎn)生一些與其功能無(wú)必要關(guān)系的界面音效時(shí),(盡量)使用系統(tǒng)音效服務(wù)(System Sound Services)。系 統(tǒng)音效服務(wù)是一種能產(chǎn)生警示音、界面音效和發(fā)出振動(dòng)的iOS技術(shù);它不適合任何其他用途。當(dāng)你使用系統(tǒng)音效服務(wù)(System Sound Services)來(lái)產(chǎn)生音效時(shí),你不能干涉你的音頻與設(shè)備的音頻的交互方式,也不能干涉它處理干擾和設(shè)備配置變化的方式。想了解如何使用這一技術(shù),請(qǐng)參 閱Audio UI Sounds (SysSound)中的范例項(xiàng)目。

如果音效在你的應(yīng)用中扮演重要的角色,使用音頻會(huì)話(huà)服務(wù)(Audio Session Services)或是AVAudioSession類(lèi)。這些程序接口不產(chǎn)生音效;相反,它們會(huì)幫助你了解你的音頻應(yīng)該如何與設(shè)備的音頻進(jìn)行交互以及如何響應(yīng)設(shè)備配置的干擾與變化。

對(duì)于iPhone:無(wú)論你使用什么樣的技術(shù)來(lái)制作音頻,無(wú)論你如何定義來(lái)它的行為,電話(huà)總是可以中斷當(dāng)前運(yùn)行的應(yīng)用。這是因?yàn)槿魏螒?yīng)用都不應(yīng)該阻止人們接收來(lái)電。

在音頻會(huì)話(huà)服務(wù)(Audio Session Service)中,音頻會(huì)話(huà)(audio session)執(zhí)行了你的應(yīng)用與系統(tǒng)之間音頻中介的功能。音頻會(huì)話(huà)中最重要的方面之一就是類(lèi)目(category),它定義了你的應(yīng)用的音頻行為。

為了實(shí)現(xiàn)音頻會(huì)話(huà)服務(wù)帶來(lái)的好處并提供用戶(hù)期望的音頻體驗(yàn),你需要選擇可以完美描述應(yīng)用音頻行為的類(lèi)目(category)。具體情況取決于你的應(yīng)用只在前臺(tái)播放音頻還是也要在后臺(tái)播放音頻。在你做這一選擇的時(shí)候,遵循以下這些原則:

  • 依據(jù)其語(yǔ)義而非的行為來(lái)選擇音頻會(huì)話(huà)類(lèi)目。通過(guò)選擇目的清晰的類(lèi)目,你可以確保你的應(yīng)用能表現(xiàn)得符合用戶(hù)期望。除此之外,當(dāng)以后行為的集合被重新定義時(shí),它可以為你的應(yīng)用提供最佳的機(jī)會(huì)使其合理運(yùn)行。
  • 在極少數(shù)情況下,可以添加屬性到音頻會(huì)話(huà)中以修正一個(gè)類(lèi)別的標(biāo)準(zhǔn)行為。一個(gè)類(lèi)別的標(biāo)準(zhǔn)行為代表多數(shù)用戶(hù)的期望,因此在你改變那個(gè)行為之前你應(yīng)該仔細(xì)地考慮。例如,你可以添加閃避(ducking)屬性以確保你的音頻聲音能比其他所有的音頻都大(除了電話(huà)音頻),如果這就是用戶(hù)所期望的。(欲了解更多關(guān)于音頻會(huì)話(huà)屬性的內(nèi)容, 請(qǐng)參見(jiàn)的Fine-Tuning the Category。)
  • 依據(jù)設(shè)備當(dāng)前的音頻環(huán)境來(lái)考慮你的類(lèi)目選擇。這應(yīng)該是合理的,舉個(gè)例子,用戶(hù)可以在使用你的應(yīng)用的同時(shí)聽(tīng)其他音頻而非你的配樂(lè)。如果要這樣做,須確保避免當(dāng)你的應(yīng)用啟動(dòng)時(shí),迫使用戶(hù)停止收聽(tīng)當(dāng)前的內(nèi)容或要需要額外地在兩者之間做出選擇。
  • 通常情況下,避免在你的應(yīng)用運(yùn)行時(shí)改變類(lèi)目。改變類(lèi)目的首要依據(jù)是你的應(yīng)用是否需要在不同的時(shí)機(jī)支持錄音和播放。在這種情況下,更好的選擇是依據(jù)需要在錄音類(lèi)目與播放類(lèi)目之間轉(zhuǎn)換,而非同時(shí)選擇播放和錄音類(lèi)目。這是因?yàn)檫x擇錄音類(lèi)目可以確保正在錄音時(shí)不會(huì)聽(tīng)到提示音,比如收到信息的提示音。

表35-1列舉了你可以使用的音頻會(huì)話(huà)類(lèi)目。不同的類(lèi)目可以允許通過(guò)鈴聲/靜音開(kāi)關(guān)或靜音開(kāi)關(guān)(或設(shè)備鎖)來(lái)實(shí)現(xiàn)靜音、與其他的音頻混合或者控制應(yīng)用在后臺(tái)播放。(欲了解編程界面上所呈現(xiàn)的類(lèi)目和屬性的準(zhǔn)確名稱(chēng),請(qǐng)參見(jiàn)Audio Session Programming Guide.)

表35-1 音頻會(huì)話(huà)類(lèi)目及其相關(guān)行為

類(lèi)目 意義 靜音 混合 后臺(tái)播放
個(gè)人環(huán)境 聲音增強(qiáng)了應(yīng)用的功能且應(yīng)該靜音其他音頻 支持 不支持 不支持
環(huán)境 聲音增強(qiáng)了應(yīng)用的功能但不應(yīng)該靜音其他音頻。 支持 支持 不支持
播放 聲音對(duì)應(yīng)用來(lái)說(shuō)很重要且可以與其他音頻混合。 不支持 不支持(默認(rèn))支持(當(dāng)“與其他音頻混合”屬性被添加時(shí)) 支持
錄音 音頻是用戶(hù)記錄的。 不支持 不支持 支持
播放和錄音 聲音代表音頻輸入與輸出,按順序地或同時(shí)地。 不支持 不支持(默認(rèn))支持(當(dāng)“與其他音頻混合”屬性被添加時(shí)) 支持
音頻處理 應(yīng)用執(zhí)行硬件輔助音頻編碼(不播放或錄音)。 不適用 不支持 支持*

*如果你選擇音頻處理類(lèi)目并且你希望在后臺(tái)運(yùn)行音頻進(jìn)程,你需要在完成音頻處理之前防止你的應(yīng)用被暫停。欲了解如何實(shí)現(xiàn)這一功能,參見(jiàn)iOS應(yīng)用編程指南》中的執(zhí)行長(zhǎng)時(shí)間運(yùn)行的后臺(tái)任務(wù)。

以下是一些示例情境,其中指示了如何選擇音頻會(huì)話(huà)類(lèi)目以提供用戶(hù)喜歡的音頻體驗(yàn)。

情境1:一個(gè)幫助人們學(xué)習(xí)新語(yǔ)言的教育類(lèi)應(yīng)用。你需要提供:

  • 用戶(hù)點(diǎn)擊特定控件時(shí)播放反饋音效
  • 當(dāng)用戶(hù)想聽(tīng)到正確發(fā)音的示例時(shí)播放字詞的錄音

在這個(gè)應(yīng)用中,聲音對(duì)于主要功能是十分重要的。人們使用這個(gè)應(yīng)用來(lái)聽(tīng)他們正學(xué)習(xí)的語(yǔ)言的詞語(yǔ)與短語(yǔ),因此即使當(dāng)設(shè)備鎖定或者被調(diào)至靜音時(shí)也要能播放聲音。因?yàn)橛脩?hù)需要清晰地聽(tīng)到聲音,他們會(huì)期望其他他們可能播放的音頻都被靜音。

為了滿(mǎn)足用戶(hù)對(duì)于該應(yīng)用所期望的音頻體驗(yàn),你應(yīng)該使用播放(Playback )類(lèi)目。雖然這一類(lèi)目可以被定義為與其他音頻混合,但該應(yīng)用應(yīng)該使用默認(rèn)的行為以確保其他的音頻不會(huì)干擾那些用戶(hù)明確選擇聽(tīng)到的教育性?xún)?nèi)容。

場(chǎng)景2:網(wǎng)絡(luò)協(xié)議電話(huà)(VoIP)應(yīng)用。你需要提供:

  • 接收音頻輸入的能力
  • 播放音頻的能力

在該應(yīng)用中,聲音對(duì)于主要功能是十分重要的。人們經(jīng)常會(huì)在使用另一個(gè)應(yīng)用時(shí)使用該應(yīng)用與他人進(jìn)行交流。用戶(hù)期望能在他們將設(shè)備調(diào)至靜音或設(shè)備被鎖定時(shí)接聽(tīng)電話(huà),他們希望在來(lái)電期間其他音頻被靜音。他們也希望應(yīng)用在后臺(tái)運(yùn)行時(shí)也能繼續(xù)打電話(huà)。

為了滿(mǎn)足用戶(hù)對(duì)于該應(yīng)用所期望的音頻體驗(yàn),你應(yīng)該使用播放和錄音(Play and Record)類(lèi)目,并且你要確保只有在你需要時(shí)才會(huì)激活你的音頻會(huì)話(huà),以便用戶(hù)可以在打電話(huà)過(guò)程中使用其他音頻。

場(chǎng)景3:允許用戶(hù)在不同任務(wù)中操作角色的游戲。你需要提供:

  • 不同的游戲運(yùn)行音效
  • 配樂(lè)

在該應(yīng)用中,聲音會(huì)在很大程度上提升用戶(hù)體驗(yàn),但對(duì)于主任務(wù)并沒(méi)有那么重要。而且,用戶(hù)可能會(huì)希望能在玩游戲時(shí)靜音或聽(tīng)他們樂(lè)單中的歌曲而不聽(tīng)游戲配樂(lè)。

最好的策略是在你的應(yīng)用啟動(dòng)時(shí)確定用戶(hù)是否在收聽(tīng)其他音頻。不要要求用戶(hù)選擇他們是要收聽(tīng)其他音頻或是你的音效。而應(yīng)該使用音頻會(huì)話(huà)功能中的AudioSessionGetProperty來(lái)請(qǐng)求kAudioSessionProperty_OtherAudioIsPlaying屬性的狀態(tài)。依據(jù)所請(qǐng)求的答案,你可以選擇環(huán)境(Ambient)或是個(gè)人環(huán)境(Solo Ambient)類(lèi)目(這兩種類(lèi)目都允許用戶(hù)靜音玩游戲):

  • 如果用戶(hù)正在聽(tīng)其他音頻,你應(yīng)該假設(shè)他們想要繼續(xù)聽(tīng)并且不想被強(qiáng)迫收聽(tīng)游戲音效。在這種情境下,你最好選擇環(huán)境(Ambient)類(lèi)目。
  • 如果用戶(hù)在你的應(yīng)用啟動(dòng)時(shí)沒(méi)有在收聽(tīng)其他音效,你最好選擇個(gè)人環(huán)境(SoloAmbient)類(lèi)目。

情境4:一個(gè)為用戶(hù)到達(dá)目的地提供準(zhǔn)確、實(shí)時(shí)導(dǎo)航指示的應(yīng)用。你需要提供:

  • 路途中每一步的語(yǔ)音指示
  • 一些反饋音效
  • 支持用戶(hù)繼續(xù)收聽(tīng)他們自己的音頻的能力

在該應(yīng)用中,無(wú)論應(yīng)用是否是在后臺(tái)運(yùn)行,語(yǔ)音導(dǎo)航指示都表現(xiàn)為主要任務(wù)。基于這一原因,你最好使用播放(Playback)類(lèi)目,它允許你的音頻在設(shè)備被鎖定、靜音或是在后臺(tái)運(yùn)行時(shí)仍可以播放。

你可以通過(guò)添加kAudioSessionProperty_OverrideCategoryMixWithOthers屬性來(lái)實(shí)現(xiàn)允許人們?cè)谑褂媚愕膽?yīng)用時(shí)收聽(tīng)其他音頻。但是你也想要確保用戶(hù)在他們正在播放其他音頻時(shí)能聽(tīng)到語(yǔ)音提示。你可以為音頻會(huì)話(huà)添加kAudioSessionProperty_OtherMixableAudioShouldDuck屬性來(lái)確保你的音頻比其他音頻的聲音更大( iPhone上的電話(huà)音頻除外)。這些設(shè)置允許應(yīng)用在后臺(tái)運(yùn)行時(shí)也可以恢復(fù)音頻會(huì)話(huà),可以確保用戶(hù)能獲得實(shí)時(shí)更新的導(dǎo)航。

情境5:一個(gè)允許用戶(hù)上傳文本和圖片到網(wǎng)站上的博客應(yīng)用。你需要提供:

  • 簡(jiǎn)短的啟動(dòng)音效文件
  • 伴隨用戶(hù)行為產(chǎn)生的各式各樣的短音效(例如當(dāng)郵件被上傳后播放的音效)
  • 發(fā)送失敗時(shí)播放的提示音

在該應(yīng)用中,聲音提升了用戶(hù)體驗(yàn),但也不是必需的。主任務(wù)與音頻并沒(méi)有關(guān)系,用戶(hù)也不是必須要通過(guò)收聽(tīng)聲音才能成功使用應(yīng)用。在這一情境中,你最好 使用系統(tǒng)聲音服務(wù)來(lái)產(chǎn)生聲音。這是因?yàn)檫@個(gè)應(yīng)用中所有聲音的音頻情境都符合本技術(shù)想要達(dá)到的目的,也就是說(shuō)應(yīng)制作符合用戶(hù)所期待的、能通過(guò)設(shè)備和鈴聲/靜 音(或靜音)開(kāi)關(guān)來(lái)調(diào)節(jié)的界面音效和提示音。

3.19.3 管理音頻中斷(Manage Audio Interruptions)

有時(shí)候,當(dāng)前播放的音頻會(huì)被來(lái)自于不同應(yīng)用的音頻所打斷。舉個(gè)例子,在iPhone上,來(lái)電會(huì)持續(xù)中斷當(dāng)前應(yīng)用的音頻。在多任務(wù)情境中,這種音頻中斷的頻率可能會(huì)很高。

為了提供用戶(hù)喜歡的音頻體驗(yàn),iOS系統(tǒng)依賴(lài)于你能做到下面幾點(diǎn):

  • 識(shí)別可能會(huì)引起應(yīng)用中斷的音頻類(lèi)型
  • 當(dāng)應(yīng)用在音頻中斷結(jié)束后繼續(xù)運(yùn)行時(shí)進(jìn)行合理地反饋

每個(gè)應(yīng)用需要識(shí)別會(huì)引起音頻中斷的類(lèi)型,但不是每個(gè)應(yīng)用都需要決定如何在音頻中斷結(jié)束后進(jìn)行反饋。這是因?yàn)槎鄶?shù)類(lèi)型的應(yīng)用應(yīng)在音頻中斷結(jié)束后恢復(fù)音頻。只有那些主要或部分由媒體播放組成(以及提供媒體播放控制)的應(yīng)用,才必須用額外的步驟來(lái)決定什么是合適的反饋。

從概念上講,基于中斷當(dāng)前音頻的音頻類(lèi)型以及中斷結(jié)束后用戶(hù)所期望的特定的應(yīng)用反饋方式,有兩種類(lèi)型的音頻中斷:

  • 可恢復(fù)性中斷是(resumable interruption)被用戶(hù)視為臨時(shí)穿插在他們的主要聆聽(tīng)體驗(yàn)中的音頻引起的。

在可恢復(fù)性中斷結(jié)束后,有媒體播放控件的應(yīng)用應(yīng)該恢復(fù)它被中斷前的任務(wù),無(wú)論是繼續(xù)播放音頻還是保持暫停。沒(méi)有媒體播放控件的應(yīng)用則應(yīng)該恢復(fù)播放音頻。

舉個(gè)例子,試想用戶(hù)在iPhone上使用應(yīng)用播放音樂(lè)時(shí),在播一首歌的中間來(lái)了一個(gè)網(wǎng)絡(luò)電話(huà)。用戶(hù)接起了電話(huà),期望在他們通話(huà)時(shí)播放的應(yīng)用能靜音。 在通話(huà)結(jié)束后,用戶(hù)希望播放的應(yīng)用自動(dòng)恢復(fù)播放歌曲,因?yàn)橐魳?lè)而非電話(huà)才是他們的主要聆聽(tīng)體驗(yàn),而他們?cè)陔娫?huà)接入前也沒(méi)有暫停音樂(lè)。另一方面,如果用戶(hù)在 電話(huà)接入前暫停了音樂(lè)播放,他們會(huì)希望電話(huà)結(jié)束后音樂(lè)仍保持暫停。

其他能引起可恢復(fù)性中斷的應(yīng)用的例子還有那些具備鬧鐘、音頻提示(例如語(yǔ)音方向指示)或其他間歇性音頻功能的應(yīng)用。

  • 不可恢復(fù)中斷(nonresumable interruption)是 由那些被用戶(hù)視為首要聽(tīng)覺(jué)體驗(yàn)的音頻所引起的,比如媒體播放產(chǎn)生的音頻。在不可恢復(fù)中斷結(jié)束后,顯示媒體播放控件的應(yīng)用不應(yīng)該恢復(fù)播放原來(lái)的音頻。而沒(méi)有 媒體播放控件的應(yīng)用應(yīng)該恢復(fù)播放音頻。例如,假設(shè)用戶(hù)正在收聽(tīng)一個(gè)音樂(lè)播放應(yīng)用(音樂(lè)應(yīng)用1),此時(shí)另一個(gè)音樂(lè)播放應(yīng)用(音樂(lè)應(yīng)用2)打斷了它。用戶(hù)終止 后決定收聽(tīng)音樂(lè)應(yīng)用2一段時(shí)間。在退出音樂(lè)應(yīng)用2之后,用戶(hù)不想要音樂(lè)應(yīng)用1自動(dòng)恢復(fù)播放,因?yàn)榇藭r(shí)他們主動(dòng)將音樂(lè)應(yīng)用2作為首要的聽(tīng)覺(jué)體驗(yàn)。

下面的指南可以幫助你決定當(dāng)一個(gè)音頻中斷后如何繼續(xù)以及提供什么信息:

確定由你的應(yīng)用引起的音頻中斷的類(lèi)型。在你的音頻結(jié)束時(shí),你可以通過(guò)以下任意一種方式去禁用你的音頻會(huì)話(huà)來(lái)做到這一點(diǎn):

  • 如果你的應(yīng)用引起了一個(gè)可恢復(fù)性中斷,使用AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivation標(biāo)識(shí)禁用你的音頻會(huì)話(huà)。
  • 如果你的應(yīng)用引起了一個(gè)不可恢復(fù)中斷,不用任何標(biāo)識(shí)就可以禁用你的音頻會(huì)話(huà)。

無(wú)論提供與否,標(biāo)識(shí)會(huì)在適宜的情況下允許iOS系統(tǒng)賦予被中斷的應(yīng)用自動(dòng)恢復(fù)播放它們的音頻的能力。

決定是否應(yīng)該在一個(gè)音頻中斷結(jié)束后恢復(fù)音頻。你應(yīng)依據(jù)你應(yīng)用中所提供的音頻體驗(yàn)來(lái)做這一決斷。

  • 如果你的應(yīng)用給用戶(hù)呈現(xiàn)了用于播放或暫停音頻的媒體播放控件,你需要在一個(gè)音頻中斷結(jié)束后檢查AVAudioSessionInterruptionFlags_ShouldResume標(biāo)識(shí),如果你的應(yīng)用接受應(yīng)該恢復(fù)(Should Resume)標(biāo)識(shí),你的應(yīng)用應(yīng)該:
  • 恢復(fù)播放音頻(你的應(yīng)用被打斷時(shí)在主動(dòng)播放音頻)
    ·不恢復(fù)播放音頻(你的應(yīng)用被打斷時(shí)沒(méi)有在主動(dòng)播放音頻)
  • 如果你的應(yīng)用沒(méi)有呈現(xiàn)任何用戶(hù)可用于播放或暫停音頻的媒體播放控件,你的應(yīng)用無(wú)論是否有“應(yīng)該恢復(fù)”標(biāo)識(shí),都始終應(yīng)在音頻中斷結(jié)束后恢復(fù)之前播放的音頻。例如,播放配樂(lè)的游戲應(yīng)該在被中斷后自動(dòng)恢復(fù)播放配樂(lè)。

3.19.4 適時(shí)處理媒體遠(yuǎn)程控制事件(Handle Media Remote Control Events, if Appropriate)

當(dāng)人們使用iOS媒體控制器或輔助控制器(如耳機(jī)線(xiàn)控)時(shí),應(yīng)用要能響應(yīng)遠(yuǎn)程控制。使你的應(yīng)用能接收來(lái)自于你的用戶(hù)界面之外的輸入,無(wú)論你的應(yīng)用當(dāng)前是在前臺(tái)還是后臺(tái)播放音頻。

應(yīng)用可以在播放媒體的過(guò)程中,通過(guò)后臺(tái)向支持Airplay的硬件(如Apple TV)發(fā)送視頻。這樣的應(yīng)用可以接收通過(guò)遠(yuǎn)程控制事件實(shí)現(xiàn)的用戶(hù)輸入行為,因此用戶(hù)可以控制處于后臺(tái)運(yùn)行狀態(tài)的應(yīng)用中的視頻播放。除此之外,這類(lèi)應(yīng)用在后臺(tái)運(yùn)行時(shí)也能恢復(fù)被中斷的音頻。

當(dāng)一個(gè)媒體播放應(yīng)用在后臺(tái)播放音頻或視頻時(shí),尤其需要合理響應(yīng)媒體遠(yuǎn)程控制事件。

當(dāng)你的應(yīng)用在后臺(tái)運(yùn)行時(shí),為了滿(mǎn)足與播放媒體特權(quán)相關(guān)的責(zé)任,要確保遵循以下這些原則:

限制你的應(yīng)用接收遠(yuǎn)程控制事件的次數(shù)。例如,當(dāng)你的應(yīng)用可以幫助用戶(hù)閱讀內(nèi)容、搜索信息或是收聽(tīng)音頻時(shí),它只有 在用戶(hù)處于音頻場(chǎng)景中時(shí)才應(yīng)該接收遠(yuǎn)程控制事件。當(dāng)用戶(hù)脫離音頻情境時(shí),你應(yīng)該放棄接收事件的能力。如果你的應(yīng)用允許用戶(hù)在支持AirPlay的設(shè)備上播 放音視頻,它應(yīng)該在媒體播放期間都可以接收遠(yuǎn)程控制事件。遵循這些原則能使用戶(hù)在你的應(yīng)用中處于非媒體情境中時(shí),通過(guò)耳機(jī)控制獲得另一個(gè)應(yīng)用的媒體體驗(yàn)。

盡可能地使用系統(tǒng)原生的控件以提供AirPlay支持。當(dāng)你使用MPMoviePlayerController類(lèi)實(shí)現(xiàn)AirPlay播放功能時(shí),你可以利用標(biāo)準(zhǔn)的控件使用戶(hù)可以選擇當(dāng)前范圍內(nèi)支持AirPlay的硬件。或者你可以使用MPVolumeView類(lèi)來(lái)顯示用戶(hù)可選擇的支持AirPlay的音頻或視頻設(shè)備。用戶(hù)習(xí)慣于這些標(biāo)準(zhǔn)控件的外觀(guān)和行為,因此他們可以理解如何在你的應(yīng)用中使用它們。

不要改變事件的用途,即使這個(gè)事件在你的應(yīng)用中沒(méi)有意義。用戶(hù)期望iOS系統(tǒng)的所有應(yīng)用媒體控制和輔助控制能有功能上的統(tǒng)一。你不必實(shí)現(xiàn)你的應(yīng)用所不需要的那些事件,但你所實(shí)現(xiàn)的事件必須產(chǎn)生符合用戶(hù)期望的結(jié)果。如果你重新定義一個(gè)事件的意義,你會(huì)使用戶(hù)困惑并冒險(xiǎn)把他們帶入一個(gè)未知的狀態(tài),他們只能通過(guò)退出你的應(yīng)用來(lái)逃離。

 

3.20 VoiceOver

VoiceOver增加了對(duì)盲人、弱視用戶(hù)以及一些有特定學(xué)習(xí)困難的用戶(hù)的可用性。

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

為了確保VocieOver的用戶(hù)能使用你的應(yīng)用,你需要在你的用戶(hù)界面中提供一些有關(guān)視圖和控件的描述信息。對(duì)VoiceOver的支持不需要你改變你用戶(hù)界面內(nèi)的任何視覺(jué)設(shè)計(jì)。

當(dāng)你完全遵照標(biāo)準(zhǔn)的方式使用標(biāo)準(zhǔn)的用戶(hù)界面元素時(shí),幾乎不(即使有也很少)需要增加額外的工作。你的用戶(hù)界面越趨向定制化,你就越需要提供更多的信息來(lái)保證VoiceOver能準(zhǔn)確的描述你的應(yīng)用。

增加你的iOS應(yīng)用對(duì)VoiceOver用戶(hù)的可用性,可以擴(kuò)大你的用戶(hù)基礎(chǔ)并幫助你進(jìn)入新的市場(chǎng)。支持VoiceOver也可以幫助你遵守由主流群體所制定的可用性指導(dǎo)準(zhǔn)則。

3.21 路線(xiàn)選擇(Routing)

地圖可以顯示到達(dá)用戶(hù)目的地的可選路線(xiàn):

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

當(dāng)人們想要獲得關(guān)于某條路線(xiàn)的更多交通信息時(shí),地圖也可以顯示能提供路線(xiàn)選擇的應(yīng)用列表(包括安裝在設(shè)備上的應(yīng)用也包括應(yīng)用商店中的應(yīng)用)。

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

路線(xiàn)選擇應(yīng)用可以提供當(dāng)前選擇的路線(xiàn)有關(guān)的信息。人們希望路線(xiàn)選擇應(yīng)用能夠快捷、易用,特別是保證準(zhǔn)確性。依據(jù)本章提供的指導(dǎo)原則能幫你為用戶(hù)提供他們可信任的交通信息和他們期望的用戶(hù)體驗(yàn)。

重要:地圖能依據(jù)人們選擇的路線(xiàn)給他們提供駕車(chē)和步行的指示。路線(xiàn)選擇應(yīng)用可以提供交通信息,它著重于使用交通工具(如公交車(chē)、火車(chē)、地鐵、渡船、自行車(chē)、行人、穿梭巴士等)的模型替代實(shí)物逐步地指示方向。

如果你的應(yīng)用不能提供用戶(hù)指定的路線(xiàn)的交通信息,那么不要將你的應(yīng)用定位為路線(xiàn)選擇應(yīng)用。

實(shí)現(xiàn)你的應(yīng)用所承諾的功能。當(dāng)人們?cè)诮煌斜砝锟吹侥愕膽?yīng)用時(shí),他們認(rèn)為它可以幫助其到達(dá)目的地。但是如果你的 應(yīng)用不能提供所選路線(xiàn)的信息,或者它沒(méi)能涵蓋它看似應(yīng)該涵蓋的那些種類(lèi)的交通信息,人們就不會(huì)愿意給它第二次機(jī)會(huì)。準(zhǔn)確的表達(dá)出你的應(yīng)用的能力是十分重要 的;否則,你的應(yīng)用會(huì)看起來(lái)像是在故意誤導(dǎo)用戶(hù)。

在你的路線(xiàn)選擇應(yīng)用中,有兩種主要的方式可以給用戶(hù)信心:

  • 盡可能準(zhǔn)確的定義你所支持的地理區(qū)域。例如,如果你的應(yīng)用能幫助人們獲得巴黎的公交線(xiàn)路的信息,那你所支持的地區(qū)應(yīng)該是巴黎,不是法蘭西島,也不是法國(guó)。
  • 明確你所支持的交通信息類(lèi)型。舉個(gè)例子,如果你專(zhuān)攻于地鐵信息,不要暗示你仿佛支持所有的軌道交通類(lèi)型

注意:雖然準(zhǔn)確的報(bào)告你所支持的地區(qū)可能意味著會(huì)減少你的應(yīng)用在交通信息列表里的出現(xiàn)次數(shù),但這么做卻可以幫助用戶(hù)更加信任它。

為易用性合理組織界面。易用性對(duì)于路線(xiàn)規(guī)劃應(yīng)用來(lái)說(shuō)特別重要,因?yàn)橛脩?hù)常常會(huì)在極具挑戰(zhàn)性的情況下使用它們——例如在明亮的陽(yáng)光下、在昏暗的車(chē)廂內(nèi)抑或是在顛簸的旅程中,或在非常緊急的情況下。要確保你的文字在任何光照條件下都能容易的閱讀,確保按鈕即使在并不平穩(wěn)的旅程中也能易于準(zhǔn)確點(diǎn)擊。

專(zhuān)注于路線(xiàn)。雖然輔助信息會(huì)很有用,但你的應(yīng)用應(yīng)該專(zhuān)注于為用戶(hù)提供逐步的指示以便他們能據(jù)此到達(dá)目的地。特別要強(qiáng)調(diào)的是,你要讓用戶(hù)知道他們處于哪一步,并知道如何到達(dá)下一步。你可以提供額外的數(shù)據(jù)(比如時(shí)間表或系統(tǒng)地圖),但不要讓這些數(shù)據(jù)比交通信息還重要。

為路線(xiàn)的每一步提供信息。永遠(yuǎn)不要讓用戶(hù)感覺(jué)被你的應(yīng)用所遺棄。即使在可以準(zhǔn)確的報(bào)道你所支持的地區(qū)時(shí),你也不 能假定用戶(hù)已經(jīng)抵達(dá)的路線(xiàn)中的第一個(gè)交通節(jié)點(diǎn)或是最后一個(gè)交通節(jié)點(diǎn)就是他們目的地點(diǎn)。為了控制這一情況,首先就是測(cè)量起點(diǎn)到終點(diǎn)距離。如果距離足夠短,要 提供從用戶(hù)當(dāng)前位置到第一個(gè)交通節(jié)點(diǎn)及從最后一個(gè)交通節(jié)點(diǎn)到用戶(hù)目的地的步行方向指示。如果步行不是一個(gè)合理的選擇,嘗試描繪用戶(hù)的其他選項(xiàng)。如果必要的 話(huà),你可以給用戶(hù)提供打開(kāi)地圖,獲取這部分路線(xiàn)的步行或駕車(chē)方向指示的方式。

當(dāng)用戶(hù)從地圖應(yīng)用切回你的應(yīng)用時(shí),不要要求他們重復(fù)輸入信息。如果用戶(hù)從地圖應(yīng)用切入(你的應(yīng)用)時(shí),你已經(jīng)獲知了他們中意的起點(diǎn)與終點(diǎn),因此你可以在應(yīng)用打開(kāi)時(shí)直接呈現(xiàn)適合的交通信息。如果用戶(hù)從主屏幕中開(kāi)啟你的應(yīng)用,要為他們提供簡(jiǎn)潔的方式用以輸入路線(xiàn)詳情。

顯示圖文并茂的交通信息。地圖頁(yè)面可以幫助人們以更大的、實(shí)物性的視角查閱他們完整的線(xiàn)路;清晰的步驟可以幫助人們專(zhuān)注于他們抵達(dá)目的地所需采取的必要行動(dòng)。最好可以同時(shí)支持這兩個(gè)任務(wù)并能讓用戶(hù)便捷地進(jìn)行切換。

注意:無(wú)論以什么格式,最重要的是顯示與用戶(hù)線(xiàn)路相關(guān)的相同的交通信息。例如,如果路線(xiàn)中包含五個(gè)步驟,在地圖和路線(xiàn)列表頁(yè)中必須描繪相同的五步。

當(dāng)你的應(yīng)用被從交通列表中選中時(shí),需要以顯示完整的線(xiàn)路做為良好的開(kāi)始(包括在地圖頁(yè)面中顯示始于或抵達(dá)交通節(jié)點(diǎn)的步行路線(xiàn))。地圖頁(yè)面可以為用戶(hù)提供他們旅途的多步驟的總覽,并能展示適于周遭地理環(huán)境的路線(xiàn)。

用附加信息豐富地圖頁(yè)面。人們期望你的應(yīng)用中的地圖可以表現(xiàn)的與他們使用過(guò)的其他地圖相似。除了用戶(hù)能放大和縮小以外,你還應(yīng)該顯示用戶(hù)所需的那些注釋信息。例如,你應(yīng)該顯示圖釘用以代表用戶(hù)當(dāng)前的位置、目的地以及沿路的轉(zhuǎn)乘點(diǎn)或重要的節(jié)點(diǎn)。

確保避免只顯示一個(gè)單獨(dú)的圖釘,因?yàn)閷?duì)用戶(hù)來(lái)說(shuō),如果沒(méi)有額外的背景,很難理解它代表什么。欲了解在你的應(yīng)用中使用地圖頁(yè)面的更多信息,請(qǐng)參閱Map View.

盡可能地整合靜態(tài)地圖頁(yè)面,例如在地圖視圖中加入地鐵系統(tǒng)地圖等。一個(gè)很好的實(shí)現(xiàn)方法就是在地圖頁(yè)面覆蓋靜態(tài)圖片,以便用戶(hù)可以看到他們的路線(xiàn)及他們的當(dāng)前位置是如何與更大的交通系統(tǒng)相關(guān)聯(lián)的。

注意:如果你決定讓?xiě)?yīng)用顯示一個(gè)靜態(tài)的地圖圖片,要確保使用高分辨率的圖片以保證用戶(hù)在縮放時(shí)維持高質(zhì)量的顯示。

給用戶(hù)提供不同的方案來(lái)挑選多樣的交通選擇。很多因素會(huì)影響人們交通的選擇,例如不同的時(shí)間段,天氣以及他們攜 帶東西的多少,所以提供簡(jiǎn)潔的不同交通方式的對(duì)比是十分重要的。例如,你要能讓用戶(hù)可以依據(jù)開(kāi)始或結(jié)束的時(shí)間、需要步行的數(shù)量、沿途停下的次數(shù)抑或轉(zhuǎn)乘的 次數(shù)或所需的不同的交通類(lèi)型等來(lái)挑選交通方式。不管你顯示多種交通選擇的順序如何,確保用戶(hù)能立即分辨出這些選項(xiàng)的不同之處。

考慮使用推送通知為人們提供與路線(xiàn)相關(guān)的重要信息。盡可能的讓人們了解交通情況信息的變化,以便他們可以據(jù)此調(diào) 節(jié)自己的計(jì)劃。例如,如果火車(chē)晚點(diǎn)或者巴士路線(xiàn)臨時(shí)停滯,人們可能會(huì)需要選擇不同的交通路線(xiàn)到達(dá)目的地。而在一條不同步驟的站點(diǎn)之間相隔很長(zhǎng)距離的交通路 線(xiàn)中,人們會(huì)希望在他們的交通工具將要抵達(dá)行程中的下一部分時(shí)能獲得通知。

3.22 編輯菜單(Edit Menu)

用戶(hù)能呼出一個(gè)編輯菜單來(lái)完成諸如在文本視圖、網(wǎng)頁(yè)或圖片視圖中的剪切、粘貼以及選擇操作。

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

你可以通過(guò)調(diào)整一些菜單的行為使用戶(hù)對(duì)你應(yīng)用中的內(nèi)容有更多的控制權(quán)。舉個(gè)例子,你可以:

  • 列舉出適用于當(dāng)前情境的標(biāo)準(zhǔn)菜單的命令
  • 在菜單顯示前判定菜單的位置,以避免你應(yīng)用的用戶(hù)界面中的重要信息被遮蓋
  • 定義當(dāng)用戶(hù)雙擊展開(kāi)菜單時(shí)會(huì)被默認(rèn)選中的對(duì)象

你不能改變菜單本身的顏色和形狀。

欲了解如何在代碼中實(shí)現(xiàn)這些行為的相關(guān)信息,請(qǐng)參閱Copy, Cut, and Paste Operations.

為了確保編輯菜單在你的應(yīng)用中的表現(xiàn)符合用戶(hù)期望,你應(yīng)該:

顯示在當(dāng)前情境下合理的命令。例如,當(dāng)沒(méi)有對(duì)象被選擇的時(shí)候,菜單中不應(yīng)該包括復(fù)制或剪切(命令),因?yàn)檫@些命令是針對(duì)選擇(的內(nèi)容)而操作的。相似地,如果有對(duì)象被選擇的時(shí)候,菜單中不應(yīng)該包括選擇(命令)。如果你在自定義頁(yè)面中支持編輯菜單,你就有責(zé)任確保菜單中顯示的命令切合當(dāng)前的情境。

依據(jù)你的頁(yè)面布局調(diào)節(jié)菜單顯示。iOS依據(jù)可獲得的空間大小選擇在插入點(diǎn)的上方或下方來(lái)放置菜單指針以顯示編輯菜單,這樣用戶(hù)就能看到菜單命令是如何與內(nèi)容相關(guān)的。在必要的情況下,你可以通過(guò)程序在菜單顯示之前決定它的位置,這樣可以避免用戶(hù)界面中的重要信息被遮擋。

支持兩種手勢(shì)來(lái)調(diào)用菜單。雖然點(diǎn)擊和長(zhǎng)按手勢(shì)是用戶(hù)呼起編輯菜單的首選方式,但他們也可以在文本頁(yè)面中通過(guò)雙擊一個(gè)單詞來(lái)選擇該單詞并同時(shí)呼起菜單。如果你在自定義頁(yè)面中支持菜單,確保它能支持兩種手勢(shì)。除此之外,你可以定義用戶(hù)雙擊時(shí)默認(rèn)的選擇對(duì)象。

避免在你的用戶(hù)界面中創(chuàng)建和編輯菜單中功能相同的按鈕。例如,使用編輯菜單讓用戶(hù)進(jìn)行復(fù)制操作遠(yuǎn)比提供一個(gè)復(fù)制按鈕要好,因?yàn)橛脩?hù)將會(huì)想知道為什么在你的應(yīng)用中會(huì)有兩種方法做同樣的事。

如果靜態(tài)文本的選擇對(duì)用戶(hù)來(lái)說(shuō)是有用的,那么可以考慮使用它。用戶(hù)可能想要復(fù)制圖片的標(biāo)題,但他們不可能想復(fù)制選項(xiàng)卡的標(biāo)簽或是屏幕的標(biāo)題,比如“賬戶(hù)(Account)”。在文本頁(yè)面內(nèi),文字的選擇應(yīng)該是默認(rèn)設(shè)置的。

不要使按鈕標(biāo)題可選擇。如果按鈕的標(biāo)題是可選擇的,用戶(hù)很難在不激活按鈕的情況下呼出編輯菜單。通常來(lái)說(shuō),像按鈕這樣操作的元素不需要是可選擇的。

將對(duì)撤銷(xiāo)與重做的支持與對(duì)復(fù)制與粘貼的支持組合到一起。人們經(jīng)常希望在他們改變主意的時(shí)候能撤銷(xiāo)最近的操作。由于編輯菜單在它操作執(zhí)行的時(shí)候是不需要確認(rèn)的,你應(yīng)該給用戶(hù)提供撤銷(xiāo)或重做這些操作的機(jī)會(huì)。

如果你需要?jiǎng)?chuàng)建自定義的編輯菜單項(xiàng),需要像下面展示的這個(gè)例子一樣遵循這些指導(dǎo)原則:

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

創(chuàng)建直接作用于用戶(hù)選擇的包含編輯、修改或其他操作的編輯菜單。人們期望在當(dāng)前的情境內(nèi)用標(biāo)準(zhǔn)的編輯菜單項(xiàng)操作文本或?qū)ο?,那么你的自定義菜單項(xiàng)最好能有相似的表現(xiàn)。

將自定義項(xiàng)列在所有系統(tǒng)提供的項(xiàng)的后面。不要將你的自定義項(xiàng)與系統(tǒng)提供的項(xiàng)混置在一起。

保持自定義菜單項(xiàng)的數(shù)量在合理的范圍內(nèi)。你不應(yīng)該用太多選擇迷惑你的用戶(hù)。

使用簡(jiǎn)潔的名稱(chēng)命名你的自定義菜單項(xiàng)并確保名稱(chēng)能準(zhǔn)確的描述命令的作用。通常,項(xiàng)的名字應(yīng)該是一個(gè)可以描述行為 如何執(zhí)行的動(dòng)詞。雖然你通常會(huì)使用單個(gè)的大寫(xiě)單詞作為名字,但如果你必須使用一個(gè)短語(yǔ)(作為名字)時(shí),就應(yīng)使用標(biāo)題式大寫(xiě)短語(yǔ)。(簡(jiǎn)潔的、標(biāo)題性的大寫(xiě)詞 就是將除了文章、四字及四字以下的并列連詞與介詞之外的單詞都大寫(xiě)。)

3.23 撤銷(xiāo)與重做(Undo and Redo)

用戶(hù)通過(guò)搖晃設(shè)備觸發(fā)撤銷(xiāo)操作,顯示提醒框讓他們可以:

  • 撤銷(xiāo)他們剛才輸入的內(nèi)容
  • 重做先前撤銷(xiāo)的輸入
  • 取消撤銷(xiāo)操作

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

你可以通過(guò)在你的應(yīng)用中定義出更通用的方式來(lái)支持撤銷(xiāo)操作:

  • 允許用戶(hù)撤銷(xiāo)或重做的行為
  • 在你的應(yīng)用的哪種情形下晃動(dòng)手勢(shì)是用于撤銷(xiāo)操作的
  • 支持多少步的撤銷(xiāo)

欲了解如何用代碼實(shí)現(xiàn)這一行為,請(qǐng)參閱Undo Architecture.如果在你的應(yīng)用中支持撤銷(xiāo)和重做,請(qǐng)遵循以下準(zhǔn)則以提供好的用戶(hù)體驗(yàn):

為用戶(hù)提供簡(jiǎn)潔的描述性短語(yǔ)使其能準(zhǔn)確的獲知他們正在撤銷(xiāo)或重做的內(nèi)容。iOS系統(tǒng)自動(dòng)提供了“撤銷(xiāo)”和“重 做”的字符串(包括詞語(yǔ)后面的空格)作為撤銷(xiāo)警示按鈕的標(biāo)題,但你需要提供一或兩個(gè)詞語(yǔ)用于輔助描述用戶(hù)的重做或撤銷(xiāo)操作。例如,你可能提供文本的“命 名”或“地址更改”之類(lèi)的詞語(yǔ)用以創(chuàng)建像“撤銷(xiāo)命名”或“重新更改地址”這樣的按鈕標(biāo)題。(要注意,在提醒框中,“取消”按鈕是不能改變或移除的)。

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

避免提供的文本過(guò)長(zhǎng)。太長(zhǎng)的按鈕標(biāo)題容易被斷章取義并且很難被用戶(hù)解讀。由于這個(gè)文本用于按鈕的標(biāo)題中的,要使用標(biāo)題樣式的大寫(xiě)形式并且不能添加標(biāo)點(diǎn)。

避免過(guò)度使用搖晃手勢(shì)。即使你能程式化地設(shè)定你的應(yīng)用將搖晃事件作為用戶(hù)激活撤銷(xiāo)操作的途徑,你也在冒著混淆用戶(hù)視聽(tīng)的風(fēng)險(xiǎn),因?yàn)樗麄円部赡苁褂脫u晃執(zhí)行另一個(gè)不同的操作。分析你應(yīng)用中的人機(jī)交互以避免創(chuàng)建那些用戶(hù)無(wú)法可靠地預(yù)測(cè)搖晃手勢(shì)結(jié)果的場(chǎng)景。

如果撤銷(xiāo)和重做在你的應(yīng)用中是基礎(chǔ)性的任務(wù),盡量使用系統(tǒng)原生的撤銷(xiāo)與重做按鈕。記住搖晃手勢(shì)是用戶(hù)觸發(fā)撤銷(xiāo)與重做操作的主要方式,而如果提供兩種不同方式完成同樣的任務(wù)則會(huì)使用戶(hù)困惑。如果你認(rèn)為很有必要提供直觀(guān)專(zhuān)有的撤銷(xiāo)與重做操作,你可以在導(dǎo)航欄中放置系統(tǒng)原生的按鈕。(欲了解更多關(guān)于這些按鈕的信息,參見(jiàn)Toolbar and Navigation Bar Buttons).

將撤銷(xiāo)與重做能力與用戶(hù)當(dāng)下的情境進(jìn)行清晰地關(guān)聯(lián),而非過(guò)早地介入情境。仔細(xì)考慮你允許進(jìn)行撤銷(xiāo)與重做操作的情境。通常來(lái)說(shuō),用戶(hù)期望他們的改變和操作可以立即被有效的執(zhí)行。

3.24 鍵盤(pán)和輸入頁(yè)面(Keyboards and Input Views)

在iOS8與之后的系統(tǒng)中,你可以創(chuàng)建自定義的鍵盤(pán)擴(kuò)展內(nèi)容來(lái)替代系統(tǒng)的原生鍵盤(pán)。欲了解更多關(guān)于管理應(yīng)用內(nèi)擴(kuò)展(包括鍵盤(pán))的信息,請(qǐng)參閱APP Extensions;欲了解如何開(kāi)發(fā)自定義的鍵盤(pán)擴(kuò)展內(nèi)容的信息,請(qǐng)參閱Custom Keyboard.

在合適的情況下,你9也可以在你的應(yīng)用內(nèi)設(shè)計(jì)自定義的輸入頁(yè)面來(lái)替代系統(tǒng)原生的屏幕鍵盤(pán)。例如,Numbers(譯者注:iWork中的電子表單應(yīng)用程序)中提供了多種輸入頁(yè)面,這些頁(yè)面設(shè)計(jì)使數(shù)量、日期和其他值的輸入能簡(jiǎn)單地完成。

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

如果你提供自定義輸入頁(yè)面,確保它的功能對(duì)于來(lái)用戶(hù)來(lái)說(shuō)是清晰易懂的。

你也可以提供自定義的輸入輔助視圖,這種視圖通常表現(xiàn)為顯示在鍵盤(pán)(或你的自定義輸入頁(yè)面)上方的一個(gè)獨(dú)立元素。例如,在某些情境中,Numbers會(huì)顯示一個(gè)輸入輔助視圖用以幫助用戶(hù)執(zhí)行針對(duì)電子表格中的值的標(biāo)準(zhǔn)或自定義計(jì)算。

[ISUX譯]iOS 9人機(jī)界面指南(三):iOS 技術(shù) (下)

當(dāng)用戶(hù)在你的輸入頁(yè)面中敲擊自定義控件時(shí),使用標(biāo)準(zhǔn)的鍵盤(pán)敲擊聲提供聲音反饋。欲了解在代碼中如何使用這一聲音,請(qǐng)參閱UIDevice Class Reference中的playInputClick章節(jié)

注意:標(biāo)準(zhǔn)的敲擊音效只適用于當(dāng)前屏幕上的自定義輸入頁(yè)面。人們可以在設(shè)置-聲音中關(guān)閉所有的鍵盤(pán)音效(包括你的自定義輸入頁(yè)面中的那些)。

本章英文原文訪(fǎng)問(wèn)地址:iOS Human Interface Guidelines
本章中文翻譯PDF下載:點(diǎn)此下載

 

感謝你的閱讀,本文出處 騰訊ISUX

藍(lán)藍(lán)設(shè)計(jì)www.bouu.cn )是一家專(zhuān)注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供有效的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶(hù)體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)


分享本文至:

日歷

鏈接

個(gè)人資料

存檔