Значок Push-уведомления не обновляется в фоновом режиме с Urban Airship


Я боролся с чем-то, что, кажется, должно "просто работать" в течение некоторого времени. У меня есть push-уведомление, настроенное через Urban Airship, и все работает нормально, за исключением обновления значков, пока приложение находится в фоновом режиме. Насколько я могу судить, до тех пор, пока значок установлен в целое число в полезной нагрузке, это должно обрабатывать себя, если приложение не находится на переднем плане.

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

Вот моя настройка в didFinishLaunchingWithOptions:

UAConfig *config = [UAConfig defaultConfig];

    // You can also programatically override the plist values:
    // config.developmentAppKey = @"YourKey";
    // etc.

    // Call takeOff (which creates the UAirship singleton)
    [UAirship takeOff:config];
    [UAPush shared].notificationTypes = (UIRemoteNotificationTypeBadge |
                                         UIRemoteNotificationTypeSound |
                                         UIRemoteNotificationTypeAlert |
                                        UIRemoteNotificationTypeNewsstandContentAvailability);

        [[UAPush shared] setPushEnabled:YES];

    [[UAPush shared] setAutobadgeEnabled:YES];
    [self performSelector:@selector(resetUABadge:)];
    [[UAPush shared] handleNotification:[launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey]
                       applicationState:application.applicationState];

В resetUABadge называть просто устанавливает все обратно в 0, когда приложение запускает. Эта проблема сохраняется независимо от того, есть ли этот performSelector или нет.

Я не уверен, что есть какая-то конфигурация, которую я пропустил или что, но каждая другая часть push-уведомления работает, пока приложение находится в фоновом режиме/закрыто (предупреждение, звук), но значок просто не обновляется.

1 2

1 ответ:

Я нашел ответ через этот вопрос. Оказывается, если вы регистрируетесь как для UIRemoteNotificationTypeBadge, так и для UIRemoteNotificationTypeNewsstandContentAvailability, тип газетного киоска полностью нарушает маркировку. Надо признать, что я вообще не должен был регистрироваться в газетном киоске, но я и представить себе не мог, что это сломает баджинг.

Вздох.