初めてのアプリを作ろうとしていますが、とてもうまくいっています。私はかなりの数のプログラミング言語を知っていますが、問題に遭遇しました。
私は、ユーザーが 1 時間ごとに最大 1 つのアクションを実行するように制限しようとしています。タイマーを作ってみました。私はまた、私を助けるためにいくつかのサーバー側のコードに手を出しましたが、それを機能させることはできません. 誰かが私を助けることができる答えを持っているかどうか疑問に思っていましたか?
初めてのアプリを作ろうとしていますが、とてもうまくいっています。私はかなりの数のプログラミング言語を知っていますが、問題に遭遇しました。
私は、ユーザーが 1 時間ごとに最大 1 つのアクションを実行するように制限しようとしています。タイマーを作ってみました。私はまた、私を助けるためにいくつかのサーバー側のコードに手を出しましたが、それを機能させることはできません. 誰かが私を助けることができる答えを持っているかどうか疑問に思っていましたか?
ローカルで iPhone を介してそれを達成することはできません。
それを達成するには、サーバー側のビジネスを作成する必要があります。操作を実行する前に、サーバー側で 1 時間が経過したかどうかを確認してください。サーバーへのリクエストがあるたびに、サーバーはその特定のユーザーの最終操作時間を更新します (時間が経過している場合)。この時間はサーバーによって設定され、クライアントのローカル時間には依存しません。
おそらく最良のアプローチは次のとおりです。 1.ユーザーアクションの最後の時間をファイルまたはデータベース(またはNSUserDefaults)に保持します 2.ユーザーにアクションを実行させると、保存されたタイムスタンプをチェックしてから1時間が経過したかどうかを確認します最後の呼び出し。
さらに、これをサーバー側で確認する必要がある場合があります (アプリケーションの削除と再インストールを避けるため、保存されたタイムスタンプがリセットされます)。
次のようなことを試してください:
@interface YourClass
@property (assign, nonatomic) double lastActionTime;
@end
@implementation YourClass
- (BOOL)isActionAllowed
{
double currentTime = [[NSDate date] timeIntervalSince1970];
if (currentTime - 3600 > lastActionTime)
{
lastActionTime = currentTime;
return YES;
}
return NO;
}
@end
アプリを閉じても、保存lastActionTime
して保存することができます。NSUserDefaults
ユーザーが日付を変更したり、アプリを再インストールしたりしないことを前提としたそのソリューション。
NSTimerを使用して、1 時間ごとにアクションを無効にします。
scheduledTimerWithTimeInterval
これを達成するのに役立ちます。
NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:yourTimeinterval target:self selector:@selector(trigger) userInfo:nil repeats:YES];