Как удалить значок значка iOS-приложения после его закрытия?

Я хочу установить значок значка приложения iOS на ноль (при котором значок исчезает с значка) после завершения работы приложения. (... со Swift 4, iOS 10.x, 11.x)

В моем ViewController я успешно запросил локальное уведомление, как это:

@objc func requestLocalNotification() -> Bool {
    let center = UNUserNotificationCenter.current()
    var result = true

    center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
        if granted {
            result = true
        } else {
            result = false
        }
    }

    return result
}

И я успешно установил значок значка приложения с этим:

@objc func notifyBadge(_ badge: Int) {
    let content = UNMutableNotificationContent()
    content.badge = badge as NSNumber

    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)

    let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)

    UNUserNotificationCenter.current().add(request)
}

Я могу удалить значок, когда приложение запускается с этим в AppDelegate.swift:

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

    application.applicationIconBadgeNumber = 0

    return true
}

Казалось, имеет смысл попытаться сделать это здесь, когда пользователь дважды нажимает кнопку "Домой":

func applicationWillTerminate(_ application: UIApplication) {

    application.applicationIconBadgeNumber = 0
}

Но это не работает.

Я попытался использовать общий объект приложения вместо переданного параметра приложения:

UIApplication.shared.applicationIconBadgeNumber = 0

Есть похожие вопросы (и ответы) на SO, чтобы сбросить значок значка приложения, но я нашел только 1, который относится к выполнению этого, когда приложение закрывается пользователем:

iphone, как поймать, если приложение закрывается, чтобы обновить значок значка

Но этому вопросу уже более 5 лет, и на самом деле решение не было найдено. Возможно, кто-то нашел способ сделать это с тех пор?

0 ответов

Другие вопросы по тегам