Depois de criado, o token do dispositivo de notificação por push muda?
Exemplo quando o aplicativo é atualizado? ou em qualquer outro caso pode mudar ??
Depois de criado, o token do dispositivo de notificação por push muda?
Exemplo quando o aplicativo é atualizado? ou em qualquer outro caso pode mudar ??
Respostas:
De [Documentação da Apple ApplePushService] 2
fonte
A documentação oficial da Apple não é clara neste ponto. O que observei é o seguinte: o token é invariável para um determinado dispositivo, aplicativo e domínio (produção vs. sandbox). Acredito que isso deve permanecer verdadeiro para que o sistema funcione de forma confiável. Considere a situação em que uma atualização de aplicativo aciona um novo token APN; se eu estivesse usando o melhor novo aplicativo semelhante ao Twitter, com notificações habilitadas, o que aconteceria quando eu atualizasse meu aplicativo do iTunes? Devo ter a expectativa de que continuarão a receber notificações mesmo que não tenha executado os aplicativos desde que "sincronizo" a atualização com meu dispositivo? O ato de alterar o aplicativo não pode afetar o sistema APN, pois o sistema operacional pode receber notificações em seu nome, mesmo que você não tenha executado o aplicativo atualizado.
Para ser claro, a Apple afirma que "um aplicativo deve se registrar [nos servidores APN] toda vez que for iniciado e fornecer ao seu provedor o token atual". Eu concordo de todo o coração; isso protegerá seu aplicativo de suposições erradas ou situações incomuns.
Uma das respostas para Os tokens de notificação por push são exclusivos em todos os aplicativos para um único dispositivo? indica que os tokens do dispositivo são exclusivos por "instalação do sistema operacional"; e que a restauração do backup em um dispositivo manteria o token, mas limpar um dispositivo fará com que ele receba um novo token. Isso seria inteiramente consistente com as intenções da Apple de operação contínua e privacidade: limpar um dispositivo é severo o suficiente para justificar uma nova associação, mas um usuário que restaura uma imagem após uma atualização do sistema operacional iria querer preservar suas notificações existentes. Se eu me lembro da atualização recente do iOS5 no meu iPad, restaurei o backup mais recente após a atualização, então isso teria mantido a consistência do meu token de notificação. [Editar: restaurando um backup para um diferente o dispositivo NÃO duplicará o token.]
advertência: não tenho conhecimento definitivo sobre o assunto, apenas alguma experiência razoável trabalhando com APN (como desenvolvedor terceirizado). Como sempre, é melhor verificar suas suposições.
Atualização (junho de 2012):
Recentemente, tive a chance de> falar com engenheiros da Apple e fazer alguns testes do mundo real, e queria apresentar os resultados:
Para ser completo, quando falo sobre o retorno de um token APN, estou assumindo o contexto de um único identificador / aplicativo de pacote.
Primeiro, os engenheiros da Apple disseram que não deveria ser possível que dois dispositivos retornassem o mesmo APN. Apesar dos comentários abaixo, não consegui identificar uma circunstância em que isso falhe.
Em segundo lugar, aqui está a sequência e os resultados do teste de atualização:
Comece com iOS4 instalado no iPhone4; dispositivo de backup no iTunes
Atualizar para iOS5
De um teste anterior, eu sei que o token APN agora é diferente
Restaure o backup para o dispositivo
O token APN agora é o mesmo da etapa 1.
Redefinir iOS (dispositivo limpo)
As alterações de token APN
Faça backup de um telefone diferente para o iTunes e restaure esse backup para testar o dispositivo; basicamente, estou restaurando o backup "errado", como se estivesse trocando de telefone.
O token APN muda novamente; além disso, é distinto e não corresponde aos tokens nem ao token original nem ao token "clonado".
Restaure o backup "correto" para o dispositivo.
O token APN agora é igual à etapa 1.
Por último, atualizei o telefone para iOS6 (beta2), restaurei meu backup e testei novamente. Conforme esperado, o token continuou a corresponder ao token na etapa 1.
Neste ponto, estou bastante confiante de que os tokens APN não podem ser duplicados entre dispositivos diferentes; talvez isso possa ter acontecido como um bug em versões anteriores do iOS, mas estou confiante de que o iOS5 (e presumivelmente o iOS6) está lidando com tokens APN corretamente.
Atualização (agosto de 2012)
Acabei de perceber que não tinha adicionado isto: os tokens de dispositivo serão alterados. Um dos desenvolvedores da Apple compartilhou comigo que os tokens realmente expiram (depois de 2 anos, eu acho). Para muitos propósitos, isso é longo o suficiente para ser considerado invariável.
[Não estou preocupado se tiver que atualizar meus scripts de teste com novos tokens a cada dois anos, especialmente porque mudo de telefone todos os anos.]
fonte
Acabei de testá-lo com iOS9 e alterações de token de push APN se eu reinstalar um aplicativo.
fonte
SIM , os tokens do dispositivo podem mudar.
Sempre que seu aplicativo recebe um token, ele deve armazená-lo. Então, sempre que um novo token é recebido (o que vai acontecer, eventualmente), comparar o novo token para o token armazenado e, se eles são diferentes:
nil
)Na prática, a última etapa provavelmente não será trivial. Por exemplo, se você tiver um serviço que está enviando alertas meteorológicos para um token de dispositivo com base no código postal que o dispositivo assinou, você precisa passar o
old_token
e onew_token
para esse serviço para que ele possa atualizar a entrega.Ergo, em geral, 100% das APIs que aceitam um "token de dispositivo" também devem ter algum tipo de
UPDATE
facilidade para esse token. Para não construir para isso é a compilação para notificações mis-entregues e não entregues.fonte
O token do dispositivo muda do iOS 8 e posterior
Consulte o texto abaixo no site da Apple. Registro, programação e tratamento de notificações do usuário
fonte
Acho que vale a pena mencionar, já que ninguém fez isso, que o token muda após você ter chamado
unregisterForRemoteNotifications
. Quando você chamar daregisterForRemoteNotifications
próxima vez, o token será diferente. Não consegui encontrar nenhuma confirmação disso nos documentos da Apple, mas eu mesmo testemunhei esse tipo de comportamento. Por favor, mantenha isso em mentefonte
Isso não deve mudar, a menos que seu aplicativo seja restaurado em um novo dispositivo (nesse ponto, ele não será solicitado a aceitar notificações push novamente, e simplesmente enviará a chamada registrada e você deverá aceitar o novo token).
Mas a Apple não garante que isso nunca mude (portanto, a documentação nunca menciona isso). É melhor programar para o pior e presumir que um dia pode mudar. Além disso, enviar um token para o seu servidor regularmente permite que você remova tokens que não foram registrados por um tempo e provavelmente desinstalaram seu aplicativo ou perderam o interesse há algum tempo (e a documentação especifica isso como o comportamento desejado!).
fonte
De - Apple Docs
Além disso:
fonte
Os links rapidamente se tornam obsoletos com a apple! então estou citando o que parece estar bastante claro agora:
Deste guia
fonte
Como referência ao material de notificação push da Apple
O token do dispositivo é a chave para enviar notificações push para o seu aplicativo em um dispositivo específico. Os tokens do dispositivo podem mudar, portanto, seu aplicativo precisa se registrar novamente sempre que for iniciado e passar o token recebido de volta ao servidor. Se você não conseguir atualizar o token do dispositivo, as notificações remotas podem não chegar ao dispositivo do usuário. Os tokens do dispositivo sempre mudam quando o usuário restaura os dados de backup em um novo dispositivo ou computador ou reinstala o sistema operacional. Ao migrar dados para um novo dispositivo ou computador, o usuário deve iniciar seu aplicativo uma vez antes que notificações remotas possam ser entregues a esse dispositivo.
Nunca armazene em cache um token de dispositivo; sempre obtenha o token do sistema sempre que precisar. Se seu aplicativo se registrou anteriormente para notificações remotas, chamar o método registerForRemoteNotifications novamente não incorre em nenhuma sobrecarga adicional e o iOS retorna o token de dispositivo existente para seu representante de aplicativo imediatamente. Além disso, o iOS chama seu método delegado sempre que o token do dispositivo muda, não apenas em resposta ao registro ou novo registro do seu aplicativo.
fonte
De acordo com este link, o token do dispositivo
fonte
Sim , pode mudar. Idealmente, sempre que recebermos um token por meio do método de retorno de chamada
O aplicativo deve registrar / atualizar o token no servidor remoto. Isso garantirá que o token no APNS e seu servidor sejam mantidos em sincronia.
De acordo com a documentação da Apple ,
fonte
O token do dispositivo retransmite na instalação do aplicativo.
Isso significa que se você reinstalar o aplicativo, ele mudará ; não importa se você fizer isso de um backup, uma atualização do iOS, etc.
A maneira certa de usá-lo, para evitar qualquer problema, é pegar o que está indicado no a
NSPAppDelegate
cada lançamento do aplicativo, no métododidRegisterForRemoteNotificationsWithDeviceToken
fonte