从iOS应用程序中删除徽章应用程序图标
在我试图制作的这个应用程序中,我使用了推送通知。这部分工作得很好。当我发送通知时,我还会将徽章添加到应用图标。问题是,当我午餐的应用程序,它应该再次消失,但事实并非如此。从iOS应用程序中删除徽章应用程序图标
-(IBAction)Push{
NSMutableDictionary *data = [NSMutableDictionary dictionary];
[data setObject:@"Numfeud: Troels made a move!" forKey:@"alert"];
[data setObject:[NSNumber numberWithInt:1] forKey:@"badge"];
[data setObject:@"bar" forKey:@"foo"];
[PFPush sendPushDataToChannelInBackground:@"GameChannel2" withData:data];
}
在application didFinishLaunchingWithOptions
我尝试徽章以这种方式设置为0:
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
我怎样才能清除应用程序图标徽章?
可能,-application:didFinishLaunchingWithOptions:
未被调用,因为您的应用程序仍在后台运行。为了在应用程序从后台启动时删除徽章计数,您还必须重置-applicationWillEnterForeground:
中的徽章编号。
如果您的应用程序再次激活,并仍然在后台,你应该在-applicationDidBecomeActive:
重置徽章数量,以及:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
application.applicationIconBadgeNumber = 0;
}
如果你的应用程序仍然在后台运行-application:didFinishLaunchingWithOptions:
将不会被调用。
您也可以使用此代码。
- (void)applicationDidBecomeActive:(UIApplication *)application
{
application.applicationIconBadgeNumber = 0;
}
或者在一个特定的ViewController
- (void)awakeFromNib {
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}
这个确切的代码是问题的一部分。 – Brian 2017-03-28 17:39:11
为什么有人投票拒绝这个答案? – 2017-05-11 04:45:04
也许叫它applicationWillResignActive
(在AppDelegate.m
):
-(void)applicationWillResignActive:(UIApplication *)application{
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}
这将帮助你清除badge
如果push
来时,应用程序正在开放。当他按Home Button
(一次或两次)时,用户看到notification
并清除它。此外,如果app
为closed
(在用户打开后清除)将会清楚。
Here你可以看到何时调用这个方法。
谢谢Fabian!你的答案正是我所需要的:) thannnkkss – thar 2012-03-04 18:06:32
-applicationDidBecomeActive和-applicationWillEnterForeground:做同样的更少还是更多?将重置置于-applicationDidBecomeActive中时。它适用于我两种情况。 – thar 2012-03-04 18:23:50
-applicaionDidBecomeActive:也将在从电话返回时调用。 -applicationWillEnterForeground:在你的情况下是合适的方法。 – 2012-03-05 15:18:09