2

我正在尝试制作我的第一个应用程序,它运行得非常好。我知道很多编程语言,但是我遇到了一个问题。

我试图限制用户每小时最多执行一项操作。我一直在尝试做一个计时器。我还涉足了一些服务器端代码来帮助我,但是我似乎无法让它工作。我想知道是否有人有任何可以帮助我的答案?

4

4 回答 4

1

您无法在本地通过 iPhone 实现。

  • 可以更改设备上的时钟时间,存储时间戳的解决方案将不起作用。
  • 计时器不在后台运行。所以这个解决方案行不通。

要实现它,您将不得不编写服务器端业务。在执行任何操作之前,请从服务器端检查是否已经过了一个小时。每当有对服务器的请求时,服务器都会更新该特定用户的上次操作时间(如果已经过了一小时)。这个时间将由服务器设置,不依赖于客户端的本地时间。

于 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禁用一个小时的操作。

scheduledTimerWithTimeInterval将帮助您实现这一目标。

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