Подтвердить что ты не робот

Количество значков сохраняется после удаления приложения и установки его снова

В моем приложении есть раздел уведомлений, и сумма уведомлений отображается в виде значка на значке приложения. Когда пользователь обращается к уведомлениям, количество значков уменьшается. Предположим, что пользователь теперь удаляет сборку и переустанавливает ее, счет значка отображается на значке приложения напрямую, даже если пользователь не открыл приложение. Это отображаемое количество значков такое же, как и при удалении приложения. Счет значка должен отображаться, как только пользователь открыл приложение и получил доступ к разделу уведомлений.

4b9b3361

Ответ 1

У меня такая же проблема, как и несколько дней назад, когда я тестировал приложение из testFlight.

Как правило, эта проблема может возникнуть, когда вы удалили приложение (пока оно показывало номер значка) и снова установили его. Но трудно сказать, где актуальна проблема.

Прочитайте, что Официальная документация Apple говорит.

Сброс уведомлений о предупреждениях Push Push для iOS Первый iOS запрашивает приложения с поддержкой push-приложений для push-уведомлений. если они хотят получать уведомления для этого приложения. Как только пользователь ответил на это предупреждение, он не будет представлен повторно, если только устройство восстановлено или приложение было удалено хотя бы на день.

Если вы хотите имитировать первый запуск вашего приложения, вы можете оставить приложение удалено в течение дня. Вы можете добиться последнего без фактически ожидая дня, установив системные часы вперед в день или больше, полностью отключив устройство, затем снова повернув устройство на.

Есть некоторые предположения из моего опыта:

  • ВЫКЛ ваша форма уведомления
  • И установите значок 0 на стороне сервера, а затем удалите и переустановите приложение с вашего устройства. - После завершения установки запустите приложение
  • После запуска приложения app удалите приложение с устройства, а затем значок reset на сервере 1 и ВКЛ в форме уведомлений .

Не уверен, но может быть, это сработает для вас.:)

Ответ 2

Количество значков поддерживается операционной системой, независимо от приложения. Когда приложение удаляется (удаляется), некоторые значения сохраняются операционной системой, включая счетчик значков. Когда приложение удаляется, не вызывается ни один из методов разработчика или script. Вам придется либо принять это ограничение, либо изменить дизайн приложения, чтобы переосмыслить и преодолеть эту проблему.

Ответ 3

Выполните приведенный ниже код в файле didFinishLaunchingWithOptions

if (![[NSUserDefaults standardUserDefaults] objectForKey:@"is_first_time"]) 
{        
 [application cancelAllLocalNotifications]; 
 // Restart the Local Notifications list
 application.applicationIconBadgeNumber = 0;
 [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:@"is_first_time"];  }

Ответ 4

Запустите функцию freshInstallationCheck в разделе didFinishLaunchingWithOptions.

    func freshInstallationCheck() {
        let defaults = UserDefaults.standard
        guard let currentAppVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String else { return }
        guard let previousVersion = defaults.string(forKey: "appVersion") else {
            // Key does not exist in UserDefaults, must be a fresh install
            print("fresh install")
            //  Writing version to UserDefaults for the first time
            defaults.set(currentAppVersion, forKey: "appVersion")
            // reinstall application, force to set icon to zero
            UIApplication.shared.applicationIconBadgeNumber = 0
            return
        }

        let comparisonResult = currentAppVersion.compare(previousVersion, options: .numeric, range: nil, locale: nil)
        switch comparisonResult {
        case .orderedSame:
            // nothing to do
            break
        case .orderedAscending, .orderedDescending:
            // new version update or downgrade

            break
        }

        // Updating new version to UserDefaults
        defaults.set(currentAppVersion, forKey: "appVersion")
    }