Я пытаюсь запланировать локальное уведомление с некоторыми пользовательскими данными, которые я прочитал, когда пользователь откроет приложение, щелкнув уведомление.iOS локальное уведомление userInfo всегда null
запланировать местное уведомление, как это:
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.fireDate = [[NSDate date] dateByAddingTimeInterval:10];
notification.alertBody = @"Hello World!";
notification.userInfo = [[NSDictionary alloc] initWithObjectsAndKeys:
@"123123123123", @"beaconUUID",
[NSNumber numberWithInt:10], @"beaconMajor",
[NSNumber numberWithInt:20], @"beaconMinor",
nil];
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
Затем в коде, который обрабатывает уведомление, что я делаю это:
- (void)onAppDidBecomeActive:(NSNotification*)notification
{
NSLog(@"Object = %@", [notification object]);
NSDictionary* userInfo = [notification userInfo];
NSLog(@"UserInfo = %@", userInfo);
NSString* beaconUUID = [userInfo objectForKey:@"beaconUUID"];
NSLog(@"Beacon UUID = %@", beaconUUID);
}
Моя проблема заключается в том, что, когда я пытаюсь прочитать USERINFO его всегда возвращает null. Как читать словарь userInfo из объекта NSNotification?
Три NSLog вызовов из приведенной выше коды образца печати следующего в консоли:
2015-02-04 14:11:52.690 BeaconPlugin[17050:724150] Object = <UIConcreteLocalNotification: 0x7ff1d37199a0>{
fire date = Wednesday, February 4, 2015 at 2:11:51 PM Central European Standard Time,
time zone = (null),
repeat interval = 0,
repeat count = UILocalNotificationInfiniteRepeatCount,
next fire date = (null),
user info = {
beaconMajor = 10;
beaconMinor = 20;
beaconUUID = 123123123123;
}}
2015-02-04 14:11:52.691 BeaconPlugin[17050:724150] UserInfo = (null)
2015-02-04 14:11:52.691 BeaconPlugin[17050:724150] Beacon UUID = (null)
Что действительно показывает, что словарные значения являются частью информации о пользователе. У кого-нибудь есть идеи, что я делаю неправильно?
Откуда у вас этот метод? Я думаю, что это должно быть: '- (void) applicationDidBecomeActive: (UIApplication *) application'. В любом случае, ваше приложение должно вызывать 'приложение: DidReceiveLocalNotification: (UILocalNotification *) уведомление', и вы сможете получить к нему доступ, как вы это делаете. – mbm29414
Я разрабатываю плагин для Phonegap, и это моя функция, которая вызывается из appDelegate.m. Таким образом я могу создать плагин без редактирования файла делегата приложения. – Mathyn