2
[[UIApplication sharedApplication] cancelAllLocalNotifications];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];'

上記のコードを追加しましたdidfinishLaunchingWithOptionsが、ユーザーが通知センターで通知をタップしてアプリに入ると、通知がクリアされません。

編集:

私も自分のコードにこれを追加しようとしました:

application:didReceiveRemoteNotification:メッセージセンターからメッセージをクリアしようとしている場合は、メソッドでバッジを増やしてから減らす必要もあります。 これにより、ユーザーが通知を押してアプリに入ると、メッセージセンターもクリアされます。つまり、次のようになります。

[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];  

ここで説明するように: iOS アプリケーション: 通知をクリアする方法? ただし、通知は通知センターからまだクリアされません

4

3 に答える 3

5

バッジ番号をアプリケーションに手動で追加して貼り付けました

- (void)applicationDidBecomeActive:(UIApplication *)application
{
      application.applicationIconBadgeNumber = 0;
}

私のAppDelegateへ。私にとって、これは魅力のように機能します。didfinishLaunchingWithOptionsapplicationDidBecomeActiveは、ムハンマド・ラマが説明したものと同じではないことに注意してください。これを AppDelegate に貼り付け、通知センターで通知をタップすると、消えます。そうでない場合、アプリがアクティブになった後に新しい通知を作成する可能性がありますか?

于 2013-01-29T12:17:24.680 に答える
0

このコードを追加する

- (void)applicationDidBecomeActive:(UIApplication *)application
{
      application.applicationIconBadgeNumber = 0;
}

アプリの最初のdidfinishlaunchingwithoptions起動時に起動されます。アプリがバックグラウンドで実行されている場合、起動されdidfinishlaunchingwithoptionsません。

于 2013-01-29T10:49:17.367 に答える
0

ユーザーが通知アクションからアプリケーションを開くと、次のように起動します

- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UILocalNotification *remoteNotif =
        [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if (remoteNotif) {
        //handle remote notification
    }
    ....
}

しかし、アプリがバックグラウンドにあるとき、それは呼び出します

- application:didReceiveRemoteNotification:

また、メソッド[[UIApplication sharedApplication] cancelAllLocalNotifications];は、登録されたローカル通知のみをキャンセルします。プッシュ通知はキャンセルできません。すぐに配信され、1 回だけ実行されます。

于 2013-01-29T14:13:34.433 に答える