【问题标题】:Application badge number is not incrementing with local notification应用程序徽章编号不会随着本地通知而增加
【发布时间】:2014-12-11 08:31:20
【问题描述】:

我一直在处理本地通知。但问题是应用程序图标徽章编号不会随着本地通知的增加而增加。我试过 .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];

    }

}

【问题讨论】:

    标签: ios uilocalnotification badge


    【解决方案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。另外请提供一些代码,以便我们提供更多帮助。

    【讨论】:

    • 从后台启动应用时,徽章编号未更新。也就是说,如果徽章编号为 3,然后我将应用程序启动到前台并设置另一个通知并将我的应用程序设置为后台。因此,当触发新通知时,徽章编号变为 4 而不是 1
    【解决方案2】:

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

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

    【讨论】:

    • 我之前说过,如果你的第一个解决通知首先触发,那么只有上面的逻辑才会起作用。
    猜你喜欢
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多