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.

fabian789
fonte

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
Raaz
fonte
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
Jiri Trecak
fonte
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.

JustSid
fonte
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;
Vladimir
fonte
0

Para o Objective C, você deve usar:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber : anyNumber ];            
Vaibhav Shiledar
fonte
0

Swift 5

UIApplication.shared.applicationIconBadgeNumber = someNumber
Ben
fonte