#11WeeksOfAndroid期間,全新的Play應(yīng)用內(nèi)評(píng)價(jià)API正式登場(chǎng)。通過(guò)Play Core開發(fā)庫(kù),Play團(tuán)隊(duì)推出了這項(xiàng)眾人期盼已久的功能。
#11WeeksOfAndroid
https://developer.android.google.cn/11weeksofandroid
Play應(yīng)用內(nèi)評(píng)價(jià)API正式登場(chǎng)
https://developer.android.google.cn/guide/playcore/in-app-review
盡管我們收到的大多為正面反饋,但一些開發(fā)者也表達(dá)了他們的擔(dān)憂,稱需要調(diào)整自己的UI流程適應(yīng)新API的要求。為打消這些疑慮,我們將向各位解釋說(shuō)明團(tuán)隊(duì)做出的一些決策,并提供進(jìn)一步指導(dǎo),幫助大家充分利用該API。
"為什么該API不提供任何信息?"
鑒于API的重要性與潛在濫用風(fēng)險(xiǎn),或會(huì)暴露用戶的評(píng)論,甚至獲悉評(píng)分面板是否顯示,團(tuán)隊(duì)設(shè)計(jì)了這款A(yù)PI將用戶隱私和體驗(yàn)放在首位。
雖然看上去這增加了開發(fā)者的工作難度,但我認(rèn)為實(shí)際情況并非如此。該API操作簡(jiǎn)單(只需調(diào)用兩個(gè)方法!),在設(shè)計(jì)上符合開發(fā)者的利益,同時(shí)平衡了用戶隱私問(wèn)題,并避免誘發(fā)不必要行為。要點(diǎn)在于明確"何時(shí)使用該API"。
"突然顯示的評(píng)分面板"
該API并非"隨機(jī)"顯示評(píng)分面板,而是由開發(fā)者確定啟動(dòng)評(píng)分流程的最佳位置和時(shí)機(jī)。
誠(chéng)然,該API的設(shè)計(jì)(如上所述)目的在于保護(hù)用戶。為此,該API不會(huì)提供有關(guān)評(píng)論顯示與否的信息,并且不會(huì)頻繁啟動(dòng)/彈出評(píng)分流程(詳情請(qǐng)參閱"配額")。
配額
https://developer.android.google.cn/guide/playcore/in-app-review#quotas
這樣能夠有效避免可能出現(xiàn)的濫用問(wèn)題,例如,應(yīng)用強(qiáng)迫用戶對(duì)其打分,或者誤導(dǎo)用戶,僅在界面中顯示"5星"評(píng)論(詳情請(qǐng)參閱"何時(shí)請(qǐng)求應(yīng)用內(nèi)評(píng)論")。
何時(shí)請(qǐng)求應(yīng)用內(nèi)評(píng)論
https://developer.android.google.cn/guide/playcore/in-app-review#when-to-request
"能否將該API用于'打分'按鈕"
如上所述,該API不應(yīng)由call-to-action(即"打分"按鈕)觸發(fā),而應(yīng)作為用戶流程的一部分觸發(fā)。
若不滿足顯示評(píng)分對(duì)話框的條件(如下面鏈接中列舉的狀況),用戶在點(diǎn)擊按鈕后可能不會(huì)觸發(fā)任何操作。
無(wú)法顯示出評(píng)分對(duì)話框的常見(jiàn)情況
https://developer.android.google.cn/guide/playcore/in-app-review/test#troubleshooting
"我的應(yīng)用沒(méi)有任何'成功'頁(yè)面,因此我沒(méi)有觸發(fā)評(píng)分的時(shí)機(jī)"
實(shí)際上還有其他很多適合啟動(dòng)評(píng)分流程的情景。例如,如果用戶已經(jīng)使用應(yīng)用一定次數(shù)或時(shí)間,您可以在他下一次打開應(yīng)用時(shí)啟動(dòng)評(píng)分流程,只要確保不過(guò)度觸發(fā)用戶評(píng)價(jià),且在用戶評(píng)價(jià)完成后繼續(xù)執(zhí)行原有流程即可。
"此行為將導(dǎo)致用戶給我的應(yīng)用打差評(píng)"
一些早期使用者表示,有些用戶可能永遠(yuǎn)不會(huì)給應(yīng)用評(píng)分,而如果將該API放置在正確的位置,就能夠幫助他們,使其在收到請(qǐng)求時(shí)愿意撰寫評(píng)論。
當(dāng)然,如果濫用該API,那效果必然適得其反。
"我可以使用一些變通的方法來(lái)確定評(píng)分面板顯示與否"
恭喜!盡管一些變通的方法看似可行,但我們并不推薦大家去做這樣的嘗試,如果一款正式發(fā)布的應(yīng)用是基于系統(tǒng)內(nèi)部實(shí)現(xiàn)細(xì)節(jié)而實(shí)現(xiàn)的,那它本身也存在一定風(fēng)險(xiǎn)。此外,這種做法也違反了設(shè)計(jì)初衷,反而可能產(chǎn)生負(fù)面影響。
"該API不可靠且無(wú)法正常工作"
如"測(cè)試應(yīng)用內(nèi)評(píng)價(jià)"部分所述,該API有嚴(yán)苛的使用要求。最常見(jiàn)的錯(cuò)誤包括:
未使用已發(fā)布到Google Play的應(yīng)用;
使用從未通過(guò)Google Play安裝這款應(yīng)用的帳號(hào)或已評(píng)價(jià)過(guò)應(yīng)用的帳號(hào);
當(dāng)設(shè)備中有多個(gè)賬戶時(shí),未選擇主賬戶(以及安裝了應(yīng)用的賬戶)。
測(cè)試應(yīng)用內(nèi)評(píng)價(jià)
https://developer.android.google.cn/guide/playcore/in-app-review/test
如需獲取詳情,請(qǐng)參閱問(wèn)題排查部分。
問(wèn)題排查
https://developer.android.google.cn/guide/playcore/in-app-review/test#troubleshooting
"我需要了解具體的配額!我該怎樣知道多久請(qǐng)求一次用戶評(píng)價(jià)?"
根據(jù)我們的設(shè)計(jì),該API并不會(huì)提供完成度/結(jié)果反饋,因此配額機(jī)制旨在幫助開發(fā)者避免濫用API和過(guò)度觸發(fā)評(píng)論請(qǐng)求。確切的配額屬于實(shí)現(xiàn)細(xì)節(jié)問(wèn)題,并且未來(lái)可能會(huì)發(fā)生變化。
應(yīng)用不應(yīng)試圖確定配額的具體情況,而應(yīng)嘗試添加自己的邏輯(何時(shí)/何處是請(qǐng)求評(píng)論的最佳時(shí)間),并在合適的條件通過(guò)該API啟動(dòng)評(píng)論。
所以,該API的最佳使用方式是什么?
沒(méi)有唯一或"最佳"的使用方式,而且每款應(yīng)用的用例和用戶群也各不相同。不過(guò),以下建議可能會(huì)對(duì)您有所幫助:
確保用戶在啟動(dòng)評(píng)分流程之前已經(jīng)體驗(yàn)過(guò)該應(yīng)用。
在界面過(guò)渡后啟動(dòng)評(píng)分流程。例如,執(zhí)行完某些操作并引導(dǎo)用戶返回"主"界面后。
避免在用戶點(diǎn)擊任何功能運(yùn)行(call-to-action)按鈕之后調(diào)用該API,防止此處顯示用戶不希望看到的對(duì)話框/面板。
啟動(dòng)評(píng)論時(shí),請(qǐng)通過(guò)提前預(yù)加載評(píng)分流程(requestReviewFlow)來(lái)防止阻塞用戶,如果請(qǐng)求未按時(shí)加載,則跳過(guò)啟動(dòng)流程(參閱ReviewViewModel示例)。
不要過(guò)度觸發(fā)評(píng)價(jià)(避免每次啟動(dòng)應(yīng)用都觸發(fā))。即使已預(yù)先加載,啟動(dòng)用戶評(píng)價(jià)也可能導(dǎo)致UI輕微延遲。
requestReviewFlow
https://developer.android.google.cn/reference/com/google/android/play/core/review
/ReviewManager.html#requestReviewFlow()
ReviewViewModel
https://github.com/android/app-bundle-samples/blob/master/PlayCoreKtx/app/src/main/java/com/google/android
/samples/dynamicfeatures/state/ReviewViewModel.kt
PlayCoreKtx示例應(yīng)用為一個(gè)手電筒應(yīng)用,您可選擇其背景顏色。該應(yīng)用以簡(jiǎn)化方式說(shuō)明了上文給出的一些建議。
ReviewViewModel負(fù)責(zé)"預(yù)熱"評(píng)分流程,確保ReviewInfo對(duì)象準(zhǔn)備就緒,并在滿足評(píng)論條件的情況下提供。
PaletteFragment請(qǐng)求ReviewViewModel在評(píng)分流程啟動(dòng)后立即對(duì)其進(jìn)行"預(yù)熱"。
當(dāng)用戶從PaletteFragment中選擇背景、返回主界面并關(guān)閉手電筒后,MainFragment會(huì)請(qǐng)求ReviewViewModel獲取ReviewInfo。
PlayCoreKtx
https://github.com/android/app-bundle-samples/tree/master/PlayCoreKtx
ReviewViewModel
https://github.com/android/app-bundle-samples/blob/master/PlayCoreKtx/app/src/main/java/com
/google/android/samples/dynamicfeatures/state/ReviewViewModel.kt
PaletteFragment
https://github.com/android/app-bundle-samples/blob/c32d75fc267440b8da8387429c6315528254c379
/PlayCoreKtx/features/picture/src/main/java/com/google/android/samples/dynamicfeatures
/ondemand/PaletteFragment.kt#L114
獲取ReviewInfo
https://github.com/android/app-bundle-samples/blob/c32d75fc267440b8da8387429c6315528254c379/PlayCoreKtx
/app/src/main/java/com/google/android/samples/dynamicfeatures/ui/MainFragment.kt#L126
注:為了簡(jiǎn)化示例,應(yīng)用沒(méi)有保存最近一次觸發(fā)評(píng)分流程的時(shí)間,并且使用了簡(jiǎn)單邏輯而可能多次觸發(fā)評(píng)分邏輯。正式的應(yīng)用應(yīng)使用更為復(fù)雜的邏輯。
希望這篇文章能幫助您理清一些概念,并讓您順利實(shí)現(xiàn)新的應(yīng)用內(nèi)評(píng)價(jià)API。如有任何疑問(wèn),歡迎您在留言區(qū)提問(wèn)交流。