作成しようとしているこのアプリケーションでは、プッシュ通知を使用しています。この部分はうまく機能します。通知を送信するときに、アプリアイコンにバッジも追加します。問題は、アプリケーションを昼食にしたときに再び消えるはずですが、消えないことです。
-(IBAction)Push{
NSMutableDictionary *data = [NSMutableDictionary dictionary];
[data setObject:@"Numfeud: Troels made a move!" forKey:@"alert"];
[data setObject:[NSNumber numberWithInt:1] forKey:@"badge"];
[data setObject:@"bar" forKey:@"foo"];
[PFPush sendPushDataToChannelInBackground:@"GameChannel2" withData:data];
}
の中に application didFinishLaunchingWithOptions
この方法でバッジを0に設定しようとしています。
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
アプリケーションアイコンバッジをクリアするにはどうすればよいですか?
アプリが再びアクティブになり、まだバックグラウンドにある場合は、-applicationDidBecomeActive:
同様に:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
application.applicationIconBadgeNumber = 0;
}
アプリがまだバックグラウンドで実行されている場合-application:didFinishLaunchingWithOptions:
は呼び出されません。
おそらく、-application:didFinishLaunchingWithOptions:
は呼び出されていません。これは、アプリがまだバックグラウンドで実行されているためです。アプリをバックグラウンドから起動したときにバッジ数を削除するには、-applicationWillEnterForeground:
のバッジ番号もリセットする必要があります。
In SwiftおよびIn AppDelegate
func applicationDidBecomeActive(_ application: UIApplication) {
application.applicationIconBadgeNumber = 0
}
このコードも使用できます。
- (void)applicationDidBecomeActive:(UIApplication *)application
{
application.applicationIconBadgeNumber = 0;
}
または特定のViewController内
- (void)awakeFromNib {
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}
applicationWillResignActive
(AppDelegate.m
)で呼び出すかもしれません:
-(void)applicationWillResignActive:(UIApplication *)application{
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}
これは、アプリが開いているときにbadge
が来たらPush
をクリアするのに役立ちます。ユーザーがnotification
を見て、Home Button
(1回または2回)を押すと、それをクリアします。 app
がclosed
である場合もクリアされます(ユーザーが開いた後にクリアされます)。
ここ このメソッドがいつ呼び出されたかを確認できます。