为了账号安全,请及时绑定邮箱和手机立即绑定

创建在固定时间段后到期的Android试用版应用程序

创建在固定时间段后到期的Android试用版应用程序

慕慕森 2019-10-14 15:33:07
我有一个想要作为付费应用程序投放市场的应用程序。我想使用其他版本,将其作为“试用”版本,时限为5天?我该怎么做呢?
查看完整描述

3 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

当前,大多数开发人员使用以下3种技术之一来完成此任务。

可以轻松规避第一种方法,第一次运行应用程序时,将日期/时间保存到文件,数据库或共享首选项中,并且每次运行该应用程序后都要检查试用期是否已结束。这很容易规避,因为卸载和重新安装将使用户拥有另一个试用期。

第二种方法更难规避,但仍然可以规避。使用硬编码的定时炸弹。基本上,通过这种方法,您将很难确定试用的结束日期,并且所有下载和使用该应用的用户都将无法同时使用该应用。我之所以使用这种方法,是因为它易于实现,而且在大多数情况下,我只是不想经历第三种技术的麻烦。用户可以通过手动更改手机上的日期来规避此问题,但是大多数用户不会遇到麻烦。

第三种技术是我听说过的真正能够完成您想做的事情的唯一方法。您将必须设置服务器,然后无论何时启动应用程序,您的应用程序都会将电话的唯一标识符发送到服务器。如果服务器没有该电话ID的条目,则它将创建一个新的ID并记录时间。如果服务器确实具有电话ID条目,则它将进行简单检查以查看试用期是否已到期。然后,它将试用期满检查的结果传达回您的应用程序。这种方法不应该被规避,但是确实需要设置一个Web服务器等。

在onCreate中进行这些检查始终是一个好习惯。如果到期已结束,则弹出带有市场链接的AlertDialog,该链接指向应用程序的完整版本。仅包括一个“确定”按钮,并且一旦用户单击“确定”,就调用“ finish()”以结束活动。


查看完整回答
反对 回复 2019-10-14
?
狐的传说

TA贡献1804条经验 获得超3个赞

我已经开发了一个Android试用版SDK,您可以将其轻松放入Android Studio项目中,它将为您处理所有服务器端管理(包括离线宽限期)。


要使用它,只需


将库添加到主模块的 build.gradle


dependencies {

  compile 'io.trialy.library:trialy:1.0.2'

}

用您的主要活动的onCreate()方法初始化库


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);


    //Initialize the library and check the current trial status on every launch

    Trialy mTrialy = new Trialy(mContext, "YOUR_TRIALY_APP_KEY");

    mTrialy.checkTrial(TRIALY_SKU, mTrialyCallback);

}

添加一个回调处理程序:


private TrialyCallback mTrialyCallback = new TrialyCallback() {

    @Override

    public void onResult(int status, long timeRemaining, String sku) {

        switch (status){

            case STATUS_TRIAL_JUST_STARTED:

                //The trial has just started - enable the premium features for the user

                 break;

            case STATUS_TRIAL_RUNNING:

                //The trial is currently running - enable the premium features for the user

                break;

            case STATUS_TRIAL_JUST_ENDED:

                //The trial has just ended - block access to the premium features

                break;

            case STATUS_TRIAL_NOT_YET_STARTED:

                //The user hasn't requested a trial yet - no need to do anything

                break;

            case STATUS_TRIAL_OVER:

                //The trial is over

                break;

        }

        Log.i("TRIALY", "Trialy response: " + Trialy.getStatusMessage(status));

    }


};

要开始试用,请致电mTrialy.startTrial("YOUR_TRIAL_SKU", mTrialyCallback); 您的应用密钥,然后在Trialy开发人员仪表板中找到试用SKU 。


查看完整回答
反对 回复 2019-10-14
  • 3 回答
  • 0 关注
  • 564 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信