Есть ли способ автоматически обновлять значок значка (счет) при получении push-уведомления [дубликат]

  1. Удалить модуль docx с помощью pip uninstall docx
  2. Загрузить python_docx-0.8.6-py2.py3-none-any.whl файл из http://www.lfd.uci.edu/~gohlke/pythonlibs/
  3. Запустите pip install python_docx-0.8.6-py2.py3-none-any.whl, чтобы переустановить docx. Это решило эту ошибку импорта для меня. Просто чтобы предоставить решение ...
54
задан James Webster 7 August 2015 в 11:49
поделиться

7 ответов

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

Но вы можете отправить номер значка в полезную нагрузку push-уведомления, но вам придется выполнять команду сервера вычислений.

Вы должны прочитать Руководство по программированию локального и Push Notification и особенно Полезная нагрузка уведомлений .

Полезная нагрузка может выглядеть так:

{
    "aps" : {
        "alert" : "You got your emails.",
        "badge" : 9
    }
}

Теперь значок значка приложения приложения отобразит 9.

54
ответ дан limon 26 August 2018 в 00:48
поделиться

Если вы используете NotificationServiceExtension, вы можете обновить значок в этом.

var bestAttemptContent : UNMutableNotificationContent? // 
bestAttemptContent.badge = 0//any no you wanna display

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

2
ответ дан commando24 26 August 2018 в 00:48
поделиться

После получения удаленного уведомления при открытии приложения

получите текущий номер значка в «didBecomeActive». Метод вашего AppDelegate.

Файл с использованием кода ниже:

int badgeCount = [UIApplication sharedApplication].applicationIconBadgeNumber;
    badgeCount = badgeCount + 1;
9
ответ дан Janmenjaya 26 August 2018 в 00:48
поделиться

Начиная с iOS 10 вы можете разработать расширение службы уведомлений для своего приложения. Он будет запущен системой, когда вы получите уведомление, и вы можете рассчитать действительный номер для значка и установить его.

Взгляните на документацию: https://developer.apple .com / документация / usernotifications / unnotificationserviceextension

1
ответ дан Michael Krutoyarskiy 26 August 2018 в 00:48
поделиться

Как сказал @rckoenes, вам нужно будет делать серверный сервер вычислений, но как вы можете узнать, когда нужно увеличить значение номера значка, которое вы должны отправить в полезной нагрузке?

Будет ли при запуске отправки приложения сообщение на ваш сервер, указывающее, что приложение было запущено. Таким образом, на стороне сервера вы начинаете снова с badge = 0, и пока нет сообщений, полученных сервером, увеличивайте номер значка с каждой полезной нагрузкой push-уведомления.

0
ответ дан mustafa 26 August 2018 в 00:48
поделиться
    **This is the APNS payload get back from server.**

    {
        "aps" : {
            "alert" : "You got your emails.",
            "badge" : 9,
            "sound" : "bingbong.aiff"
        },
        "acme1" : "bar",
        "acme2" : 42
    }

Значение для ключевого значка автоматически считается счетчиком значков. На стороне iOS-приложения нет необходимости вычислять или обрабатывать счет. В приведенном выше примере 9 находится значок значка. Значок вашего приложения покажет 9.

ПРИМЕЧАНИЕ. Пока ваше приложение закрыто, вы не можете самостоятельно управлять значками. Вот почему мы используем значок значка из APNS Payload Для лучшего пояснения об уведомлении см. Документацию

, если вы хотите уменьшить количество значков на свой собственный. Сделайте счетчик и обновите его самостоятельно. Следуйте за

4
ответ дан slawekwin 26 August 2018 в 00:48
поделиться
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

    application.applicationIconBadgeNumber = 0;
    NSLog(@"userInfo %@",userInfo);

    for (id key in userInfo) {
        NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]);
    }

    [application setApplicationIconBadgeNumber:[[[userInfo objectForKey:@"aps"] objectForKey:@"badge"] intValue]];
    NSLog(@"Badge %d",[[[userInfo objectForKey:@"aps"] objectForKey:@"badge"] intValue]);
}
0
ответ дан suvi 26 August 2018 в 00:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: