Пользовательская ошибка не обновляет значение, когда приложение находится в состоянии НЕАКТИВНО, или при получении уведомления, когда приложение ПРЕКРАЩЕНО - PullRequest
0 голосов
/ 05 октября 2018

Я хочу сохранить значение в userdefault, чтобы показать значение значка на вкладке.Код работает нормально, когда приложение находится на переднем плане и в фоновом состоянии.Но это не сохранение значения в userdefault в неактивном состоянии.Поэтому, когда я запускаю приложение, я не могу получить количество полученных уведомлений после его завершения.

Добавлен следующий код в AppDelegate классе:

public static var badgeValue: String? {
    get {
        return UserDefaults.standard.string(forKey: "updateBadgeValue")
    }
    set(newValue) {
            UserDefaults.standard.set(newValue, forKey: "updateBadgeValue")
            UserDefaults.standard.synchronize()
    }
}

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    if let badgeValue = AppDelegate.badgeValue {
        AppDelegate.badgeValue = String(Int(badgeValue)!+1)
    } else {
        AppDelegate.badgeValue = "1"
    }
NotificationCenter.default.post(name: NSNotification.Name("updateBadgeValue"), object: nil)
}

и извлечено значение по следующему коду в UITabBarController классе:

 override func viewDidLoad() {
    super.viewDidLoad()

    updateBadgeValue()
}

func updateBadgeValue() {
    if UIApplication.shared.applicationIconBadgeNumber != 0 {
        self.tabBar.items![0].badgeValue = String(UIApplication.shared.applicationIconBadgeNumber)
    }
    NotificationCenter.default.removeObserver(self, name: NSNotification.Name("updateBadgeValue"), object: nil). 
    NotificationCenter.default.addObserver(self, selector: #selector(updateBadgeValue), name: NSNotification.Name("updateBadgeValue"), object: nil)
}

// Удалить наблюдателяудаление предыдущего добавленного наблюдателя, чтобы предыдущий добавленный наблюдатель вызывал снова и снова.Если я не удаляю наблюдателя, то при входе в класс UITabBarController каждый раз добавляется новый наблюдатель.

...