Истечение срока действия приложения с использованием NSTimeInterval - PullRequest
2 голосов
/ 25 декабря 2009

Как бы настроить этот метод для отображения панели оповещений через 30 дней после первого запуска приложения?

-(void)awakeFromNib

{

    NSDate * today = [NSDate date];

    NSTimeInterval expiry = ();


    if ([today timeIntervalSinceReferenceDate] > expiry){
        NSRunAlertPanel(@"Trial period has ended", @"Please Register", nil, nil, nil);
        NSLog(@"expired");
        [[NSApplication sharedApplication] terminate:self];
    }

}

1 Ответ

0 голосов
/ 19 декабря 2015

Используйте свойство day для NSDateComponents, чтобы вычислить дату на определенное количество дат от текущей даты:

NSDate *today = [NSDate date];

NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
dateComponents.day = 30; // 30 days from launch

NSDate *expDate = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:today options:0];

Эта проверка должна выполняться только при первом запуске приложения. expDate следует сохранить. Каждый раз, когда приложение запускается заново после первого раза, сравнивайте дату с этой первой датой.

// compare the dates
if ([today compare:expDate] == NSOrderedDescending) {
    // trial expired
}
...