之前的iOS 8一切正常。问题是: 我有两个不同班级的观察员:
的Class1:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishParseUser:)
name:USERS_LOADED_NOTIFICATION_ID object:nil];
等级2:
[[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方法,但是通知只传递给一个观察者。如果我删除此观察者(接收通知),则另一个观察者收到通知。 在iOS 8之前,两个观察者都会收到通知。
请帮助我解决这个问题?
答案 0 :(得分:0)
找到答案。 iOS 8中还有另一种注册接收远程通知的方法。我在设备令牌和应用程序中断时为零:
NSDictionary *item = @{UID_ID : sCurrentUserId, @"deviceToken": appDelegate.deviceToken, @"handle": @"", @"friends": friends};
第二位观察员从未收到通知。
答案 1 :(得分:-1)
您需要注册您的NSNotifications才能在iOS 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]];
}
快乐编码