闲鱼无障碍是怎么在端侧实现的
Hi,小伙伴們還記得之前刷屏的“閑魚為1700萬人,打造了一條盲道”的文章嗎?
在今年4月,閑魚和深圳市信息無障礙研究會取得了聯(lián)系。在溝通過程中,我們了解到在移動互聯(lián)網(wǎng)時代,視障人士同樣可以通過手機,享受到互聯(lián)網(wǎng)帶來的便利。閑魚作為目前國內(nèi)最大的閑置交易平臺,為了更好地服務用戶,在無障礙研究會的視障工程師團隊的支持下,在現(xiàn)有基礎上,先后進行了Android、iOS版本的無障礙支持。
閑魚在Flutter&Native混合工程下,如何進行的無障礙優(yōu)化?在日常版本迭代頻繁情況下,是怎么有效地保持穩(wěn)定支持無障礙功能?本文為您一一揭秘。
什么是無障礙?
什么是無障礙?一個人殘疾或者能力缺失,生活中有種種障礙,比如,殘疾人不能上樓梯,視障人士不能玩手機。殘障人士,同樣享有人權,擁有獨立生活的訴求。合理地使用工具減少障礙,比如為殘疾人設置電梯,為視障人士提供語音功能,都是減少或消除障礙的手段,也就是我們今天所說的無障礙(Accessibility)。
今天我們在處理端上的無障礙,一般是為視障群體服務。視障用戶如何獲取手機上的信息?不同手機系統(tǒng)提供了相應的讀屏輔助軟件,Android是Talkback,iOS稱為VoiceOver(旁白),視障用戶通過簡單的操作進行交互,觸摸、點擊、雙擊、左右滑動屏幕,系統(tǒng)就會通過旁白語音的形式,將界面信息反饋給視障用戶。
視障用戶怎么使用無障礙功能呢?我們以Android手機為例,簡單進行操作,通過“設置” > "更多設置" > “無障礙” > “Talkback”開啟Talkback,iOS操作也十分相似,通過“設置” > “通用” > “輔助功能” > “旁白”開啟旁白。
無障礙常態(tài)化機制:
很多開發(fā)可能會這么思考,我們是否需要針對視障群體,單獨開發(fā)出一個符合這個群體使用習慣的App版本?但實際上,殘障人士不是有意或無意地孤立的群體,不需要將將殘障人士從大眾中隔離,減少視障人士在端側(cè)正常版本的使用障礙,讓視障人士與普通人在相同環(huán)境下,能夠平滑地溝通交流,他們同樣有能力為社會創(chuàng)造價值。
因此,客戶端無障礙的優(yōu)化,在普通版本上進行無障礙優(yōu)化即可,原有的交互方式、信息內(nèi)容不需要變動,盡量不要提供特殊版本。
同時,端側(cè)業(yè)務需求不斷迭代,必須將無障礙優(yōu)化納入到正常的版本迭代流程中,建立無障礙優(yōu)化的常態(tài)化機制,約定產(chǎn)品日常開發(fā)流程,才能持續(xù)保障主干鏈路的無障礙穩(wěn)定支持。
- 產(chǎn)品需求階段:考慮特殊群體使用習慣,進行設計;
- 技術開發(fā)階段:根據(jù)優(yōu)化規(guī)范進行開發(fā),確保非裝飾性可交互元素都可被聚焦,包含正確描述;
- 產(chǎn)品測試階段:驗證開發(fā)優(yōu)化效果,同時提供給無障礙專業(yè)測試團隊進行測試;
- 產(chǎn)品上線階段:監(jiān)控線上障礙用戶使用情況,持續(xù)收集用戶反饋;
客戶端無障礙開發(fā)規(guī)范
端側(cè)進行無障礙設計時,必須有一套規(guī)范,提供技術在開發(fā)過程中進行參考,通過日常的開發(fā)積累,閑魚形成了一套無障礙開發(fā)規(guī)范。
以閑魚首頁為例,裝飾性元素“閑魚”不需要獨立焦點;可交互元素“二手手機”均可以被聚焦;左右滑動屏幕順序正確,可以正常獲得焦點;聚焦后元素信息描述正確;聚焦范圍合理;標簽“新鮮”、“關注”具有正確選中狀態(tài),焦點排序正確。
端側(cè)無障礙優(yōu)化方法
在不同平臺下,系統(tǒng)均提供了非常簡單的無障礙優(yōu)化方法,輔助開發(fā)者添加焦點描述、調(diào)整焦點順序、屏蔽不必要的焦點,我們在優(yōu)化過程中,根據(jù)開發(fā)規(guī)范,結(jié)合端側(cè)原有框架,使用不同無障礙接口,大部分問題可以較輕松地解決,以下簡單介紹不同平臺常用的無障礙優(yōu)化方法。
Android優(yōu)化方法
-
添加焦點描述
android:contentDescription="desc"view.setContentDescription(desc) -
屏蔽焦點,避免對應視圖被聚焦
android:importantForAccessibility="no"view.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO) -
調(diào)整焦點順序,使得對應視圖在設置id的視圖之后或之前被遍歷到。
android:accessibilityTraversalAfter="id"android:accessibilityTraversalBefore="id"view.setAccessibilityTraversalAfter(int)view.setAccessibilityTraversalBefore(int)
iOS優(yōu)化方法
-
添加焦點描述
@property(nonatomic, copy) NSString *accessibilityLabel; -
屏蔽、合并焦點
@property(nonatomic) BOOL isAccessibilityElement; -
添加控件角色
@property(nonatomic) UIAccessibilityTraits accessibilityTraits;
Flutter優(yōu)化方法
-
添加焦點描述
Semantics(value: "desc",child: Row(),); -
去除焦點
ExcludeSemantics(child: Row(),), -
合并焦點
MergeSemantics(child: Row());
Weex優(yōu)化方法
-
添加焦點描述
<div aria-label='desc'> </div> -
添加焦點角色
<div role='button' aria-label='desc'> </div> -
屏蔽焦點
<div aria-hidden='true'> </div>
最后
在閑魚無障礙專項整治中,我們和深圳市信息無障礙研究會的專業(yè)視障工程師團隊合作,進行主干功能的測試,前后修復了129個無障礙問題,18位工程師,迭代了4個版本,問題修復率87.5%,為視障人士打通了閑魚的主干鏈路,視障用戶可以在閑魚上,正常進行閑置的買賣交易。
目前,閑魚的視障用戶單端已經(jīng)超過4萬。而無障礙優(yōu)化絕不僅僅是一次專項治理即可一勞永逸。我們未來在日常開發(fā)流程中更加注重無障礙優(yōu)化,持續(xù)關注并推動業(yè)內(nèi)無障礙標準落地。同時,閑魚將于7月28日參加在上海舉行的第十四屆中國信息無障礙論壇,與騰訊、字節(jié)跳動等業(yè)內(nèi)同行交流無障礙體驗,喚起業(yè)內(nèi)及社會大眾對與視障人群的關注,為推動中國信息無障礙貢獻力量。
今年,阿里巴巴技術公益委員向所有工程師發(fā)起倡議,提倡“用技術助力公益,讓科技更有溫度”,在這里也希望業(yè)內(nèi)人士,一起推動互聯(lián)網(wǎng)App的無障礙優(yōu)化,有任何建議,隨時向我們提出,讓我們一起進一步消除特殊人群使用障礙,帶來創(chuàng)新的使用體驗。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的闲鱼无障碍是怎么在端侧实现的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在 Apache Spark 中利用 H
- 下一篇: 阿里HBase高可用8年抗战回忆录