目前,我可以免费下载功能有限的应用。要解锁完整功能,用户需要通过Google Play应用内结算进行一次性购买。
最近,为了提高转换率,我计划提供计时全功能。
这意味着,用户可以在前7天内使用完整功能,而无需执行一次性购买。
7天后,他将回归具有有限功能的应用程序。如果他喜欢过去7天的全部功能,他将进行一次性购买。如果没有,他会让它成为:)
我想知道,有什么方法可以利用现有的应用内购买结算API来实现我的计时功能吗?
如果可能的话,我不想自己处理服务器端。
我知道应用内订阅模式确实提供试用期:http://developer.android.com/google/play/billing/billing_subscriptions.html
但是,订阅模式不是我想要的。我属于Non-consumable Items
答案 0 :(得分:5)
Google的应用内结算不会直接支持您的试用版。这是因为应用内结算是一种简单的一次性购买模式(适用于托管的应用内商品),它只处理实际的购买流程和所有权管理。您可以根据Google提供的购买和所有权来配置实际的应用内商品。
所以这意味着您必须实施:
1)您在7天内完成全部功能的试用,完全在您自己的代码中。具体来说,你必须弄清楚如何以一种方式实现这一点,即用户不能简单地卸载并重新安装应用程序以获得新的7天。
2)用户试用期结束后,您的应用必须锁定完整功能。
3)然后,您的应用应支持通过Google应用内购买流程,该应用在完成后会永久解锁所有功能。
显然,这个棘手的部分是(1)。这可能需要对您的设备和/或用户ID进行一些服务器端跟踪,因为任何仅依赖于客户端存储的解决方案都可以轻松地用于多次试用。
答案 1 :(得分:0)
我在应用程序的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和试用日期开始的服务器。