Обновление значка iOS без push-уведомлений

86

Я видел несколько приложений todo, которые обновляют свои значки приложений в полночь, всегда показывая правильное количество задач. Они делают это без использования Push-уведомлений, поэтому у меня вопрос: как они это делают? Используют ли они локальные уведомления - если да, то вызываются ли они при выключении устройства? Я немного запутался и был бы признателен за ваш вклад.

fabian789
источник

Ответы:

137

Попробуй это

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];

Для этого через локальные уведомления необходимо установить значение в applicationIconBadgeNumber

UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.applicationIconBadgeNumber = 1;// set here the value of badge
raaz
источник
1
Вот как вы меняете номер значка - но для того, чтобы сделать это, когда приложение работает в фоновом режиме или если телефон спит, вам может потребоваться изучить локальные уведомления или запланированные задачи.
Jasarien 01
2
В iOS 8.0 и более поздних версиях ваше приложение должно зарегистрироваться для получения уведомлений пользователей с помощью - [UIApplication registerUserNotificationSettings:], прежде чем можно будет установить значок значка.
unom
17

И для всех, кто использует новый и блестящий Swift:

UIApplication.sharedApplication().applicationIconBadgeNumber = someNumber

Swift 3:

UIApplication.shared.applicationIconBadgeNumber = someNumber
Иржи Тречак
источник
2
предлагая быстрые ответы, рекомендуется указывать, какую версию вы освещаете, поскольку сейчас это очень динамично.
Хуан Боэро,
да ты прав ; В этом случае, однако, в синтаксисе нет ничего, что могло бы измениться (это простое присвоение), поэтому, вероятно, в этом нет необходимости :)
Джири Тречак
3
Иржи, забавный комментарий в ретроспективе ;-)
Тим
13

Начиная с iOS 4.0, вы можете запускать локальные уведомления на всех устройствах, работающих под управлением iOS не ниже 4.0. Посмотрите на UILocalNotificationкласс, он позволяет вам установить значок в полночь, не запуская ваше приложение.

JustSid
источник
Хм, iPhone даже не может запустить будильник, когда он выключен, так что нет, значок не будет обновляться. Но когда вы снова включите его, он запустит уведомление (я), которое обновит значок.
JustSid 01
Хорошо, вот что я хотел знать. Благодарность!
fabian789 01
7

Set UIApplication«сек applicationIconBadgeNumberсвойства в коде , когда приложение работает:

[UIApplication sharedApplication].applicationIconBadgeNumber = someNumber;
Владимир
источник
0

Для цели C вы должны использовать:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber : anyNumber ];            
Вайбхав Шиледар
источник
0

Swift 5

UIApplication.shared.applicationIconBadgeNumber = someNumber
Бен
источник