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 scenePhase
in de hoofdweergave. Als de nieuwe fase .active
is, stel dan UIApplication.shared.applicationIconBadgeNumber
in op 0
zoals 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
}
}
}
}
}