[英]Time trial for one-time purchases with Google Play In-App Billing
目前,我可以免費下載功能有限的應用。 要解鎖完整功能,用戶需要通過Google Play應用內結算進行一次性購買。
最近,為了提高轉換率,我計划提供計時全功能。
這意味着,用戶可以在前7天內使用完整功能,而無需執行一次性購買。
7天后,他將回歸具有有限功能的應用程序。 如果他喜歡過去7天的全部功能,他將進行一次性購買。 如果沒有,他會讓它成為:)
我想知道,有什么方法可以利用現有的應用內購買結算API來實現我的計時功能嗎?
如果可能的話,我不想自己處理服務器端。
我知道應用內訂閱模式確實提供試用期: http : //developer.android.com/google/play/billing/billing_subscriptions.html
但是,訂閱模式不是我想要的。 我屬於非消耗品
Google的應用內結算功能不會直接支持您的試用版。 這是因為應用內結算是一種簡單的一次性購買模式(適用於托管的應用內商品),它只處理實際的購買流程和所有權管理。 您可以根據Google提供的購買和所有權來配置實際的應用內商品。
所以這意味着你必須實現:
1)您在7天內完成全部功能的試用,完全在您自己的代碼中。 具體來說,你必須弄清楚如何以一種方式實現這一點,即用戶不能簡單地卸載並重新安裝應用程序以獲得新的7天。
2)用戶試用期結束后,您的應用必須鎖定完整功能。
3)然后,您的應用應支持通過Google應用內購買流程,該應用在完成后會永久解鎖所有功能。
顯然,這個棘手的部分是(1)。 這可能需要對您的設備和/或用戶ID進行一些服務器端跟蹤,因為任何僅依賴於客戶端存儲的解決方案都可以輕松地用於多次試驗。
我在我的應用程序的Application類中有存儲日期
class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
setTrialDate();
}
}
設置試用版
protected void setTrialDate() {
// test already set
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
long trialDate = settings.getLong(TRIAL_PERIOD_DATE_START, -1);
if(trialDate == -1){
long date = new Date().getTime() ;
date += Consts.NUM_TRIAL_DAYS * Consts.DAY_MILSEC;
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putLong(TRIAL_PERIOD_DATE_START, date);
}
}
然后你隨時檢查是否還在試用
public boolean isInTrial(){
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
long trialDate = settings.getLong(TRIAL_PERIOD_DATE_START, -1);
if(trialDate == -1) {
setTrialDate();
return true;
}
long now = new Date().getTime();
if(trialDate < now){
return false;
} else {
return true;
}
}
但作為akira sed不會保護您免受安裝和卸載應用程序,我認為保護您必須做一些具有特定設備ID和試用日期開始的服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.