问:
如果有人可以向我解释如何在不解析通知的描述的情况下找出哪个重复的 UILocalNotification 被触发,我会给你一些我来之不易的赏金。
答:最简单的方法:
- (void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
NSDateComponents *comps = [[NSCalendar currentCalendar] components:notification.repeatInterval fromDate:notification.fireDate toDate:[NSDate date] options:0];
NSLog(@"Notification #%d", [comps minute] + 1);
}
问:如何在description
不解析的情况下获得“下一个开火日期”?
A:这有私有/未记录的功能:nextFireDateForLastFireDate
- (void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
NSLog(@"next: %@", [notification nextFireDateForLastFireDate:[NSDate date]]);
}
问:也许通知中有某种计数?属性还是方法?
A:有无证属性:
@property (assign, nonatomic) int totalRepeatCount;
@property (assign, nonatomic) int remainingRepeatCount;
但它们似乎总是具有相同的价值:UILocalNotificationInfiniteRepeatCount
. 它们都由操作系统管理,因此覆盖此属性或底层实例变量不会执行任何操作。此外,从触发到触发,UILocalNotifications内部没有任何变化,无法区分一个 UILocalNotification 与另一个(内存中的地址除外)。Next fireDate根据当前时间计算。