【问题标题】:How to increment/decrement application.badge number for UILocalnotification如何增加/减少 UILocalnotification 的 application.badge 编号
【发布时间】:2013-05-09 15:53:59
【问题描述】:

当多个通知被触发时我有 UILocalnotification 我希望应用程序徽章编号增加并且当看到通知时我希望应用程序徽章编号减少取决于有多少通知被取消/观看了通知

 - (UILocalNotification *)scheduleNotification :(int)remedyID
{
        NSString *descriptionBody;
        NSInteger frequency;

        UILocalNotification *notif = [[UILocalNotification alloc] init];


        descriptionBody =[[self remedyDetailsForRemedyID:remedyID] objectForKey:@"RemedyTxtDic"];
        frequency = [[[self remedyDetailsForRemedyID:remedyID] objectForKey:@"RemedyFrequency"]intValue];

        NSArray *notificationFireDates = [self fireDatesForFrequency:frequency];

        for (NSDate *fireDate in notificationFireDates)
        {
                notif.timeZone = [NSTimeZone defaultTimeZone];


                notif.repeatInterval = NSDayCalendarUnit;
                notif.alertBody = [NSString stringWithString:descriptionBody];
                notif.alertAction = @"Show me";
                notif.soundName = UILocalNotificationDefaultSoundName;

                notif.applicationIconBadgeNumber = 1;

                notif.fireDate = fireDate;


                NSDictionary *userDict = [NSDictionary dictionaryWithObjectsAndKeys:notif.alertBody,                                         @"kRemindMeNotificationDataKey",  [NSNumber numberWithInt:remedyID],kRemindMeNotificationRemedyIDKey,
                                          nil];

                notif.userInfo = userDict;

                [[UIApplication sharedApplication] scheduleLocalNotification:notif];
            }

            return notif;

}

}

- (void)cancelNotification:(int)remedyId
{


    NSArray *notifications = [[UIApplication sharedApplication] scheduledLocalNotifications];
    NSLog(@"Cancelling... Before %d",[[[UIApplication sharedApplication]scheduledLocalNotifications]count]);

    for (UILocalNotification *notification in notifications)
    {

        int notifRemedyId = [[notification.userInfo objectForKey:@"kRemindMeNotificationRemedyIDKey"]intValue];

        NSLog(@"remedyID  : %d",remedyId);
        NSLog(@"notifyId : %d",notifRemedyId);
        if (remedyId == notifRemedyId)
        {
            [[UIApplication sharedApplication] cancelLocalNotification:notification];
        }

    }

    NSLog(@"Cancelling... After %d",[[[UIApplication sharedApplication]scheduledLocalNotifications]count]);

}

【问题讨论】:

标签: iphone ios objective-c uilocalnotification


【解决方案1】:

你可以简单地使用这两种方法,

-(void) incrementOneBadge{
    NSInteger numberOfBadges = [UIApplication sharedApplication].applicationIconBadgeNumber;
    numberOfBadges +=1;

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:numberOfBadges];
}

-(void) decrementOneBdge{
    NSInteger numberOfBadges = [UIApplication sharedApplication].applicationIconBadgeNumber;
    numberOfBadges -=1;

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:numberOfBadges];
}

【讨论】:

  • numberOfBadges -=1;这是用来递减applicationiconbadgenumber的吧?
  • 我应该在我的 MainViewController 中使用此方法还是应该在 appdelegate 中也存在此方法
  • 我会让你知道 tomo ...顺便说一句,当有多个通知时,徽章编号将自动增加
  • 你可以根据需要设置数字,[[UIApplication sharedApplication] setApplicationIconBadgeNumber:4];或任何数字
  • 如果我设置 4 ...并说 3 个通知被触发 ..它是否显示 3 applicationbadgenumber ? ..is setApplicationBadgeNumber : 4 表示最多显示 4 个?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多