我想知道用户是否已将其设备设置为在iPhone中的Settings.app中自动设置日期和时间。我需要这些信息,因为我想让用户只在一天内访问应用程序中的某些信息,他只能在第二天再次访问。但智能用户可以更改日期并访问信息。所以我想检查一下他们是否自动为设备设置日期/时间。
有没有办法这样做。如果存在,请建议任何其他替代方式。 提前谢谢。
答案 0 :(得分:2)
我认为没有办法检测用户对自动更新日期时间设置的偏好。要确定给定点的时间长度,您可以选择几个绝对值或没有任何错误的选项。
CACurrentMediaTime
或mach_absolute_time()
等函数可以提供与之比较的计数。您可以获取值并递增它们,直到达到指定的持续时间以重置第二天检查的标记。单独的选项都不能提供理想的解决方案,但通过组合这些方法,您可以达到可接受的保证水平,即用户仅在允许的时间内访问信息。
答案 1 :(得分:1)
这是另一个建议,我对我正在开发的会议应用程序有类似的问题。我想在会议的第二天向用户显示一些数据。
与我们的团队讨论从设备获取日期选项之后。我们决定不使用这种方法,因为正如您所说,某些用户可能会更改日期设置,而且某些用户可能不情愿地将其设备设置到其他国家/地区的时间和日期区域,这些区域可能存在用户的日期冲突问题。
最后,我们决定创建一个简单的网页,并获取该信息的http 200
和http 404
请求。您不必将数据或其他任何内容放入服务器,我们只是想从Web获取响应代码。
因此,假设您有一个网页http://xxxxxxxxxxxxxx.pdf
或.html
我们不会将任何pdf文件放到服务器上,因此用户始终获取http 404 response
我们会禁用或隐藏相关数据/按钮/排什么的。在会议的第二天,我们放置了一个虚拟页面,现在用户可以获得http 200 response
,因此我们启用了按钮/行/数据。
如果您决定从here
使用此方法下载块来进行nsurlconnection然后使用以下代码:
NSURL *theFileURL=[NSURL URLWithString:@"yoururl"];
NSURLRequest *request = [NSURLRequest requestWithURL:theFileURL];
[URLConnection asyncConnectionWithRequest:request
completionBlock:^(NSData *data, NSURLResponse *response) {
//get data and response
if ([response isKindOfClass:[NSHTTPURLResponse class]])
{
NSHTTPURLResponse * httpResponse = (NSHTTPURLResponse *) response;
//NSString *fileMIMEType = [[httpResponse MIMEType] lowercaseString];
NSLog(@"httpResponse.statusCode %i",httpResponse.statusCode);
if (httpResponse.statusCode==200) {
//correct respond show data
}
else if (httpResponse.statusCode==404)
{
//no file this
NSLog(@"no file at the server");
}
}
//[HUD removeFromSuperview];
} errorBlock:^(NSError *error) {
//get error
NSLog(@"error %@",error);
} uploadPorgressBlock:^(float progress) {
//Upload progress (0..1)
} downloadProgressBlock:^(float progress) {
//Download progress (0.1)
//progress += 0.01;
//HUD.progress = progress;
}];