1

私は新しいプログラマーで、この回答を検索しましたが、正しい用語を使用していない可能性があると思います。

私がやろうとしているのは、ユーザーが私のアプリケーション (ゲーム) を 24 時間に 1 回だけ使用できるようにすることです。彼らが 24 時間よりも早くゲームをプレイしようとした場合、後で戻ってくるように通知するアラートが必要です。「クレジット」を提供する他のゲームでこれが行われているのを見てきましたが、コードが見つからないようです。

どんな助けでも大歓迎です!

4

4 に答える 4

3

クラスを使用しNSDateて現在の日付 ( [NSDate date]) を取得し、クラスを使用してこの値を保存しますNSUserDefaults。アプリが開いたら、値を取得し、古い日付と現在の日付を比較します。1 日経過した場合は、何もしないでください。それ以外の場合は、アラートを表示します。

//setting the date
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"Date"];

//retrieve date
NSDate *date = [[NSUserDefaults standardUserDefaults] objectForKey:@"Date"];

//now compare the dates
于 2012-11-14T23:51:55.810 に答える
2

上記のreに同意します:NSDateを永続化します。再インストール時に制約に違反する可能性がある場合は、NSUserDefaultsが最も理にかなっています。

あなたが尋ねて答える必要がある他の質問は、あなたが一度「走る」ことによって本当に意味することです。それは、一度起動してたくさん実行することを意味しますか、それとも一度だけアクティブになるか、それとも何か他のものを意味しますか?ユーザーが1分間プレイしてから電話がかかってきたとしましょう(1つはdidFinishLaunching、2つはdidBecomeActiveです)。

あなたが本当に必要とするかもしれないのは、最後の24時間にわたってある値を超えることができない合計プレイ時間です。

于 2012-11-15T00:16:01.363 に答える
1

アプリが開き、現在の日付/時刻をゲームの開始時に設定します。アプリが開くたびに、保存した日時から 24 時間経過しているかどうかを確認し、そうでない場合は別のビューに移動するか、_ _ 時間後に戻ってくるようにメッセージを表示します。

NSDates を NSUserDefaults に保存する方法と、NSDates を比較する方法を調べてください。これを比較的簡単に実行できるはずです。

このアプローチの問題は、アプリを削除して再インストールできることです。これにより、NSUserDefaults またはそのアプリの他のローカル ストレージがリセットされます。これを回避するには、サーバー上でユーザー アカウントを作成するか (おそらく、他のアプリが行っていたように)、少なくともデバイスに一意の ID を送信してサーバー側で処理する必要があります。

于 2012-11-14T23:52:18.943 に答える
0

同様の質問については、こちらの私の回答をご覧ください。

とにかく、ユーザーがアプリを再インストールしたり、デバイスの日付を手動で変更したりしても、ブロックされません。必要なことを達成するには、ユーザーが実際に外部サーバーを介してアプリを実行していた日付を保持して確認するのが最善です。おそらく、サーバー側で php を使用して、NSURLConnection POST リクエスト経由で接続することができます。

于 2012-11-14T23:54:58.180 に答える