我试图将标签栏中的徽章设置为" 1"当我的应用收到通知时,在第四个选项卡上。奇怪的是,我的控制台说该方法正在解雇(参见NSLog" Fire!"),但是一旦收到通知,徽章就不会出现在我的标签栏项目上?我错过了什么吗?
AppDelegate.m
-(void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
UIApplicationState state = [application applicationState];
if (state == UIApplicationStateActive) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"pushNotification" object:nil userInfo:userInfo];
NSLog(@"App notification received!");
// do stuff when app is active
}else{
// do stuff when app is in background
static int i=1;
[UIApplication sharedApplication].applicationIconBadgeNumber = i++;
NSLog(@"App notification received background!");
}
}
ViewController.m
- (void) myNotificationReceived:(NSNotification *) notification {
[[self.tabBarController.tabBar.items objectAtIndex:3] setBadgeValue:@"1"];
NSLog(@"Fire!");
}
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myNotificationReceived:) name:@"pushNotification" object:nil];
}
答案 0 :(得分:0)
[[self.tabBarController.tabBar.items objectAtIndex:0] setBadgeValue:nil];将您的计数或数字设置为零,以便在标签栏上显示
试试这可能会对你有所帮助
答案 1 :(得分:0)
无需NSNotification方法 - 以下修复了 AppDelegate.m 中的问题:
-(void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo {
UIApplicationState state = [application applicationState];
if (state == UIApplicationStateActive) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"pushNotification" object:nil userInfo:userInfo];
UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
[[tabController.viewControllers objectAtIndex:4] tabBarItem].badgeValue = @"1";
NSLog(@"App notification received!");
// do stuff when app is active
}else{
static int i=1;
[UIApplication sharedApplication].applicationIconBadgeNumber = i++;
// NSLog(@"App notification received!");
NSLog(@"App notification received background!");
}
}