Atualizando o emblema do iOS sem notificações push


86

Eu vi alguns aplicativos de tarefas que atualizam seus emblemas de aplicativos à meia-noite, sempre mostrando o número correto de tarefas devidas. Eles fazem isso sem o uso de notificações push - então minha pergunta é: como eles fazem isso? Eles usam notificações locais - em caso afirmativo, elas são chamadas quando o dispositivo é desligado? Estou um pouco confuso e gostaria de receber alguma contribuição.

Respostas:


137

Tente isto

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];

Para fazer isso por meio de notificações locais, você deve definir o valor em applicationIconBadgeNumber

UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.applicationIconBadgeNumber = 1;// set here the value of badge

1
É assim que você altera o número do crachá - mas para fazer isso enquanto o aplicativo está em segundo plano ou se o telefone estiver inativo, você pode precisar verificar as notificações locais ou tarefas agendadas.
Jasarien

2
No iOS 8.0 e posterior, seu aplicativo deve se registrar para notificações do usuário usando - [UIApplication registerUserNotificationSettings:] antes de poder definir o emblema do ícone.
unom

17

E para todos que usam o Swift novo e brilhante:

UIApplication.sharedApplication().applicationIconBadgeNumber = someNumber

Swift 3:

UIApplication.shared.applicationIconBadgeNumber = someNumber

2
ao sugerir respostas rápidas, é uma boa prática incluir qual versão você está cobrindo, uma vez que é muito dinâmico agora.
Juan Boero

sim você está certo ; Neste caso, entretanto, não há nada na sintaxe que possa ser alterado (é uma atribuição simples), então provavelmente não é necessário :)
Jiri Trecak

3
Jiri, comentário divertido em retrospectiva ;-)
Tim

13

Desde o iOS 4.0, você pode disparar notificações locais em todos os dispositivos que executam pelo menos iOS 4.0. Olhe para a UILocalNotificationclasse, ele permite que você defina o emblema à meia-noite sem ter seu aplicativo em execução.


Uhm, o iPhone nem é capaz de ligar o despertador quando está desligado, então não, o crachá não será atualizado. Mas quando você ligá-lo novamente, ele disparará as notificações que atualizarão o emblema.
JustSid 01 de

Ok, era isso que eu queria saber. Obrigado!
fabian789

7

Defina UIApplicationa applicationIconBadgeNumberpropriedade de em seu código quando o aplicativo estiver em execução:

[UIApplication sharedApplication].applicationIconBadgeNumber = someNumber;

0

Para o Objective C, você deve usar:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber : anyNumber ];            

0

Swift 5

UIApplication.shared.applicationIconBadgeNumber = someNumber
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.