2012-06-04 2 views
2

Я смотрел на много частей кодов, но не получить решение еще,Xcode: обновление значок значок ежедневно

Я просто нужно, чтобы получить мое приложение значок значок обновляется ежедневно с некоторым календарем (не григорианским) номером дня ,

Как я могу это сделать?

+0

Любая идея, пожалуйста? – hafedh

ответ

0

Я не знаю, как вы его кодировали, но если бы вы отправили такое приложение в магазин приложений, яблоко не одобрило бы его. Строгие рекомендации Apple по пересмотру могут быть разочаровывающими, и, как в этом случае, они ограничивают функциональность ваших приложений. К сожалению :(

+0

это небольшая часть моего приложения, не волнуйтесь, все готовые аналогичные приложения одобрены. – hafedh

0

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

Поскольку вы можете запланировать максимум 64 локальных оповещения, вам необходимо поставить в очередь уведомления при каждом запуске приложения.

Этот код не проверен, могут возникнуть проблемы с летним временем и т. Д. (Работает на iOS 4.2 или новее с использованием ARC)

- (void) applicationDidBecomeActive:(UIApplication *)application { 
    NSUInteger startingDayAfterToday = [application.scheduledLocalNotifications count]; 
    NSArray *localNotifications = [self localNotificationsStartingOnDayAfterToday:startingDayAfterToday]; 
    NSArray *newScheduledNotifications = [application.scheduledLocalNotifications arrayByAddingObjectsFromArray:localNotifications]; 
    [application setScheduledLocalNotifications:newScheduledNotifications]; 
} 

- (NSArray *) localNotificationsStartingOnDayAfterToday:(NSUInteger)startingDayAfterToday { 
    NSMutableArray *localNotifications = [[NSMutableArray alloc] initWithCapacity:64 - startingDayAfterToday]; 
    for (NSUInteger i = startingDayAfterToday; i < 64; i++) { 
     // Create a new local notification 
     UILocalNotification *notification = [[UILocalNotification alloc] init]; 
     notification.hasAction = NO; 

     // Create today's midnight date 
     NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; // Could be other calendar, too 
     NSDateComponents *todayDateComponents = [calendar components:(NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]]; 
     NSDate *todayMidnight = [calendar dateFromComponents:todayDateComponents]; 

     // Create the fire date 
     NSDateComponents *addedDaysComponents = [[NSDateComponents alloc] init]; 
     addedDaysComponents.day = i; 
     NSDate *fireDate = [calendar dateByAddingComponents:addedDaysComponents toDate:todayMidnight options:0]; 

     // Set the fire date and time zone 
     notification.fireDate = fireDate; 
     notification.timeZone = [NSTimeZone systemTimeZone]; 

     // Set the badge number 
     NSDateComponents *fireDateComponents = [calendar components:NSDayCalendarUnit fromDate:fireDate]; 
     notification.applicationIconBadgeNumber = fireDateComponents.day; 

     // We're done, add the notification to the array 
     [localNotifications addObject:notification]; 
    } 

    return [localNotifications copy]; 
} 
Смежные вопросы