增加推送通知徽章iPhone

42 iphone xcode objective-c push-notification

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

如果我每次都将徽章值发送为"1",如果应用程序未打开,我怎么能增加应用程序图标中的徽章值.

我使用过这段代码但不起作用.

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

小智 53

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

application:didReceiveRemoteNotification:
Run Code Online (Sandbox Code Playgroud)

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

[UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"badgecount"] intValue];
Run Code Online (Sandbox Code Playgroud)

认为这应该对你有帮助.

  • 不应该从aps dict获得徽章计数的关键是@"徽章"?请参阅:http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/doc/uid/TP40006786-CH3-SW16 (6认同)
  • @Mathew Varghese,每个用户都会有不同的未读通知,通过在服务器端保持计数,徽章计数将如何准确? (2认同)

Oma*_*ith 14

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

  • @Geek你的代码不会被调用...因为你的应用程序没有运行 (6认同)

Dee*_*esh 5

当您的应用程序处于后台模式并且您想要增加徽章编号时出现推送通知时,您应该将a发送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];
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)