Как сделать так, чтобы приложение для iPhone ограничивало использование до одного в день - PullRequest
0 голосов
/ 20 апреля 2011

Так что, в основном, я пробовал много вещей, о которых читал здесь и в других местах, и не смог заставить это работать.

Я сохранял NSDate какобъект в UserDefaults с setObject и т. д. Затем получите текущее время с [NSData date] и т. д., моя проблема - сравнение.Я видел примеры других людей, и, кажется, ничто не делает то, что мне нужно.

Это просто оператор if, и мне нужно, чтобы он знал переменную ++, если прошло 18 часов с момента их последнего выполнения(и это сохранило NSDate).В противном случае он просто отображает сообщение.Проблема у меня в том, что я не могу понять, как проверить, что текущая дата> сохранена на 18 часов +.Может ли кто-нибудь помочь, пожалуйста?Я пытался превратить их в NSTimeIntervals и рассчитывать исходя из этого, но каким-то образом я все испортил.

Ответы [ 3 ]

1 голос
/ 20 апреля 2011

Я бы сохранил LastAccessDate в NSUserDefaults для этого приложения.После открытия приложения, запуска, активации и т. Д. Я проверю, чтобы это значение было меньше 18 часов при timeIntervalSinceNow.Проверьте NSDate Class .

Пример (не тестировался):

NSDate *lastAccessDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"LastAccessDate"]]
NSTimeInterval duration = [lastAccessDate timeIntervalSinceNow];
int hoursPassed = duration / 3600;
0 голосов
/ 20 апреля 2011

Попробуйте,

NSTimeInterval dateDiff = [lastAccessDate timeIntervalSinceNow];
int hours=trunc(dateDiff/(60*60));
0 голосов
/ 20 апреля 2011

Что вы подразумеваете под лимитным использованием до одного раза в день? Вы имеете в виду только позволить приложению делать что-то полезное один раз в день? Конечно, это путь к отказу от App Store, особенно если вы не позволяете пользователю делать что-либо вообще после загрузки приложения.

В любом случае, если вы хотите приступить к таким вещам, логика, вероятно, выглядит примерно так:

NSDate *lastSyncDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"last_app_rundate"];  
NSTimeInterval interval = [[NSDate date] timeIntervalSinceDate:lastSyncDate];

if ((interval / 3600) >= 18) {
   // let your user use your app
   [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"last_app_rundate"];
}

изменить: слишком медленно, чтобы ответить!

...