2014-09-19 2 views
2

Prior iOS 8 все работает нормально. Проблема заключается в том: У меня есть два наблюдателя в различных классах:NSNotificationCenter defaultCenter iOS 8. Уведомление не доставляется одному из наблюдателей

class1:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishParseUser:) 
              name:USERS_LOADED_NOTIFICATION_ID object:nil]; 

class2:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishParseUser:) 
               name:USERS_LOADED_NOTIFICATION_ID object:nil]; 

и уведомление опубликовано в каком-то другом месте:

[FBRequestConnection startWithGraphPath:@"me/friends?fields=id,first_name,last_name,picture.type(small)" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 
    if (!error) { 
     [[NSNotificationCenter defaultCenter] postNotificationName:USERS_LOADED_NOTIFICATION_ID object:nil userInfo:[NSDictionary dictionaryWithObjectsAndKeys: currentUser, @"user", friends, @"friends", nil]]; 
    } else { 
     // An error occurred, we need to handle the error 
     // See: https://developers.facebook.com/docs/ios/errors 
    } 
}]; 

метод addObserver вызывается для обоих указанных классов, однако уведомление i передается только одному наблюдателю. Если я удалю этого наблюдателя (который получает уведомление), другой получит уведомление. До iOS 8 оба наблюдателя получают уведомление.

Можете ли вы помочь мне в этом вопросе?

ответ

0

Найдено ответов. В iOS 8 есть другой способ зарегистрироваться для получения удаленных уведомлений. Я получаю ноль для токена устройства и приложения в сети:

NSDictionary *item = @{UID_ID : sCurrentUserId, @"deviceToken": appDelegate.deviceToken, @"handle": @"", @"friends": friends}; 

и второй наблюдатель никогда не получает уведомление.

-1

Вы должны зарегистрировать NSNotifications работать на прошивкой 8 и более поздних версий, но не нужно регистрироваться, если ваша версия IOS меньше, чем IOS 8. Используйте следующий код

NSArray *vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."]; 

if ([[vComp objectAtIndex:0] intValue] >= 8) { 
    [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationActivationModeBackground categories:nil]]; 

} 

счастливым Coding

+0

Я предполагаю, что это было о местном уведомлении ... Извините –

+0

Но может помочь кому-то застрять в этой проблеме. –

Смежные вопросы