1

它可能是一个可能的重复链接。

从通知中心删除单个远程通知

根据这篇文章,我们无法从通知中心(NC)删除单个通知。对于取消通知,我们有以下方法。

1).cancelAllLocalNotifications :它删除所有通知。2).cancelLocalNotification :它需要通知作为输入。

我尝试了这两种方法,使用第一种方法从 NC 中删除所有通知,而第二种方法似乎不起作用。这是我在 didRecivedRemoteNoitification 方法上应用的第二个片段。

UIApplication *app = [UIApplication sharedApplication];
NSArray *eventArray = [app scheduledLocalNotifications];
for (int i=0; i<[eventArray count]; i++)
{
    UILocalNotification* oneEvent = [eventArray objectAtIndex:i];
    NSDictionary *userInfoCurrent = oneEvent.userInfo;
    NSLog(@"userInfoCurrent : %@", userInfoCurrent);
    int notiid=[[userInfoCurrent valueForKey:@"notificationID"] intValue];
    if (notiid ==deletenotiid)
    {
        //Cancelling local notification
        [app cancelLocalNotification:oneEvent];
        break;
    }
}

所以我的问题是我看到几个应用程序从 NC 中删除了一个被点击的通知,例如 skype

有没有我想申请的东西。

感谢您宝贵的时间。

4

1 回答 1

0

您写道,您将上述代码包含在didRecivedRemoteNoitification. 但是,didRecivedRemoteNoitification只有在应用程序在前台运行时推送通知到达时才会调用,在这种情况下,不会显示任何通知,也不需要清除任何内容。

对于在应用程序未运行时到达的通知,当用户点击通知时,通知数据将传递到application:didFinishLaunchingWithOptions:. 如果您清除徽章编号,我认为将清除点击的通知。

- (void)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)opts {

    // check launchOptions for notification payload and custom data, set UI context

    [self startDownloadingDataFromProvider];  // custom method

    app.applicationIconBadgeNumber = 0;

    // other setup tasks here....

}
于 2013-06-02T18:08:29.683 回答