通知の受信時にバッジの値を増やすことは可能ですか? ORペイロードとしてカウントを送信する必要がありますか?
毎回バッジ値を「1」として送信している場合、アプリが開いていない場合にアプリのアイコンのバッジ値をどのようにインクリメントできますか。
このコードを使用しましたが、機能しません。
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
[UIApplication sharedApplication].applicationIconBadgeNumber = [UIApplication sharedApplication].applicationIconBadgeNumber + 1;
}
通常、すべてのアプリで未読の通知カウントはサーバーで維持されます。サーバーが特定のデバイストークンにプッシュ通知を送信すると、バッジカウントとペイロードが送信されます。デバイスに通知され、アプリがバックグラウンド(または強制終了)になると、OSはバッジカウントをアプリアイコンに自動的に更新します。アプリを実行しているかどうかにかかわらず、
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は、 this の「自動バッジ」機能の使用をサポートしています。
アプリを開いたときにリモート通知を受信した後、
以下のコードを使用して、Appdelegateファイルの「didBecomeActive」メソッドで現在のバッジ番号を取得します。
int badgeCount = [UIApplication sharedApplication].applicationIconBadgeNumber;
badgeCount = badgeCount + 1;