如何在iOS中仅清除通知
如果用户已将警报样式设置为横幅。他们可以收到多个通知,而无需提示他们清除通知。然后,他们去使用他们的手机,他们说3存储。如果点击最新的一个&它打开了应用程序,我只想清除这一个通知,我还需要去badgeCount- 我如何用下面的代码实现它?目前,它将清除所有我不想要的东西。。。我还注意到有时它会更新徽章编号。但如果我切换回iOS主屏幕,并下拉通知菜单,它仍然在那里如何在iOS中仅清除通知,ios,objective-c,push-notification,Ios,Objective C,Push Notification,如果用户已将警报样式设置为横幅。他们可以收到多个通知,而无需提示他们清除通知。然后,他们去使用他们的手机,他们说3存储。如果点击最新的一个&它打开了应用程序,我只想清除这一个通知,我还需要去badgeCount- 我如何用下面的代码实现它?目前,它将清除所有我不想要的东西。。。我还注意到有时它会更新徽章编号。但如果我切换回iOS主屏幕,并下拉通知菜单,它仍然在那里 - (void)application:(UIApplication *)application didReceiveRemoteN
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
if([[userInfo valueForKey:@"aps"] valueForKey:@"alert"] != nil) {
NSString *message = [[userInfo valueForKey:@"aps"] valueForKey:@"alert"];
if(message != nil) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Usage Alert"
message:message delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];
[alertView show];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];
}
}
}
你可以加上
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
到你的应用程序代理。这将被调用,您可以在那里使用
[[UIApplication sharedApplication] cancelLocalNotification:notification];
删除特定通知并减少徽章计数。您可以添加
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
UIApplication *app = [UIApplication sharedApplication];
NSInteger badgeNumber = [app applicationIconBadgeNumber];// Take the current badge number
badgeNumber--; // decrement by one
[app setApplicationIconBadgeNumber:badgeNumber]; // set ne badge number
[app cancelLocalNotification:notification]; // cancel the received notification. It will clear the notification from banner alos
}
到你的应用程序代理。这将被调用,您可以在那里使用
[[UIApplication sharedApplication] cancelLocalNotification:notification];
删除特定通知并减少徽章计数。我想警告不要打电话
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
UIApplication *app = [UIApplication sharedApplication];
NSInteger badgeNumber = [app applicationIconBadgeNumber];// Take the current badge number
badgeNumber--; // decrement by one
[app setApplicationIconBadgeNumber:badgeNumber]; // set ne badge number
[app cancelLocalNotification:notification]; // cancel the received notification. It will clear the notification from banner alos
}
从
方法
如果您的计划本地通知带有某个徽章编号,则在输入-didReceiveLocalNotification数毫秒后,将异步设置徽章
对于示例:
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
// ^^^ maybe not reset badge to 0!! ^^^
}
另一个代码:
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
sleep(1); //waiting for system is set our scheduled badge
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
// ^^^ most chances for reset badge to 0 ^^^
}
测试代码,触摸屏幕计划本地通知
并计算系统实际设置前的延迟:
输出:
badge set: 41 after 0.000839 sec.
badge set: 9 after 0.000754 sec.
badge set: 56 after 0.076026 sec.
badge set: 17 after 0.069889 sec.
badge set: 8 after 0.056245 sec.
badge set: 71 after 0.120729 sec.
badge set: 28 after 0.122720 sec.
badge set: 17 after 0.000758 sec.
此测试在不同设备上的iOS 4.2/4.3/5.0/6.1中进行
在-didReceiveLocalNotification消息中重置徽章编号时要小心!
仅当本地通知/非远程推送/且应用程序在上处于活动状态时,此选项才为真
接收时刻我想警告不要打电话 从 方法 如果您的计划本地通知带有某个徽章编号,则在输入-didReceiveLocalNotification数毫秒后,将异步设置徽章 对于示例:
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
// ^^^ maybe not reset badge to 0!! ^^^
}
另一个代码:
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
sleep(1); //waiting for system is set our scheduled badge
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
// ^^^ most chances for reset badge to 0 ^^^
}
测试代码,触摸屏幕计划本地通知
并计算系统实际设置前的延迟:
输出:
badge set: 41 after 0.000839 sec.
badge set: 9 after 0.000754 sec.
badge set: 56 after 0.076026 sec.
badge set: 17 after 0.069889 sec.
badge set: 8 after 0.056245 sec.
badge set: 71 after 0.120729 sec.
badge set: 28 after 0.122720 sec.
badge set: 17 after 0.000758 sec.
此测试在不同设备上的iOS 4.2/4.3/5.0/6.1中进行
在-didReceiveLocalNotification消息中重置徽章编号时要小心!
仅当本地通知/非远程推送/且应用程序在上处于活动状态时,此选项才为真
接收时刻