如何在特定时间后调用对象?

时间:2015-04-01 12:28:20

标签: ios sprite-kit

评价我们的精灵应该在24小时后显示,从第一次启动应用程序开始算起。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

你需要照顾的一些事情。

第一次启动应用时,获取当前时间并将该对象保存到NSUserDefaults。 每当用户再次打开应用程序时,在NSUserDefaults中获取保存的对象,看看它是否已经24小时。如果是,则显示RateUs,否则为剩余时间设置计时器。

更好的是,使用像iRate这样的开源解决方案。

答案 1 :(得分:0)

NSDate * installedDate = [[NSUserDefaults standardUserDefaults] objectForKey:@" FirstLaunchTime"];

if (installedDate == nil)  {  // runs for the first time

    [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"FirstLaunchTime"];
    printf("\n First time \n");
}
else{

    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"is24hoursFinished"])
    {
        NSDate *presentDate = [NSDate date];

        NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
        NSUInteger units = NSDayCalendarUnit;

        NSDateComponents *Components = [gregorian components:units fromDate:installedDate toDate:presentDate options:0];
        NSInteger days = [Components day];

        printf("Number of days %ld",(long)days);

        if (days > 0)
        {
            [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"is24hoursFinished"];
            [[NSUserDefaults standardUserDefaults] synchronize];
        }

    }

}