0

30日または数日しか機能しないアプリケーションがあります。

これは、テキストが表示された状態で表示された画像に対応するオーディオファイルが再生される単純なアプリケーションです。

4

2 に答える 2

3

これを真に達成する唯一の方法があります:

サーバーをセットアップする必要があります。そうすると、アプリケーションが起動するたびに、アプリは電話の一意の識別子をサーバーに送信します。サーバーにその電話IDのエントリがない場合は、新しいものを作成して時刻を記録します。サーバーに電話IDのエントリがある場合は、試用期間が終了したかどうかを確認するための簡単なチェックを実行します。次に、試用期間の有効期限チェックの結果をアプリケーションに通知します。このアプローチは回避できないはずですが、Webサーバーなどを設定する必要があります。

他の方法(インストール日をどこかに保存するなど)もありますが、ユーザーがアプリをアンインストールすると、その情報は失われ、再インストールしたときに、以前にインストールしたかどうかを知る方法はありません。

編集:わかりました、あなたは道を進みたいのでSharedPreferences、ここに例があります:

private final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
private final long ONE_DAY = 24 * 60 * 60 * 1000;

@Override
protected void onCreate(Bundle state){
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    String installDate = preferences.getString("InstallDate", null);
    if(installDate == null) {
        // First run, so save the current date
        SharedPreferences.Editor editor = preferences.edit();
        Date now = new Date();
        String dateString = formatter.format(now);
        editor.putString("InstallDate", dateString);
        // Commit the edits!
        editor.commit();
    }
    else {
        // This is not the 1st run, check install date
        Date before = (Date)formatter.parse(installDate);
        Date now = new Date();
        long diff = now.getTimeInMillis() - before.getTimeInMillis();
        long days = diff / ONE_DAY;
        if(days > 30) { // More than 30 days?
             // Expired !!!
        }
    }

    ...
}

私はこれを編集していませんが、あなたにアイデアを与えるべきです。

于 2012-02-02T14:31:29.843 に答える
1

これはかなり良い答えです

元の作者を引用するには-snctnl

現在、ほとんどの開発者は、次の3つの手法のいずれかを使用してこれを実現しています。

最初のアプローチは簡単に回避できます。アプリを初めて実行するときに、日付/時刻をファイル、データベース、または共有設定に保存し、その後アプリを実行するたびに、試用期間が終了したかどうかを確認します。アンインストールして再インストールすると、ユーザーは別の試用期間を持つことができるため、これは簡単に回避できます。

2番目のアプローチは回避するのが難しいですが、それでも回避できます。ハードコードされた時限爆弾を使用します。基本的に、このアプローチでは、試用の終了日をハードコーディングし、アプリをダウンロードして使用するすべてのユーザーが同時にアプリを使用できなくなります。このアプローチを使用したのは、実装が簡単で、ほとんどの場合、3番目の手法の問題を経験する気がしなかったためです。ユーザーは携帯電話の日付を手動で変更することでこれを回避できますが、ほとんどのユーザーはそのようなことをするのに苦労することはありません。

3番目のテクニックは、あなたがやりたいことを本当に達成できるようにするために私が聞いた唯一の方法です。サーバーをセットアップする必要があります。そうすると、アプリケーションが起動するたびに、アプリは電話の一意の識別子をサーバーに送信します。サーバーにその電話IDのエントリがない場合は、新しいものを作成して時刻を記録します。サーバーに電話IDのエントリがある場合は、試用期間が終了したかどうかを確認するための簡単なチェックを実行します。次に、試用期間の有効期限チェックの結果をアプリケーションに通知します。このアプローチは回避できないはずですが、Webサーバーなどをセットアップする必要があります。

onCreateでこれらのチェックを行うことは常に良い習慣です。有効期限が終了した場合は、アプリのフルバージョンへのマーケットリンクを含むAlertDialogがポップアップ表示されます。「OK」ボタンのみを含め、ユーザーが「OK」をクリックしたら、「finish()」を呼び出してアクティビティを終了します。

于 2012-02-02T17:21:49.150 に答える