Google Play 应用内计费一次性购买的时限测试

8

目前,我有一个免费下载的应用程序,但功能有限。为了解锁全部功能,用户需要进行一次性购买,使用Google Play In-App计费。

最近,为了提高转化率,我计划提供试用期的完整功能。

也就是说,用户可以在前7天使用完整功能,而无需进行一次性购买。

7天后,他将回到具有有限功能的应用程序。如果他喜欢过去7天的完整功能,他将进行一次性购买。如果不喜欢,他将不做任何操作 :)

我想知道,是否有办法利用现有的应用内购买计费API来实现我的试用期功能?

如果可能的话,我更倾向于不自己处理服务器端。

我知道应用内订阅模型确实提供试用期:http://developer.android.com/google/play/billing/billing_subscriptions.html

然而,订阅模型并不是我所寻找的。我的属于非消耗品


您不能为非消耗性应用内产品设置试用期吗? - Kevin Crain
最低的应用内购买价格为0.99美元。无法使用Google的API来获取免费内容。 - Matt
2个回答

5
Google的应用内购买不直接支持试用。这是因为应用内购买是一个简单的一次性购买模型(对于托管的应用内产品),仅处理实际购买流程和所有权管理。您需要根据Google提供的购买和所有权来提供实际的应用内产品。
因此,这意味着您需要实现以下内容:
1)在您自己的代码中完全实现全功能的7天试用。具体而言,您需要想出如何以这样的方式实现,使得用户无法仅仅通过卸载并重新安装应用程序来获得新的7天试用期。
2)一旦用户试用期结束,您的应用程序将必须锁定全部功能。
3)您的应用程序应支持通过Google应用内购买的购买流程,完成后永久解锁全部功能。
显然,其中棘手的部分是第1个。这可能需要您在设备和/或用户ID的端上进行一些服务器端跟踪,因为任何仅依赖客户端存储的解决方案都很容易被利用来进行多次试用。

提供一些伪代码实现。 - Nouman Ch

0
我已经将日期存储在我的应用程序类中。
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所说,这不会保护您免受安装和卸载应用程序的影响,我认为为了保护您需要创建一个带有特定设备ID和试用日期起始期限的服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接