我一直在处理本地通知。但问题是应用程序图标徽章编号没有随着本地通知被触发而递增。我试过.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];
}
}
答案 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);