应用程序徽章编号不会随本地通知递增

时间:2014-12-11 08:31:20

标签: ios uilocalnotification badge

我一直在处理本地通知。但问题是应用程序图标徽章编号没有随着本地通知被触发而递增。我试过.applicationIconBadgeNumber + 1;  但它没有产生任何影响。应用程序图标徽章编号始终为1。

enter code here
    - (IBAction)save:(id)sender
{
    eventitem=textfield.text;
    NSDate *newdate=self.datepick.date;
    UIApplication *app=[UIApplication sharedApplication];
    notifyalarm=[[UILocalNotification alloc]init];
    if (notifyalarm)
    {
        notifyalarm.fireDate=newdate;
        notifyalarm.timeZone=[NSTimeZone defaultTimeZone];
        notifyalarm.alertBody=eventitem;
        notifyalarm.applicationIconBadgeNumber=[UIApplication sharedApplication] .applicationIconBadgeNumber+1;

        [app scheduleLocalNotification:notifyalarm];

    }

}

2 个答案:

答案 0 :(得分:1)

更新

看到你的代码后,我建议在设置徽章价值

之前使用以下内容
NSUserDefaults* userDefs = [NSUserDefaults standardUserDefaults];
//old val
NSInteger iconBadge = [userDefs integerForKey:@"myBadgeVal"];
//updatge val
iconBadge++;
//store
[userDefs setInteger:iconBadge forKey:@"myBadgeVal"];
[userDefs synchronize];
//set as icon badge
notifyalarm.applicationIconBadgeNumber=iconBadge;

但是我不确定何时保存'方法被调用。确保按预期多次调用此方法。

您必须在本地处理此数字,因为[UIApplication sharedApplication] .applicationIconBadgeNumber将始终为0(因为您不会在任何地方更新此值)。如果您愿意,可以使用NSUserDefaults。另外请提供一些代码,以便我们提供更多帮助。

答案 1 :(得分:0)

如果您的第一个已结算LocalNotification将首先触发,那么您可以使用以下方式设置BadgeCount

notifyalarm.applicationIconBadgeNumber = ([[[UIApplication sharedApplication] scheduledLocalNotifications] count] + 1);