Estou tentando muito criar um aplicativo iOS simples e simples que possa receber notificações por push. Minha única razão para fazer isso é estabelecer um procedimento para outros membros da equipe usarem e não conseguirem encontrar uma versão de trabalho atualizada dessas instruções em outras partes da Web. Nossa loja é relativamente nova para desenvolvedores iOS, eu pessoalmente sou completamente inexperiente com desenvolvedores iOS e Xcode. Eu tropecei em dezenas de tutoriais, artigos e publicações de problemas da Apple e de outros lugares e sinto que posso estar quase lá ...
Aqui é onde eu tenho que ir (note que estou usando o Xcode 4.3 e tentando inicialmente implantar apenas no iOS 5.1, e concluo que algumas coisas podem ter mudado recentemente em relação às versões anteriores do Xcode, mas, novamente, sou novo em todos isso - e considerando-o completamente confuso e complicado):
1) Eu tenho um perfil de provisionamento no meu iPhone que possui o Push ativado
2) No meu projeto Xcode de teste, selecionei esse perfil de provisionamento como a identidade de assinatura (em Configurações de compilação> Assinatura de código)
3) Tenho meu identificador de pacote configurável em Resumo e Informações> Propriedades personalizadas de destino do iOS definidas corretamente * (acho?)
4) Tenho registerForRemoteNotificationTypes sendo chamado no didFinishLaunchingWithOptions do meu delegado
5) Eu tenho didRegisterForRemoteNotificationsWithDeviceToken e didFailToRegisterForRemoteNotificationsWithError no meu delegado, configurado para registrar o token ou erro do dispositivo, respectivamente
6) Eu tenho Habilitar Autorizações verificadas em Resumo.
7) Logo abaixo do arquivo de direitos selecionado, é Tinker6 (o nome do meu projeto de teste), que foi gerado automaticamente quando eu marquei Habilitar direitos.
8) No arquivo Tinker6.entitlements, obtive o seguinte (que reuni está correto com base em várias postagens diferentes em toda a web, mas que não consigo encontrar nada definitivo da própria Apple):
Atualizada
9) Além disso, tentei a coisa toda sem um arquivo de direitos e obtive essencialmente o mesmo resultado.
10) O conteúdo do meu arquivo mobileprovision inclui direitos corretamente (eu embaralhei o número e o domínio, mas estruturalmente o mesmo):
<key>application-identifier</key>
<string>12355456A7.com.whatever.tinker</string>
<key>aps-environment</key>
<string>development</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>12355456A7.*</string>
</array>
/ fim de atualização
Quando tento executar isso no meu dispositivo, recebo o seguinte erro na saída do Xcode:
2012-06-11 12:45:23.762 Tinker6[13332:707] Failed to get token, error:
Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment'
entitlement string found for application" UserInfo=0x24a3b0
{NSLocalizedDescription=no valid 'aps-environment' entitlement string
found for application}
Eu tentei definir get-task-allow como NO, aps-environment para produção, todas as quatro combinações possíveis, a mesma coisa.
Como posso superar isso? Onde está a documentação definitiva sobre isso?
- mais informações a seguir -
* Quanto ao ID do pacote, ainda não estou claro como isso deve ser definido em relação aos IDs do aplicativo e do perfil no perfil de provisionamento. No portal de aprovisionamento em IDs de aplicativos, eu tenho isso (novamente, embaralhamos o número e o domínio):
E o ID do pacote de dois locais está definido, tenho o seguinte:
Não tenho certeza de que elas estejam corretas ou se um ou ambos devem ser definidos como 12355456A7.com.whatever.tinker, embora eu tenha tentado aqueles no início do processo sem sucesso ...
Note que percebo que existem muitas postagens com títulos semelhantes, mas todas parecem desatualizadas com base nos nomes dos arquivos e outros dados fornecidos, e o fato de que nenhuma das soluções parece ser útil. Espero que o maior nível de detalhe que forneça justifique uma resposta de qualidade. Provavelmente atribuirei uma recompensa o mais rápido possível e, se você der uma resposta de alta qualidade que leve a uma solução, concederei a recompensa e promoverei sua resposta via twitter e meu blog. Especialmente se você postar de forma cruzada um artigo realmente bom "aqui estão as 500 etapas exatas que você precisa para que um aplicativo de notificação por push simples funcione, incluindo aprovisionamento e tudo o mais" no seu blog ou seja o que for.