在我正在尝试制作的这个应用程序中,我使用推送通知。这部分工作正常。当我发送通知时,我还会在应用图标上添加徽章。问题是,当我在应用程序中午餐时,它应该会再次消失,但事实并非如此。
-(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;
如何清除应用程序图标徽章?
答案 0 :(得分:206)
如果您的应用再次处于有效状态但仍在后台,您应该重置-applicationDidBecomeActive:
中的徽章数:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
application.applicationIconBadgeNumber = 0;
}
如果您的应用仍在后台运行,则不会调用-application:didFinishLaunchingWithOptions:
。
答案 1 :(得分:8)
可能,-application:didFinishLaunchingWithOptions:
未被调用,因为您的应用仍在后台运行。要从后台启动应用程序时删除徽章计数,您还必须重置-applicationWillEnterForeground:
中的徽章编号。
答案 2 :(得分:3)
在Swift和AppDelegate中
func applicationDidBecomeActive(_ application: UIApplication) {
application.applicationIconBadgeNumber = 0
}
答案 3 :(得分:2)
您也可以使用此代码。
- (void)applicationDidBecomeActive:(UIApplication *)application
{
application.applicationIconBadgeNumber = 0;
}
或在特定的ViewController中
- (void)awakeFromNib {
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}
答案 4 :(得分:1)
也许可以在applicationWillResignActive
(AppDelegate.m
)中调用它:
-(void)applicationWillResignActive:(UIApplication *)application{
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}
这可以帮助您在应用程序打开时badge
清除时push
。当用户按notification
(一次或两次)时,用户会看到Home Button
并清除它。此外,app
closed
是{{1}}(用户打开后清除)也很清楚。
Here你可以看到这个方法何时调用。