2

初めてのアプリを作ろうとしていますが、とてもうまくいっています。私はかなりの数のプログラミング言語を知っていますが、問題に遭遇しました。

私は、ユーザーが 1 時間ごとに最大 1 つのアクションを実行するように制限しようとしています。タイマーを作ってみました。私はまた、私を助けるためにいくつかのサーバー側のコードに手を出しましたが、それを機能させることはできません. 誰かが私を助けることができる答えを持っているかどうか疑問に思っていましたか?

4

4 に答える 4

1

ローカルで iPhone を介してそれを達成することはできません。

  • デバイスのクロック タイムを変更できますが、タイム スタンプが保存されているソリューションは機能しません。
  • タイマーはバックグラウンドで実行されていません。したがって、その解決策は機能しません。

それを達成するには、サーバー側のビジネスを作成する必要があります。操作を実行する前に、サーバー側で 1 時間が経過したかどうかを確認してください。サーバーへのリクエストがあるたびに、サーバーはその特定のユーザーの最終操作時間を更新します (時間が経過している場合)。この時間はサーバーによって設定され、クライアントのローカル時間には依存しません。

于 2012-11-09T12:54:13.760 に答える
0

おそらく最良のアプローチは次のとおりです。 1.ユーザーアクションの最後の時間をファイルまたはデータベース(またはNSUserDefaults)に保持します 2.ユーザーにアクションを実行させると、保存されたタイムスタンプをチェックしてから1時間が経過したかどうかを確認します最後の呼び出し。

さらに、これをサーバー側で確認する必要がある場合があります (アプリケーションの削除と再インストールを避けるため、保存されたタイムスタンプがリセットされます)。

于 2012-11-09T12:48:57.257 に答える
0

次のようなことを試してください:

@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

ユーザーが日付を変更したり、アプリを再インストールしたりしないことを前提としたそのソリューション。

于 2012-11-09T12:49:57.283 に答える
0

NSTimerを使用して、1 時間ごとにアクションを無効にします。

scheduledTimerWithTimeIntervalこれを達成するのに役立ちます。

NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:yourTimeinterval target:self selector:@selector(trigger) userInfo:nil repeats:YES]; 
于 2012-11-09T12:50:28.733 に答える