Nota técnica TN2265: Solucionando problemas de notificações push
Na primeira vez em que um aplicativo ativado por push se registra para receber notificações por push, o iOS pergunta ao usuário se ele deseja receber notificações para esse aplicativo. Depois que o usuário responde a esse alerta, ele não é apresentado novamente, a menos que o dispositivo seja restaurado ou o aplicativo tenha sido desinstalado por pelo menos um dia.
Se você deseja simular uma execução inicial do seu aplicativo, pode deixá-lo desinstalado por um dia. Você pode obter esse último sem realmente esperar um dia, ajustando o relógio do sistema um dia ou mais, desligando o dispositivo completamente e ligando o dispositivo novamente.
Atualização: conforme observado nos comentários abaixo, esta solução parou de funcionar desde o iOS 5.1. Gostaria de encorajar o arquivamento de um bug na Apple para que eles possam atualizar sua documentação. A solução atual parece estar redefinindo o conteúdo e as configurações do dispositivo.
Atualização: a nota técnica foi atualizada com novas etapas que funcionam corretamente a partir do iOS 7.
- Exclua seu aplicativo do dispositivo.
- Desligue o dispositivo completamente e ligue-o novamente.
- Vá para Configurações> Geral> Data e hora e defina a data com antecedência de um dia ou mais.
- Desligue o dispositivo completamente novamente e ligue-o novamente.
ATUALIZAÇÃO a partir do iOS 9
Simplesmente excluir e reinstalar o aplicativo redefinirá o status da notificação para notDetermined
(o que significa que os prompts serão exibidos).
Graças à resposta de Gomfucius abaixo:
https://stackoverflow.com/a/33247900/704803
Outra solução para testar isso é simplesmente alterando seu ID do pacote. Só não se esqueça de mudar de volta quando terminar!
fonte
No iOS 9.0.2, recebo o "alerta de notificação por push de registro" sempre que excluir o aplicativo e reinstalá-lo. Isso ocorre tanto para downloads de produção da AppStore quanto para o modo adhoc.
ATUALIZAÇÃO: está confirmado que está funcionando no iOS 9.x
fonte
Como já observado, a abordagem para redefinir o estado de notificação de um aplicativo em um dispositivo foi alterada para iOS5, uma versão mais recente.
Isso funciona para mim no iOS6:
No entanto, isso fará com que o prompt inicial apareça novamente - ele não removerá nenhum outro material relacionado ao estado de envio.
fonte
A lista: /private/var/mobile/Library/RemoteNotification/Clients.plist
... contém os clientes registrados para notificações por push. A remoção da entrada do seu aplicativo fará com que o prompt apareça novamente
fonte
Fazer programaticamente parece funcionar para mim sempre. Eu tenho uma compilação com a seguinte linha não comentada:
Eu o executo sempre que quero cancelar o registro do PN. Pode ser necessário encerrar o aplicativo explicitamente a partir da lista de recentes e brincar com o Centro de Notificação no aplicativo Configurações para acertar.
Além disso, o prompt da interface do usuário solicitando que o usuário se registre na PN pode não aparecer. Não tenho certeza se foi desativado em qualquer uma das versões recentes do iOS.
fonte
Como ianolito disse, definir a data deve funcionar:
Percebi no meu dispositivo (iPhone 4, iOS 6.1.2) que o relógio do sistema estava adiantado um dia ou mesmo alguns dias não funcionou para mim. Por isso, adiei a data para um mês e funcionou e meu aplicativo mostrou o prompt de notificações novamente.
Espero que isso ajude a qualquer pessoa, pode ser uma dor de cabeça!
fonte
Concordo com o micmdk. Eu tinha uma configuração do ambiente de desenvolvimento com o Push Notifications e precisava de uma maneira de redefinir meu telefone para parecer uma instalação inicial ... e apenas essas etapas precisas funcionaram para mim ... requerem DUAS reinicializações do dispositivo:
Do APPLE TECH DOC:
Redefinindo o alerta de permissões de notificações por push no iOS Na primeira vez que um aplicativo ativado por push registra notificações por push, o iOS pergunta ao usuário se deseja receber notificações para esse aplicativo. Depois que o usuário responde a esse alerta, ele não é apresentado novamente, a menos que o dispositivo seja restaurado ou o aplicativo tenha sido desinstalado por pelo menos um dia.
Se você deseja simular uma execução inicial do seu aplicativo, pode deixá-lo desinstalado por um dia. Você pode conseguir o último sem realmente esperar um dia seguindo estas etapas:
Exclua seu aplicativo do dispositivo.
Desligue o dispositivo completamente e ligue-o novamente.
Vá para Configurações> Geral> Data e hora e defina a data com antecedência de um dia ou mais.
Desligue o dispositivo completamente novamente e ligue-o novamente.
fonte
Eu me perguntei sobre isso no passado e cheguei à conclusão de que não era realmente um caso de teste válido para o meu código. Não acho que o código do seu aplicativo possa realmente dizer a diferença entre alguém recusar notificações na primeira vez ou depois desativá-lo nas configurações de notificação do iPhone. É verdade que a experiência do usuário é diferente, mas está oculta dentro da chamada para registerForRemoteNotificationTypes.
A chamada unregisterForRemoteNotifications não remove completamente o aplicativo das configurações de notificações - embora remova o conteúdo das configurações desse aplicativo. Portanto, isso ainda não fará com que o diálogo seja apresentado uma segunda vez ao usuário na próxima vez em que o aplicativo for executado (pelo menos não na v3.1.3 com a qual estou testando atualmente). Mas como eu disse acima, você provavelmente não deveria se preocupar com isso.
fonte
A mesma nota técnica mencionada na resposta aceita ( TN2265 - Solucionando problemas de notificações push) foi atualizada com uma solução para iOS 5 e superior.
Em resumo: crie um backup e restaure-o sempre.
fonte
A Nota técnica da Apple também descreveu que você pode restaurar o dispositivo para redefinir a caixa de diálogo Push Notification.
Não diz que você também pode usar a opção "Geral -> Redefinir -> Apagar todo o conteúdo e configurações" no próprio dispositivo (iOS 5.x).
fonte
Além da resposta de ianolito.
Tive o mesmo problema com um aplicativo que baixei um ano atrás e negando a notificação por push inicialmente. Agora, querendo notificações push de volta, essas etapas funcionaram para mim no iOS 7 beta. Não tenho certeza de quais pontos o acionaram exatamente.
Graças a Deus eu não precisei "Apagar todo o conteúdo e configurações". Talvez isso ajude alguém.
fonte
Recentemente, deparei-me com um problema semelhante com o aplicativo react-native. A versão do iPhone OS era 13.1. Desinstalei o aplicativo e tentei instalar o aplicativo e notei que as permissões de localização e notificação não eram solicitadas.
Ao verificar as configurações, pude ver que meu aplicativo estava ativado para localização (da instalação anterior), mas não havia entrada correspondente na notificação. Tentei desinstalar e reiniciar sem definir o horário, pois não funcionou. Btw, eu também tentei baixar o aplicativo Appstore, ainda o mesmo comportamento.
O problema foi resolvido somente após a configuração da hora do dispositivo.
fonte
Após horas de pesquisa e sem sorte com as sugestões acima, isso funcionou como um encanto para 3.x +
fonte