Oxc*_*cug 208
您可以通过将其设置为0来"删除"应用徽章图标:
斯威夫特<3.0
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
Run Code Online (Sandbox Code Playgroud)
Swift 3.0+
UIApplication.shared.applicationIconBadgeNumber = 0
Run Code Online (Sandbox Code Playgroud)
此问题显示何时可以使用它:如何在iOS中清除推送通知徽章计数?
Moh*_*bil 11
斯威夫特 5
在 AppDelegate didFinishLaunchingWithOptions
UIApplication.shared.applicationIconBadgeNumber = 0
Run Code Online (Sandbox Code Playgroud)
小智 9
斯威夫特4.2
在AppDelegate处,只需输入以下代码:
func applicationDidBecomeActive(_ application: UIApplication) {
application.applicationIconBadgeNumber = 0
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特 5
虽然您可以将它放在 AppDelegate didFinishLaunchingWithOptions 中,但如果应用程序处于非活动状态并已变为活动状态,则不会清除标记。
如果你想清除徽章而不管之前的状态你需要把它放在SceneDelegate而不是 AppDelegate 中。
func sceneDidBecomeActive(_ scene: UIScene) {
UIApplication.shared.applicationIconBadgeNumber = 0
}
Run Code Online (Sandbox Code Playgroud)
更面向 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
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40864 次 |
| 最近记录: |