Swift-删除推送通知徽章号码?
Swift- Remove Push Notification Badge number?
我正在尝试快速删除图标徽章,但 PFInstallation 似乎不再起作用。我该怎么做?
您可以 "remove" 通过将应用徽章图标设置为 0:
Swift < 3.0
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
Swift 3.0+
UIApplication.shared.applicationIconBadgeNumber = 0
这个问题说明什么时候可以使用它:How to clear push notification badge count in iOS?
Swift 4.2
在 AppDelegate 中,只需输入以下代码:
func applicationDidBecomeActive(_ application: UIApplication) {
application.applicationIconBadgeNumber = 0
}
Swift 5
在 AppDelegate didFinishLaunchingWithOptions
UIApplication.shared.applicationIconBadgeNumber = 0
Swift 5
虽然您可以将它放在 AppDelegate didFinishLaunchingWithOptions 中,但如果应用处于非活动状态并已转为活动状态,这将不会清除标志。
如果您希望清除徽章而不考虑之前的状态,您需要将其放入 SceneDelegate 而不是 AppDelegate。
func sceneDidBecomeActive(_ scene: UIScene) {
UIApplication.shared.applicationIconBadgeNumber = 0
}
一种更面向 SwiftUI 的方法可能是监听根视图中 @Environment(\.scenePhase) var scenePhase
的变化。然后,如果新阶段是 .active
,请将 UIApplication.shared.applicationIconBadgeNumber
设置为 0
,如其他答案所述。
示例代码:
@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
}
}
}
}
}
我正在尝试快速删除图标徽章,但 PFInstallation 似乎不再起作用。我该怎么做?
您可以 "remove" 通过将应用徽章图标设置为 0:
Swift < 3.0
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
Swift 3.0+
UIApplication.shared.applicationIconBadgeNumber = 0
这个问题说明什么时候可以使用它:How to clear push notification badge count in iOS?
Swift 4.2
在 AppDelegate 中,只需输入以下代码:
func applicationDidBecomeActive(_ application: UIApplication) {
application.applicationIconBadgeNumber = 0
}
Swift 5
在 AppDelegate didFinishLaunchingWithOptions
UIApplication.shared.applicationIconBadgeNumber = 0
Swift 5
虽然您可以将它放在 AppDelegate didFinishLaunchingWithOptions 中,但如果应用处于非活动状态并已转为活动状态,这将不会清除标志。
如果您希望清除徽章而不考虑之前的状态,您需要将其放入 SceneDelegate 而不是 AppDelegate。
func sceneDidBecomeActive(_ scene: UIScene) {
UIApplication.shared.applicationIconBadgeNumber = 0
}
一种更面向 SwiftUI 的方法可能是监听根视图中 @Environment(\.scenePhase) var scenePhase
的变化。然后,如果新阶段是 .active
,请将 UIApplication.shared.applicationIconBadgeNumber
设置为 0
,如其他答案所述。
示例代码:
@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
}
}
}
}
}