Swift- Pushmeldingsbadgenummer verwijderen?

Ik probeer de pictogrambadge snel te verwijderen, maar PFInstallation lijkt niet meer te werken. Hoe doe ik dit?


Antwoord 1, autoriteit 100%

U kunt het app-badgepictogram “verwijderen” door het in te stellen op 0:

Snel < 3.0

UIApplication.sharedApplication().applicationIconBadgeNumber = 0

Swift 3.0+

UIApplication.shared.applicationIconBadgeNumber = 0

Deze vraag laat zien wanneer u deze kunt gebruiken: Hoe aantal badges voor pushmeldingen wissen in iOS?


Antwoord 2, autoriteit 9%

Swift 4.2

Bij de AppDelegate, zet gewoon deze code:

   func applicationDidBecomeActive(_ application: UIApplication) {
        application.applicationIconBadgeNumber = 0
    }

Antwoord 3, autoriteit 5%

Swift 5

Bij de AppDelegate didFinishLaunchingWithOptions

UIApplication.shared.applicationIconBadgeNumber = 0

Antwoord 4, autoriteit 4%

Swift 5

Hoewel u dit in de AppDelegate didFinishLaunchingWithOptions kunt plaatsen, wordt de badge niet gewist als de app inactief is en naar actief is verplaatst.

Als u de badge wilt wissen, ongeacht de vorige status, moet u deze in de SceneDelegateplaatsen in plaats van in de AppDelegate.

func sceneDidBecomeActive(_ scene: UIScene) {
    UIApplication.shared.applicationIconBadgeNumber = 0
}

Antwoord 5

Een meer SwiftUI-georiënteerde benadering zou kunnen zijn om te luisteren naar veranderingen in de @Environment(\.scenePhase) var scenePhasein de hoofdweergave. Als de nieuwe fase .activeis, stel dan UIApplication.shared.applicationIconBadgeNumberin op 0zoals besproken in de andere antwoorden.

Voorbeeldcode:

@main
struct MRPApp: App {
    @Environment(\.scenePhase) var scenePhase
    @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    var body: some Scene {
        WindowGroup {
            ContentView()
                .onChange(of: scenePhase) { newPhase in
                    if newPhase == .active {
                        UIApplication.shared.applicationIconBadgeNumber = 0
                    }
                }
        }
    }
}

Other episodes