目前我正在开发一款游戏 iOS 应用程序,我将提供给我的一些客户进行演示。
但是,在分发我的应用程序时,我想在我的应用程序中设置一个过期机制,这样它就会在“N”天后过期。这意味着(例如 30 天后)我的应用程序将无法运行。我可以通过使用系统日期和时间来实现这一点,这意味着每当我的程序启动时,我都会检查今天的日期和到期日期。
问题是如果用户更改系统时间,我的比较将不正确。
此外,如果用户删除并重新安装该应用程序,它将无法正常工作。
有什么帮助或建议吗?
Look at Ad Hoc Distribution
Ad-hoc development builds last for 3 months, however if you want to add a time limit then you could:
Add a key-value in NSUserDefaults
which stores the start date of the app (time taken from a webservice such as http://www.earthtools.org/webservices.htm#timezone) then every time the app enters the foreground check the time against it and if it is over the threshold then to cancel loading the app.
NSDate *now = //load current datetime from restkit
NSDate *startDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"startDate"];
NSDate *futureDate = [NSDate dateWithTimeInterval:60 * 60 * 24 * 30 sinceDate:startDate];
if ([futureDate compare:now] == NSOrderedAscending) {
//stop the application loading by loading a NIB and displaying a message.
}
I would recommend using RestKit to request data from the web-service.
当应用程序过期时,在钥匙串中存储一些东西来表明这一事实。然后只需在启动时检查,而不是日期。
或者,您可以让它检查您控制的 Web 服务。