我有一个iOS应用程序,其中一些推送通知被发送到.我的问题是,在点击之后,消息/通知会留在iOS的通知中心.下次应用程序打开时,如何在通知中心删除应用程序的通知?

我遇到过一些帖子,人们用setApplicationIconBadgeNumber对零值来清除通知.这对我来说似乎很奇怪,所以我认为可能存在另一种解决方案?

EDIT1:

我在清除通知时遇到了一些问题.请在这里查看我的代码:

- (void) clearNotifications {
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if (launchOptions != nil)
    {
        NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
        if (dictionary != nil)
        {
            NSLog(@"Launched from push notification: %@", dictionary);

            [self clearNotifications];
        }
    }

    return YES;
}

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{    
    NSLog(@"Received notification: %@", userInfo);
    [self clearNotifications];
}

我正在通过Xcode运行应用程序.当应用程序最小化,我使用通知中心的通知启动应用程序时,我可以在日志(log)中看到,调用了didReceiveRemoteNotification,使用断点可以看到,clearNotifications已经运行.但通知仍然挂在通知中心.为什么?

推荐答案

很可能是因为通知中心是一个相对较新的功能,苹果不一定想要推出一个全新的清除通知的模式.因此,他们用了[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];个多用途来清除上述通知.这可能看起来有点奇怪,苹果可能会在future 提供一种更直观的方式来实现这一点,但目前这是官方的方式.

我自己,我用这个片段:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];

它总是能从通知中心清除应用程序的所有通知.

Objective-c相关问答推荐

UITabBar 中的自定义 colored颜色

ARC下归零弱引用的集合

将类作为参数传递?

如何处理 Xcode 警告没有以前的函数原型......?

如何更改图像 tintColor

在 UILabel.attributedText *not* 蓝色和 *not* 下划线

如何在 XCode 4 中创建 dSYM 文件?

烦人的[Environment: Sandbox]提示

使用 UIViewControllerInteractiveTransitioning 委托协议实现自定义 UIViewController 交互式过渡的正确方法

Objective C const NSString * vs NSString * const

Objective-C 的文档生成器?

在不导入自己的情况下播放系统声音

StoryBoard 助理编辑器停止显示相关文件

我应该在 ARC 的 init 方法中引用 self.property 吗?

Objective C 中的调用方法或发送消息

NSMutableArray 按顺序添加对象

分组的 UITableView 在底部有 20px 的额外填充

如何在 UITextField 上自动打开键盘?

Objective-c - CABasicAnimation 在动画后应用更改?

围绕其中心旋转 UIView 保持其大小