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