繁体   English   中英

增加推送通知徽章 iPhone

[英]Increment the Push notification Badge iPhone

是否可以在收到通知时增加徽章值。 或者我应该将计数作为有效载荷发送吗?

如果我每次都将徽章值发送为“1”,如果应用程序未打开,我如何增加应用程序图标中的徽章值。

我已经使用了此代码但不起作用。

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [UIApplication sharedApplication].applicationIconBadgeNumber = [UIApplication sharedApplication].applicationIconBadgeNumber + 1; 
}

通常在所有应用程序中,未读通知计数都保存在服务器中。 当服务器向特定设备令牌发送推送通知时,它们会随负载一起发送徽章计数。 一旦设备收到通知并且您的应用程序处于后台(或被终止),操作系统会自动将徽章计数更新为您的应用程序图标。 如果您的应用程序是否正在运行,您将在

application:didReceiveRemoteNotification:

委托,因此您可以从 (NSDictionary *)userInfo 接收徽章计数。 因此,您可以使用该功能更新应用程序图标徽章计数

[UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"badgecount"] intValue];

认为这应该对您有所帮助。

如果应用程序未打开,除了有效载荷之外,您将无法增加徽章。

当一个推送通知来当你的应用程序在后台模式和要递增证件号码,你应该送badgeCount到服务器,让服务器知道当前计数。

如果您从服务器端管理徽章计数,那么此代码就足够了:-

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo  {
    NSLog(@"remote notification: %@",[userInfo description]);

    if (userInfo) {
        NSLog(@"%@",userInfo);

        if ([userInfo objectForKey:@"aps"]) { 
            if([[userInfo objectForKey:@"aps"] objectForKey:@"badgecount"]) {
                [UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"badgecount"] intValue];
            }
        }
    }
}

Urban Airship 使用他们的“自动徽章”功能支持这一点

打开App时收到远程通知后,

使用以下代码在 Appdelegate 文件的“didBecomeActive”方法中获取当前徽章编号:

int badgeCount = [UIApplication sharedApplication].applicationIconBadgeNumber;
    badgeCount = badgeCount + 1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM