44

通知を受け取ったときにバッジの値を増やすことは可能ですか?または、カウントをペイロードとして送信する必要がありますか?

バッジ値を毎回「1」として送信する場合、アプリが開いていない場合、アプリのアイコンでバッジ値を増やすにはどうすればよいですか。

このコードを使用しましたが、機能しません。

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

5 に答える 5

55

通常、すべてのアプリで、未読の通知数はサーバーで維持されます。サーバーが特定のデバイストークンにプッシュ通知を送信すると、ペイロードとともにバッジカウントが送信されます。デバイスに通知され、アプリがバックグラウンド(または強制終了)になると、OSはバッジカウントをアプリアイコンに自動的に更新します。アプリを実行しているかどうかにかかわらず、

application:didReceiveRemoteNotification:

委任すると、(NSDictionary *)userInfoからバッジカウントを受け取ることができます。したがって、機能を使用してアプリアイコンのバッジ数を更新することができます

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

これはあなたを助けるはずだと思います。

于 2012-06-22T10:44:45.963 に答える
15

アプリケーションが開いていない場合、ペイロード以外ではバッジを増やすことはできません。

于 2012-06-22T09:32:58.283 に答える
6

アプリケーションがバックグラウンドモードのときにプッシュ通知が届き、バッジ番号をインクリメントする場合は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];
            }
        }
    }
}
于 2012-06-22T09:51:33.907 に答える
3

アーバンエアシップは、「オートバッジ」機能を使用してこれをサポートしています。

于 2013-08-08T13:58:45.617 に答える
-1

アプリを開いたときにリモート通知を受信した後、

以下のコードを使用して、Appdelegateファイルの「didBecomeActive」メソッドで現在のバッジ番号を取得します。

int badgeCount = [UIApplication sharedApplication].applicationIconBadgeNumber;
    badgeCount = badgeCount + 1;
于 2014-03-14T08:22:29.500 に答える