Q:
通知の説明を解析せずにどの繰り返し UILocalNotification が起動されたかを調べる方法を誰かが説明してくれれば、私が苦労して稼いだ報奨金の一部を差し上げます。
A: 最も簡単な方法:
- (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);
}
Q:description
解析せずに「次の発火日」を取得する方法は?
A:これには非公開/文書化されていない関数があります:nextFireDateForLastFireDate
- (void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
NSLog(@"next: %@", [notification nextFireDateForLastFireDate:[NSDate date]]);
}
Q:通知に何らかのカウントがあるのではないでしょうか? プロパティまたはメソッド?
A:文書化されていないプロパティがあります。
@property (assign, nonatomic) int totalRepeatCount;
@property (assign, nonatomic) int remainingRepeatCount;
しかし、それらは常に同じ値を持っているようです: UILocalNotificationInfiniteRepeatCount
. どちらもオペレーティング システムによって管理されるため、このプロパティまたは基になるインスタンス変数を上書きしても何も起こりません。さらに、UILocalNotifications 内では発火ごとに何も変化せず、UILocalNotification を別の UILocalNotification と区別する方法はありません (メモリ内のアドレスを除く)。次の fireDateは、現在の時刻に基づいて計算されます。