У меня есть приложение, которое получает push-уведомления. Я хотел бы добавить значок с правильным значением рядом с кнопкой в меню приложения (помните старое приложение Facebook?).
Я пытаюсь получить значение значка из уведомления в AppDelegate, сохранить его в NSUserDefault, чтобы использовать его в других контроллерах представления.
NSString * badgeValue = [[userInfo valueForKey:@"aps"] valueForKey:@"badge"];
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:badgeValue forKey:@"badge"];
[defaults synchronize];
Проблема в том, что если я пытаюсь поместить значение в метку, приложение вылетает
'NSInvalidArgumentException', причина: '-[__NSCFNumber isEqualToString:]: в экземпляр отправлен нераспознанный селектор
Xcode заставляет меня сохранять badgeValue в строке, но когда я помещаю строку в метку, она говорит, что это неправильная строка.
if ([badgeValue isKindOfClass:[NSString class]]) {
NSLog(@"it is string !!!!!!!!!!!!!!!");
// treat it as a string object
} else {
NSLog(@"it is not a string !!!!!!!!!!!!!!!");
// treat it as a number object
}
При отладке я вижу, что badgeValue - это не настоящая строка, а __NSCFNumber, и если я попытаюсь преобразовать ее в строку, возвращаемое значение будет длинным странным числом. Я везде искал способ получить значение значка уведомления, но единственный вариант, который я могу придумать, - это php-запрос... Есть идеи?