應(yīng)用付費(fèi)鑒權(quán)
在用戶使用付費(fèi)應(yīng)用時(shí),校驗(yàn)用戶是否已經(jīng)成功購買此應(yīng)用。
注意
必須在7.2.1版本以上的華為應(yīng)用市場(chǎng)才可以使用AppGallery DRM Service SDK。
場(chǎng)景介紹
A公司開發(fā)了一款付費(fèi)應(yīng)用,用戶B購買了此應(yīng)用。在用戶B打開此應(yīng)用時(shí),應(yīng)用會(huì)校驗(yàn)用戶B是否已經(jīng)購買成功。如果購買成功,用戶B可以使用該應(yīng)用,否則將提示用戶B購買此應(yīng)用。
開發(fā)步驟
1.添加“版權(quán)保護(hù)id”和“版權(quán)保護(hù)公鑰”。
將使用入門中獲取的“版權(quán)保護(hù)id”和“版權(quán)保護(hù)公鑰”添加到應(yīng)用啟動(dòng)的主Activity的私有變量中。
//版權(quán)保護(hù)id
private static final String DRM_ID = "請(qǐng)?jiān)谶@里填寫版權(quán)保護(hù)id";
//版權(quán)保護(hù)公鑰
private static final String DRM_PUBLIC_KEY = "請(qǐng)?jiān)谶@里填寫版權(quán)保護(hù)公鑰";
2.創(chuàng)建鑒權(quán)回調(diào)類實(shí)例。
鑒權(quán)接口通過回調(diào)的方式得到鑒權(quán)結(jié)果判斷是否成功,回調(diào)方法onCheckSuccess()為鑒權(quán)成功,回調(diào)方法onCheckFailed()為鑒權(quán)失敗。
以下代碼示例創(chuàng)建了一個(gè)DrmCheckCallback實(shí)例,用于接收鑒權(quán)結(jié)果。
private class MyDrmCheckCallback implements DrmCheckCallback {
@Override
public void onCheckSuccess() {
//鑒權(quán)成功
…… ……
}
@Override
public void onCheckFailed(int errorCode) {
//鑒權(quán)失敗
//如果check接口入?yún)howErrorDialog為true或缺省時(shí),建議調(diào)用finish結(jié)束程序
//如果check接口入?yún)howErrorDialog為false時(shí)才需要處理errorCode,請(qǐng)參考錯(cuò)誤碼文檔
…… ……
}
}
3.調(diào)用check接口。
將AppGallery DRM Service SDK的主要鑒權(quán)方法check添加到應(yīng)用程序啟動(dòng)的主Activity的生命周期函數(shù)OnCreate的最開始位置,按接口說明傳入合法參數(shù),Activity將會(huì)被AppGallery DRM Service SDK保護(hù)。Drm.check方法是異步方法,進(jìn)入應(yīng)用的邏輯應(yīng)該在DrmCheckCallback返回結(jié)果后執(zhí)行。
應(yīng)用在除了onCreate之外的其他方法中(例如onResume,onStart,onRestart等)也有進(jìn)入應(yīng)用的處理時(shí),建議在這些地方增加判斷付費(fèi)鑒權(quán)的狀態(tài),以避免未購買用戶也可使用應(yīng)用。判斷方法可跟onCreate中保持一致,但需要注意驗(yàn)證重復(fù)調(diào)用導(dǎo)致的異常。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 調(diào)用鑒權(quán)方法
Drm.check(this, this.getPackageName(), DRM_ID, DRM_PUBLIC_KEY,new MyDrmCheckCallback());
}