web-dev-qa-db-ja.com

アプリのリモート通知をクリアする方法は?

IPhone画面の上から下にスワイプしたときに、通知バナーからリモート通知をクリアする方法はありますか?バッジ番号をゼロに設定してみました:

application.applicationIconBadgeNumber = 0 

デリゲートdidFinishLaunchingWithOptions、およびdidReceiveRemoteNotificationでは、通知はクリアされませんでした。ありがとう。

16
Tedha

IconBadgeNumberを0に設定し、現在の通知をキャンセルする必要があります。私はSwiftで行ったことはありませんが、そのコードは次のようになると思います。

application.applicationIconBadgeNumber = 0 
application.cancelAllLocalNotifications()
15
Icaro

IOS 10では、すべてのソリューションが廃止されます

'cancelAllLocalNotifications()'はiOS 10.0で廃止されました:UserNotificationsフレームワークの-[UNUserNotificationCenter removeAllPendingNotificationRequests]を使用してください

以下のコードを使用して通知をキャンセルし、バッジ数をリセットします

IOS 10の場合Swift 3.0

cancelAllLocalNotificationsはiOS 10で廃止されました。

@available(iOS, introduced: 4.0, deprecated: 10.0, message: "Use UserNotifications Framework's -[UNUserNotificationCenter removeAllPendingNotificationRequests]")
open func cancelAllLocalNotifications()

このインポートステートメントを追加する必要があります。

import UserNotifications

通知センターを取得します。そして以下のような操作を行います

application.applicationIconBadgeNumber = 0 // For Clear Badge Counts
let center = UNUserNotificationCenter.current()
center.removeAllDeliveredNotifications() // To remove all delivered notifications
center.removeAllPendingNotificationRequests() // To remove all pending notifications which are not delivered yet but scheduled.

1つまたは複数の特定の通知を削除する場合は、以下の方法で達成できます。

center.removeDeliveredNotifications(withIdentifiers: ["your notification identifier"])

それが役に立てば幸い..!!

25
Naveed Ahmad

それが機能するためには、バッジの数を増やしてから減らす必要があります。

application.applicationIconBadgeNumber = 1
application.applicationIconBadgeNumber = 0
application.cancelAllLocalNotifications()
1
MobileMon

Swift 4以上のコードを探している人

application.applicationIconBadgeNumber = 0
UNUserNotificationCenter.current().removeAllDeliveredNotifications()
1
Golu kumar

Swift

あなたのAppDelegate.SwiftdidFinishLaunchingWithOptionsの下のファイル追加:

application.applicationIconBadgeNumber = 0

アプリの起動時に、これによりiOSバッジが削除されます(アプリアイコンの右上隅にある赤い丸)。

1
Timmy Sorensen

2019年11月、以下はSwift 4.を使用した私にとって有効なソリューションです。まず、すべての通知をクリアするにはデバイスのバージョンを確認する必要がありますが、バッジ数をリセットするために確認する必要はありません。

override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?  ) -> Bool {

  //--------

  application.applicationIconBadgeNumber = 0
  if #available(iOS 10.0, *) {        
     let center = UNUserNotificationCenter.current() 
     center.removeAllDeliveredNotifications() 
     center.removeAllPendingNotificationRequests()    
  } else {        
     application.cancelAllLocalNotifications()    
  }        

  //------
}
0
Blasanka