Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

O processo para publicar uma aplicação na Apple Store costuma ser muito mais complexo que Google Play, isso se deve por conta da segurança exigida pela Apple. Veremos aqui todos os passos necessários.

Nesse tutorial quase não iremos trabalhar com o Cronapp, pois estamos considerando que sua a aplicação já está desenvolvida.

De forma resumida, os passos que veremos nesse tutorial são:

  1. Exportar sua aplicação do Cronapp;
  2. Gerar no portal do desenvolvedor um Provisioning Profiles a partir de um Certificado e um Team ID;
  3. Abrir o projeto na IDE Xcode em um computador da Apple e vincular o Provisioning Profiles ao projeto;
  4. Criar e configurar novo app no site App Store Connect e 
  5. Fazer o upload do aplicativo do Xcode para a App Store Connect.

Mostraremos também como testar sua aplicação rodando no simulador do Xcode e em um dispositivo móvel.

Âncora
requisitosTutorial
requisitosTutorial
Pré-requisitos para o tutorial

Antes de começar a seguir os passos do tutorial é preciso ter certeza de que se tem um ambiente minimamente preparado para reproduzir o exemplo. Abaixo estão os requisitos principais.

Requisitos:

  1. Projeto do tipo mobile criado. Caso haja dúvidas de como criar esse tipo de projeto acesse o link ( Criar novo projeto );
  2. Possuir uma ID da Apple. Caso não tenha, crie uma em https://appleid.apple.com/account.
  3. Possuir um computador da Apple com Xcode instalado;
  4. Para publicar a aplicação é necessário possuir uma conta de desenvolvedor. Veja mais detalhes sobre as contas, diferenças e preços em https://developer.apple.com/support/compare-memberships/


Informações
titleObservação

Para esse tutorial usamos o macOS Mojave (versão 10.14.4) e Xcode versão 10.2.

Requisitos para publicação

As aplicações submetidas para distribuição na loja da Apple passam por uma análise e é necessário está ciente sobre alguns requisitos para evitar que seu projeto seja rejeitado. Recomendamos fortemente que você leia as Diretrizes de Revisão da App Store, citamos abaixo alguns pontos:

  1. A aplicação iOS deve passar por testes de falha;
  2. É proibido o uso de APIs privadas;
  3. Seu projeto não pode ser um clone ou idêntico aos aplicativos nativos pré-instalados nos dispositivos móveis da Apple;
  4. É necessário integrar o recurso de compra In-app, mesmo que sua aplicação seja totalmente gratuita;
  5. Câmera e microfone só podem ser usados com permissão do usuário e
  6. Seu aplicativo deve usar apenas arte própria para o design. Caso seja de terceiros, é necessário ter permissão de uso.

Configuração e exportação do Cronapp

Antes de iniciarmos as configurações para exportação, é necessário configurar as permissões de acesso aos recursos do sistema, sem essas configurações, seu aplicativo poderá ser rejeitado durante o processo de avaliação pela Apple.

Permissão de acesso aos recursos

As configurações de acesso aos recursos só é necessário quando o sistema faz uso de algum recurso restrito do dispositivo (Ver lista aqui), caso seu sistema não faça uso desses recursos, avance para o tópico Configurações.

Os dispositivos modernos coletam e armazenam uma grande quantidade de informações confidenciais sobre seus usuários. Muitos aplicativos contam com esse tipo de dados e com o hardware do dispositivo para realizar uma gama de tarefas. Por exemplo, um aplicativo de navegação precisa das coordenadas GPS atuais do usuário para localizá-lo em um mapa.

Os sistemas operacionais da Apple restringem o acesso a dados e recursos protegidos por padrão. Sendo assim, antes que seu aplicativo possa acessar determinados recursos protegidos, como a interface Bluetooth, informações de localização ou as fotos do usuário, o sistema solicita permissão ao usuário em nome do seu aplicativo.

Esta solicitação de acesso à recursos protegidos deve conter uma explicação do motivo pelo qual tais recursos precisam de acesso. Ao ser exibida ao usuário final da aplicação, ele decidirá se deve conceder ou negar a solicitação.

Motivo para acesso aos recursos

Na primeira vez em que seu aplicativo tenta acessar um recurso protegido, o sistema solicita permissão ao usuário. No exemplo a seguir, o aplicativo iOS chamado "Mapas" que necessita de informações relacionadas à localização do usuário exibe um prompt contendo o motivo da utilização do recurso de GPS e solicitando o acesso da aplicação ao local do usuário:

Resultado de imagem para ios prompt gps

Figura 1.1 - Aplicação solicitando acesso ao recurso GPS do dispositivo


Se o usuário conceder a permissão ao aplicativo para acessar o recurso protegido, o sistema lembrará a escolha do usuário e não o solicitará novamente. Se o usuário negar a permissão, a tentativa atual de acesso ao recurso protegido e as tentativas futuras falharão. 

O sistema da Apple gera automaticamente o título do prompt, que inclui o nome do seu aplicativo. Você fornece uma mensagem chamada purpose string ou descrição de uso que será exibida logo abaixo do título padrão da solicitação - no caso do exemplo citado acima, "Sua localização atual será mostrada no mapa e usada para obter itinerários, resultados de busca de locais por perto e tempos estimados de viagem." - para indicar o motivo pelo qual seu aplicativo precisa do acesso. Explicar de forma precisa e concisa ao usuário por que seu aplicativo precisa acessar dados confidenciais, geralmente em uma frase completa, permite que o usuário entenda como seus dados estarão sendo utilizados e aumenta as chances dele conceder acesso ao seu aplicativo.

Informações
titleNota

Se você estiver usando bibliotecas externas ou SDKs, eles podem fazer referência a APIs que exigem uma sequência de objetivos. Este é o caso da dependência padrão dos projetos Mobile do Cronapp chamada cordova-plugin-cronapp. Embora seu aplicativo não faça uso de todos os recursos dessas APIs, ainda é necessário definir a mensagem de purpose string ou descrição de uso para que sua aplicação possa ser aprovada no processo de App Review da Apple. 


Tais mensagens podem ser adicionadas antes da publicação de seu App através da interface do Xcode no arquivo Lista de Propriedades de Informação (Information Property List ou Info.plist):

Figura 1.2 - Adicionando permissão


A mensagem mostrada acima, por exemplo, é uma mensagem associada à chave NSPhotoLibraryUsageDescription que se refere à permissão de acesso a pasta de fotos do usuário.

Configuração de acesso aos recursos no Cronapp

Tais mensagens podem ser adicionadas diretamente pelo Cronapp de forma extremamento simples antes da aplicação ser exportada para o Xcode. Acesse no menu do sistema Dispositivos Móveis > Configurações, clique na aba iOS da janela de configurações para acessar os campos na área iOS Privacy Menssages (Figura 1.3).

Por padrão, o Cronapp já adiciona uma mensagem genérica para todos as chaves.

Figura 1.3 - Cada campo destacado representa um chave para um recurso do sistema.


Adicionar suas próprias mensagens e mantê-las atualizadas é de suma importância para a aprovação de releases de sua aplicação.

E etapa de Revisão de aplicativos da Apple verifica o uso de recursos protegidos e rejeita os aplicativos que contêm código acessando esses recursos sem uma mensagem de purpose string ou descrição de uso. Por exemplo, caso um aplicativo que acessa contatos e não adiciona uma mensagem à chave "Privacidade - Decrição do uso de contatos" pode receber as seguintes informações da etapa de App Review da Apple sobre o requisito de uma chave NSContactsUsageDescription:

Informações
titleMensagem de recusa de uma aplicação por não possuir uma descrição de uso de recurso

ITMS-90683: Missing Purpose String in Info.plist - Your app’s code references one or more APIs that access sensitive user data. The app’s Info.plist file should contain a NSContactsUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data.

Redefinir acesso de autorização

Quando seu aplicativo tenta acessar um recurso protegido após a primeira tentativa, o sistema lembra a opção de permissão do usuário e não solicita novamente. Para solicitar ao usuário novamente, você deve redefinir o acesso a esses recursos no seu dispositivo ou sistema. Para redefinir o acesso de permissão a um recurso protegido em aplicativos iOS clique em Settings > General > Reset > Reset Location & Privacy on your device.

Nota
titleImportante

O uso da opção Reset Location & Privacy redefine as configurações de local e privacidade para todos os serviços no seu dispositivo.

Âncora
listaRecursos
listaRecursos
Lista de Recursos Protegidos

Veja abaixo a lista dos recursos protegidos, suas chaves e descrições:

RecursoChave e descrição

Bluetooth

Privacidade - Descrição do uso periférico de Bluetooth (NSBluetoothPeripheralUsageDescription)

Especifica o motivo do seu aplicativo usar o Bluetooth.

Calendário

Privacidade - Descrição de Uso de Calendários (NSCalendarsUsageDescription)

Especifica o motivo pelo qual seu aplicativo acessa as agendas do usuário.

Lembretes

Privacidade - Descrição do uso de lembretes (NSRemindersUsageDescription)

Especifica o motivo pelo qual seu aplicativo acessa os lembretes do usuário.

Câmera

Privacidade - Descrição do uso da câmera (NSCameraUsageDescription)

Especifica o motivo pelo qual seu aplicativo acessa a câmera do dispositivo.

Microfone

Privacidade - Descrição do uso do microfone (NSMicrophoneUsageDescription)

Especifica o motivo do seu aplicativo acessar qualquer um dos microfones do dispositivo.

Contatos

Privacidade - Descrição do uso de contatos (NSContactsUsageDescription)

Especifica o motivo pelo qual seu aplicativo acessa os contatos do usuário.

Face ID

Privacidade - Descrição do uso do Face ID (NSFaceIDUsageDescription)

Especifica o motivo do seu aplicativo usar o Face ID.

Saúde

Privacidade - Descrição do uso de compartilhamento de saúde (NSHealthShareUsageDescription)

Especifica o motivo pelo qual seu aplicativo lê os dados de integridade do usuário.


Privacidade - Descrição do uso da atualização de saúde (NSHealthUpdateUsageDescription)

Especifica o motivo do seu aplicativo fazer alterações nos dados de saúde do usuário.

Home Kit

Privacidade - Descrição do uso do HomeKit (NSHomeKitUsageDescription)

Especifica o motivo pelo qual seu aplicativo acessa os dados de configuração do HomeKit do usuário.

Localização

Privacidade - Descrição de uso contínuo de Localização (NSLocationAlwaysUsageDescription)

Especifica o motivo do seu aplicativo acessar as informações de localização do usuário o tempo todo.


Privacidade - Descrição de uso de Localização (NSLocationUsageDescription)

Especifica o motivo do seu aplicativo acessar as informações de localização do usuário o tempo todo.


Privacidade - Descrição de Localização quando em uso (NSLocationWhenInUseUsageDescription)

Especifica o motivo pelo qual seu aplicativo acessa as informações de localização do usuário enquanto ele estiver em uso.

Media Player

Privacidade - Descrição do uso da biblioteca de mídia (NSAppleMusicUsageDescription)

Especifica o motivo do seu aplicativo usar a biblioteca de mídia.

Acelerômetro

Privacidade - Descrição do uso de movimento (NSMotionUsageDescription)

Especifica o motivo pelo qual seu aplicativo acessa o acelerômetro do dispositivo.

Fotos

Privacidade - Descrição da utilização das adições à biblioteca de fotos (NSPhotoLibraryAddUsageDescription)

Especifica o motivo pelo qual seu aplicativo obtém acesso somente de gravação à biblioteca de fotos do usuário.


Privacidade - Descrição do uso da biblioteca de fotos (NSPhotoLibraryUsageDescription)

Especifica o motivo pelo qual seu aplicativo acessa a biblioteca de fotos do usuário.

NFC

Privacidade - Descrição do uso do leitor NFC (NFCReaderUsageDescription)

Especifica o motivo pelo qual seu aplicativo usa o leitor NFC do dispositivo.

Âncora
ConfiguracoesCronapp
ConfiguracoesCronapp
Configurações

Com seu projeto mobile aberto no Cronapp, vamos realizar algumas configurações necessárias para exportar e rodar no Xcode.

No menu do sistema, acesse Dispositivos móveis > Configurações e acesse a aba Aplicativo na Janela que abrir. (Figura 1.4)

Figura 1.4 - Configurações da aplicação dos dispositivos móveis


  1. Pacote ID: define o Id da sua aplicação, esse identificador deverá ser único na loja da Apple. Por isso que normalmente usamos o domínio da empresa de forma invertida e o nome da aplicação no final;
    Ex: br.com.nome_da_empresa.nome_do_aplicativo
  2. Nome: nome da aplicação;
  3. Descrição: pequena descrição da aplicação;
  4. Informações do desenvolvedor: campos que definem e-mail, site e nome do autor da aplicação;
  5. Versão: define a versão atual da aplicação;
  6. Tipo de Compilação
    • debug: os dados serão exportados apenas para a versão de testes da aplicação;
    • release: os dados serão exportados para uma nova versão que será lançada na loja;
  7. Ícone*: define o ícone que será usado na aplicação. Recomendamos o uso de uma imagem com resolução 1024 x 1024 px;
  8. Abertura*: define a imagem que é usada na abertura da aplicação; Recomendamos que a imagem tenha uma resolução de 2732 x 2732 px;
  9. URL Back-end: indica a URL do servidor da sua aplicação.

* A Apple exige que sejam inseridas imagens para cada tamanho de tela. Ao adicionar essas imagens nos campos ícones e abertura, elas serão redimensionadas para os tamanhos recomendados automaticamente.


Informações
titleObservação

No campo 9 da Figura 1.4 estamos usando a URL de debug gerado pelo Cronapp. Lembramos que esse endereço é temporário e poderá ser alterado se você parar e executar novamente o servidor da aplicação no Cronapp, Caso o endereço de debug altere, veja aqui como configurar no projeto aberto já no Xcode.

Finalizada as configurações, clique no botão Salvar.

Compilação

Após realizar as configurações na etapa anterior, vamos compilar o projeto. Ou melhor, na prática o que o Cronapp faz é compactar o projeto de modo que possa ser aberto pelo Xcode, no MacOS, pois a Apple só permite compilar as aplicações que rodam em suas plataformas através da sua própria IDE. As aplicações desenvolvidas pelo Cronapp permitem rodar no sistema operacional iOS em sua versão 9 ou posterior (já no Android, a versão mínima é a 4.1).

Acesse Dispositivos móveis > Compilar > IOS e selecione debug ou release e clique em Ok.

A diferença entre os dois modos está na presença da assinatura digital, que deve ser cadastrada previamente na aba iOS, que se encontra em Dispositivos Móveis > Configurações. Caso o Cronapp não encontre a assinatura digital, será gerada sem a mesma, ou seja, será gerado em modo debug. Mas veremos também como adicionar essa assinatura digital posteriormente, no Xcode.


Figura 1.5 -  Gerando a aplicação IOS no Cronapp


Após exibir a mensagem "Sua aplicação foi gerada com Sucesso!", clique em Baixar para iniciar o download e descompacte o arquivo em alguma pasta.

Testar ou publicar ?

Os passos a seguir terão que ser feito obrigatoriamente em um computador da Apple com o Xcode instalado. O Xcode é o ambiente de desenvolvimento integrado (IDE) para criar aplicativos para Mac, iPhone, iPad, Apple Watch e Apple TV.

Verifique se o seu Xcode está atualizado, caso esteja sem atualizações a muito tempo, é provável que você não consiga compilar seu projeto. Para esse tutorial estamos usando a versão 10.2 do Xcode.

Os passos para simular a aplicação no Xcode é bem simples, porém para testar em um dispositivo móvel ou publicar na loja da Apple é um pouco mais trabalhoso, por conta das configurações necessárias no portal da Apple. Mas não se preocupe, mostraremos tudo de forma detalhada!

Simulação no Xcode

  1. Abrindo o projeto no Xcode;
  2. Simulando a aplicação no Xcode.

Testar em dispositivo local

  1. Abrindo o projeto no Xcode;
  2. Portal Developer da Apple;
  3. Vinculando o Provisioning profile ao seu projeto;
  4. Executar em um dispositivo físico

Publicar na Apple Store

  1. Abrindo o projeto no Xcode;
  2. Portal Developer da Apple;
  3. Vinculando o Provisioning profile ao seu projeto;
  4. App Store Connect
  5. Upload do app pelo Xcode
  6. Publicação pela Apple Store Connect
  7. Aplicativo Rejeitado

Âncora
AbrirXcode
AbrirXcode
Abrindo o projeto no Xcode

Abra o Xcode, selecione a opção Open another project... (item 1 da figura 1.6) e selecione o diretório descompactado com o projeto que geramos do Cronapp.

Figura 1.6 -  Abrindo novo projeto no Xcode


O Xcode solicitará uma autorização para abrir o projeto, confirme. (Figura 1.7)

Figura 1.7 -  Confirmação ao abrir projeto baixado da internet


Teremos ainda que fazer uma pequena configuração no Xcode. Como o Cronapp utiliza o Cordova, é necessário que configuremos o Xcode para rodar em modo Legacy.

Para configurar acesse no menu do sistema File > Workspace Settings... e na janela de configurações, altere os campos Build System (1 e 2) para a opção Legacy Build System, como na figura 1.8. 

Figura 1.8 - Rodando em modo Legacy

Âncora
AlterEndServer
AlterEndServer
Alterar endereço do servidor

Ao utilizar o servidor de testes do Cronapp durante a fase de desenvolvimento é comum que este endereço mude depois de algum tempo. Caso isso ocorra não será possível fazer requisições ao servidor, como logar no aplicativo.

Nesse caso você pode obter o novo endereço rodando o projeto no Cronapp e substituindo no arquivo hostApp.js, que encontra-se no caminho informado na área 1 da figura 1.9.

Figura 1.9 - Local com o endereço do servidor

Âncora
simularXcode
simularXcode
Simulando a aplicação no Xcode

Com o projeto aberto, selecione qual o modelo do dispositivo que deseja simular (item 1 da figura 1.10) e rode a aplicação (item 2 da figura 1.10).

Âncora
Figura1.10
Figura1.10

Figura 1.10 -  Iniciando a aplicação no simulador


O simulador irá iniciar o iOS e abrir automaticamente o aplicativo. (Figura 1.11)

Informações
titleObservação

Lembramos que o servidor da aplicação deve está rodando para conseguir logar e acessar a aplicação, caso contrário aparecerá uma mensagem de erro dentro da aplicação do Cronapp.


Figura 1.11 -  Executando a aplicação no simulador

Âncora
PortalDeveloper
PortalDeveloper
Portal developer da Apple

O portal de desenvolvimento da Apple possui vários recursos para o desenvolvimento na plataforma. Usaremos o portal para configurar os IDs, gerar os certificados e profiles, permitindo testes em dispositivos físicos e a publicação na Apple Store.

Constantemente a Apple remodela o layout do portal ou faz pequenas modificações no processo de publicação e testes. Caso isso ocorra, nos avise através da nossa central de ajuda para atualizarmos a nossa documentação: https://www.cronapp.io/pt-br/central-de-ajuda/

Como informado nos itens 2 e 4 dos requisitos para esse tutorial, é necessário possuir um Apple ID e uma conta desenvolvedor individual ou empresarial, tendo essas duas condições, logue no portal do desenvolvedor: https://developer.apple.com/


Figura 2.1 -  Menus do portal do desenvolvedor


Principais serviços do portal:

  • Membership: Informações da conta e os acordos legais;
  • People: Gerencie os membros de sua equipe, convide membros para a equipe ou altere as regras dos membros da equipe;
  • Certificates, IDs & Profiles: Gerencie seus certificados, chaves, identificadores, dispositivos e perfis de aprovisionamento que você usa para acessar os serviços na sua aplicação ou na loja;
  • App Store Connect: Publique e gerencie seu conteúdo na App Store, faça upload de versões beta de sua aplicação para testes com o TestFlight e obtenha relatórios financeiros e analíticos.


As configurações necessárias para teste e publicação serão feitas acessando o menu Certificates, IDs & Profiles.


Figura 2.2 - Categorias do Certificates, Identifiers & Profiles

Certificates

Existem vários tipos de certificados e cada certificado deverá ser usando para um contexto específico. É possível utilizar o mesmo certificado para diversos aplicativos nas plataformas iOS, tvOS e watchOS, já aplicativos macOS necessitam de outro formato. Certificado de desenvolvimento permite executar seu App em um dispositivo cadastrado usando os serviços de aplicativos cadastrados, enquanto certificado de distribuição possibilita testes e o upload da sua aplicação para a loja da Apple através do App Store Connect.

Os certificados permitem que o sistema identifique quem assinou a aplicação e evita que projetos sejam gerados fora da plataforma da Apple. Por isso, para enviar seu aplicativo para a App Store ou distribuí-lo fora dela, é necessário que tenha uma assinatura com um certificado emitido pela Apple. 

Gerar certificados

Para gerar o certificado, é necessário utilizar um computador da Apple para criar uma solicitação de certificado e validar no portal de desenvolvimento da Apple.

Âncora
AcessoChaves
AcessoChaves
No Computador

Figura 2.3 - Abrindo a funcionalidade Assistente de Certificados a partir da aplicação Acesso às Chaves


  1. Abra a aplicação Acesso às Chaves (Keychain Access) e no menu do sistema abra a funcionalidade Acesso às Chaves > Assistente de Certificado > Solicitar um Certificado de uma Autoridade de Certificação... (item 1 da Figura 2.3)
  2. Na janela Assistente de Certificado informe um endereço de e-mail (item 1 da Figura 2.4), um nome para o certificado (2), selecione a opção Salva no disco (3) e clique em Continuar (4);
  3. Aparecerá uma janela para informar o nome do arquivo do tipo Certificate Signing Request (CSR) com extensão .certSigningRequest e selecionar um diretório para salvá-lo. Salve em um local seguro.

Figura 2.4 - Informações para a solicitação de certificado 

Portal de desenvolvimento

Figura 2.5 - Criando novo certificado


  1. Acesse a área de certificados em Certificates, Identifiers & Profiles e clique no botão + (item 1 da Figura 2.5);
  2. Na próxima tela deve ser especificado qual tipo de certificado você necessita, os mais básicos são iOS App Development para desenvolvimentoApp Store and Ad Hoc para produção. Selecione a opção que atenda a sua necessidade e clique em Continue;
  3. Será exibido um resumo dos passos para gerar o arquivo Certificate Signing Request (CSR) que criamos anteriormente, basta selecionar Continue no final da tela;
  4. Agora será necessário enviar o arquivo .certSigningRequest que criamos, clique no botão Choose File..., escolha o arquivo, aguarde o fim do upload e clique em Continue;
  5. Na última página ele informará o nome, tipo e data em que expira o certificado. Clique em Download e salve seu certificado em um local seguro. (Figura 2.6)


Figura 2.6 - Download do certificado gerado

No Computador

Após baixar o certificado em seu Macintosh, dê um clique duplo no arquivo que acabamos de fazer o download para adicioná-lo na lista de certificados do sistema.

Para verificar se o certificado foi cadastrado corretamente, acesse novamente o aplicativo Acesso às Chaves e clique na categoria Meus Certificados para visualizar o certificado cadastrado, como na Figura 2.7.

Figura 2.7 - Lista dos certificados

Keys

As chaves privadas permitem que você acesse e autentique a comunicação com alguns serviços de aplicativos, como APNs, MusicKit, MapKit JS e DeviceCheck. Ao contrário dos certificados, as chaves não expiram e podem ser modificadas para acessar mais serviços após sua criação.

No exemplo que estamos fazendo neste tutorial não é necessário criar chaves, pois não estamos utilizando nenhum dos serviço citados.

Identifiers

Um App ID identifica seu aplicativo em um perfil de Provisionamento. Se trata de uma string dividida em duas partes separadas por um ponto (.): o prefixo representa o Team ID, enquanto que o sufixo representa o ID do pacote (Bundle ID) e é usado para identificar um ou mais aplicativos de uma única equipe de desenvolvimento. (Tabela 1)


App ID Prefix
(Team ID)
App ID Sufix
(Explicit ou Wildcar ID)
App ID
(Prefix + Sufix)
329JDE83HDio.cronapp.*329JDE83HD.io.cronapp.*

Tabela 1 - O App ID são gerados pela união do prefixo Team ID mais o sufixo Explicit ou Wildcar ID


Existem dois tipos de Sufixos :

  • Explicit App ID: Se você planeja incorporar serviços de aplicativos, como o Game Center, compras pelo aplicativo, entre outros ou deseja um perfil de Provisioning exclusivo para um único aplicativo, registre sua aplicação nesse formato. Para criar um ID explícito para o aplicativo, insira uma string exclusiva no campo ID do pacote. Essa string deve corresponder ao ID do pacote do seu aplicativo.
    Ex: item 3 da figura 2.8
  • Wildcard App ID: Esse formato permite que você use um único App ID para corresponder a vários aplicativos. Para criar um ID curinga, insira um asterisco (*) no último dígito no campo ID do pacote, logo após o último ponto.
    Ex: item 4 da figura 2.8

Os serviços de aplicativo são ativados para um ID de aplicativo e servem como uma lista de permissões para um ou mais aplicativos (a depender do sufixo). Você pode ativar serviços de aplicativo ao criar um ID de aplicativo ou pode modificar essas configurações posteriormente. Os serviços Game Center e a Compra no aplicativo são ativados por padrão para o tipo explícito.

Cadastrando do App ID

Para cadastrar o App ID é necessário ter o nome e identificador da aplicação, você pode obter nos campos Display Name e Bundle Identifier na área Identity da aba General no Xcode. (área 3 da Figura 1.10).


Figura 2.8 - Lista dos identificadores das aplicações


Para cadastrar basta seguir os passos:

  1. Acesse App ID a área de Identifiers (1) em Certificates, Identifiers & Profiles e clique no botão + (item 2 da Figura 2.8);
  2. Informe o nome da aplicação no campo App ID Description (não é possível usar algumas caracteres especiais, como @, &, *, ', "); 
  3. Selecione o Team ID no App ID Prefix (o team ID é gerado no momento que criamos uma conta de desenvolvimento na Apple);
  4. Selecione qual o tipo de Sufixo que deseja para a aplicação conforme explicamos acima (Explicit ou Wildcard App ID);
  5. Selecione os serviços que serão usados por sua aplicação;
  6. Clique em Continue.
  7. Na próxima tela será informado um resumo com o que foi preenchido na tela anterior, verifique e clique em Register.

Devices

A aba lateral Devices serve para que você possa cadastrar os dispositivos físicos que serão usados para testar a aplicação em suas versões de desenvolvimento. É possível cadastrar um único dispositivo por vez, informando o UDID do dispositivo e um nome ou registrar múltiplos dispositivos.

Cadastrando Device

Figura 2.9 - Registrando os dispositivos que terão permissão para testar sua aplicação


  1. Acesse All da área de Device em Certificates, Identifiers & Profiles e clique no botão + para adicionar um dispositivo;
  2. Você pode inserir um dispositivo (item 1 da Figura 2.9) ou vários ao mesmo tempo (item 2 da Figura 2.9);
  3. Após inserir os dados (Nome e UDID, veja abaixo como obter), clique em Done para visualizar o relatório dos aparelhos relacionados e
  4. Cique em Register para finalizar.

Obtendo UDID do dispositivo

O UDID é um acrônimo para Unique Device ID (ou identificador único do dispositivo) e se trata de uma combinação alfanumérica única de 40 dígitos específico para os dispositivos com iOS da Apple, seja ele um iPhone, iPad ou iPod touch. O UDID é uma criptografia SHA-1 calculada através da composição do número Serial, IMEI, wifiMac e bluetoothMac do aparelho.

A forma mais simples de obter o UDID é pelo iTunes. Por isso conecte o dispositivo via cabo USB no macOS e o iTunes solicitará acesso ao dispositivo, dê a permissão (Figura 2.10).


Figura 2.10 -  Após conectar o iTunes pedirá permissão de acesso no dispositivo


Com o iTunes aberto, selecione o botão destacado na figura 2.11 para exibir as informações do dispositivo.

Figura 2.11 -  Acessando a área de informações do aparelho


No menu lateral, seleciona a opção Resumo (item 1 da figura 2.12) e clique no campo abaixo do Número de telefone (área 2, destacada na figura 2.12) para exibir o UDID. A cada clique nesse campo é exibido uma nova informação, variando entre o número de série, UDID, ECID e o Identificador do modelo. 

Copie o UDID, pois usaremos para cadastrar o dispositivo na lista de permissões de acesso para testar a aplicação. 

Figura 2.12 -  Obtendo UDID pelo iTunes

Provisioning Profiles

Os perfis de provisionamento permitem que você instale aplicativos em seus dispositivos iOS e são gerados a partir do certificados de assinatura, identificadores de dispositivo (no caso de Provisioning Profiles - Development) e um ID do aplicativo.

Os Provisioning Profiles (Development) são usados para criar e instalar versões de seu aplicativo durante o ciclo de desenvolvimento, enquanto os Provisioning Profiles (Distribution) são usados para enviar seus aplicativos para a App Store e distribuí-los para os testadores beta.

Gerando o Provisioning Profiles

Figura 2.13 -  Informações de um Provisioning Profiles selecionado em um lista


  1. Acesse Development ou Distribution  a área de Provisioning Profiles (item 1 da Figura 2.13) em Certificates, Identifiers & Profiles e clique no botão + (2);
  2. Na próxima tela informe qual o tipo de perfil que você deseja gerar, selecione iOS App Development para perfil de Desenvolvimento ou App Store para gerar perfil de Distribuição e clique em Continue;
  3. Agora devemos selecionar o App ID, selecione a aplicação na caixa de seleção e clique em Continue;
  4. Selecione o certificado gerado para esse provisioning e clique em Continue;
  5. A seleção dos dispositivos cadastrados em Device só aparecerá ao escolher o perfil de provisionamento do tipo desenvolvedor, nesse caso, selecione os dispositivos que terão acesso para testar sua aplicação localmente e clique em Continue em seguida;
  6. Informe um nome para o perfil e clique novamente em Continue;
  7. Na última tela (Figura 2.14) será exibida as informações selecionadas, a data que esse perfil irá expirar e um botão para baixar o arquivo gerado, clique em download para baixar.


Informações
titleDica

Caso tenha gerado dois certificados de mesmo tipo, no momento de selecionar o certificado você os verá com o mesmo nome, identifique-os pela data em que irão expirar.


Figura 2.14 -  Provisioning profile gerado

Âncora
VincularProvisioningProfile
VincularProvisioningProfile
Vinculando o Provisioning profile ao seu projeto

Para adicionar o perfil de provisionamento em seu projeto, abra o Xcode e na aba General existem 2 opções: Signing (Debug) para projetos em desenvolvimento e Signing (Release) para projetos já em produção. Selecione a caixa de seleção Provisioning profile de uma das duas áreas e escolha a opção Import profile... (item 1 ou 2 da figura 2.15), na janela de seleção importe o arquivo que baixamos no passo anterior, com a extensão *.mobileprovision.


Figura 2.15 -  importando o Provisioning profile

Âncora
ExecutarXcode
ExecutarXcode
Execute em um dispositivo físico

Como informamos anteriormente, para executar sua aplicação em um dispositivo físico pelo Xcode é necessário o cadastro do UDID do dispositivo para gerar o Provisioning profile de desenvolvedor.

Informações
titleObservação

Esse passo é para teste local. Para permitir que outras pessoas testem a versão beta da sua aplicação, é necessário gerar o Provisioning profile de produção e utilizar o TestFlight, na App Store Connect (passo posterior).


Após vincular o Provisioning profile de testes no Xcode (tópico anterior), siga os passos:

  1. Conecte o dispositivo (iPhone ou iPad) via cabo USB no computador;
  2. uma solicitação de autorização aparecerá no dispositivo, aceite-a;
  3. selecione na lista de dispositivo o nome do dispositivo conectado (item 1 da Figura 2;16) e
  4. rode a aplicação (item 2 da Figura 2.16).

Figura 2.16 - Seleção de dispositivo conectado ao computador


O Xcode irá compilar o projeto, enviar para o dispositivo, instalar e executar automaticamente.

Âncora
ASConnect
ASConnect
App Store Connect

App Store Connect é o local de controle de suas aplicações na App Store, como cadastrar e publicar sua aplicação, definir o controle de países, cadastrar preços, observar diversos relatórios, dentre outras funcionalidades.

Figura 3.1 -  Tela inicial do Apple Store Connect


Acesse o site App Store Connect e logue com a mesma conta do portal developer para acessar a tela da figura 3.1, clique no ícone Meus apps para ser direcionado a tela que exibe os aplicativos criados com os seus status.

Criar um app

Para adicionar um novo aplicativo, clique no "+" e selecione a opção Novo app (item 1 da figura 3.2).


Figura 3.2 -  Lista dos aplicativo


Informações
titleDica

Antes de começarmos a preencher os campos, talvez você queira saber quais campos são obrigatórios, permitem localização por região ou idioma e podem ser alterados sem a necessidade de atualizar a versão do seu aplicativo. Mais detalhes em Required, localizable, and editable properties.


Ao abrir o modal preencha as informações básicas (figura 3.3). Informações sobre alguns campos:

  • SKU (Stock keeping unit): é um número que identifica unicamente este app em relação aos seus outros, apenas para seu controle interno. O SKU pode conter letras, números, hifens, pontos e sublinhados, porém não pode iniciar com um hífen, ponto ou sublinhado.
  • Acesso de usuários: Você pode limitar quais usuários podem ver seu aplicativo no App Store Connect. Se a opção Acesso total for selecionada, todos os usuários terão acesso ao app. Não é possível limitar o acesso a apps de usuários com função Administrador, Financeiro ou Relatórios.

Em Seguida clique em Criar.

Figura 3.3 -  Dados iniciais do novo app


Após isso você será direcionado para a tela de configurações do novo app, caso não seja, basta clicar no ícone em branco do novo app criado na lista de aplicativo.

Configurações do novo app

Na área de configurações do aplicativo, você verá quatro abas (área 1 da figura 3.4) contendo algumas subabas (área 2 da figura 3.4):

Figura 3.3 -  Abas e subabas das configurações do aplicativo


  • App Store: Nessa aba é possível adicionar as informações que não foram inseridas na criação do app, definir preços e disponibilidade por país, além de preencher as informações exigidas pela Apple para subir a aplicação (detalharemos abaixo).
  • Recursos: Permite inserir informações de recursos do aplicativo, como definir compras dentro do aparelho, promoções, informar criptografia usada e adicionar códigos promocionais.
  • TestFlight: O testFlight é um serviço on-line para instalação e teste de aplicativos. Através dele é possível adiciona pessoas ou grupos que irão testar a sua aplicação na versão beta, além de exibir informações sobre os testes realizados.
  • Atividade: Exibe o histórico das versões e compilações do aplicativo, além das avaliações e opiniões dos usuários.


Informações
titleDica

As configurações do TestFlight não fazem parte do escopo desse tutorial, porém recomendamos que utilize, pois diminui as chances do seu aplicativo ser rejeitado ao ser enviado para a loja.

Aba App Store

Para projetos simples, basta realizar as configurações da aba App Store para publicar a aplicação. Muitos dos campos preenchidos aqui serão exibidos diretamente nas página do seu aplicativo na App Store, para entender onde será exibido cada campo, veja em Making the Most of Your Product Page.

Informações do app

Ao acessarmos essa subaba veremos que a maioria dos campos já estarão preenchidos, pois informamos no momento em que cadastramos nossa aplicação. Informe os campos que ainda estão em branco, como categoria do projeto e o subtítulo. (Figura 3.3)

Preços e disponibilidade

Nessa subaba você deve informar o preço do seu aplicativo, e mesmo que seja gratuito é necessário informar USD 0. Caso queira restringir a disponibilidade para alguma região, informe na área Disponibilidade. (Figura 3.4)

Figura 3.4 -  Definição de preços e disponibilidade por região

APP para iOS

Se você acabou de criar um projeto, você verá na última subaba o termo 1.0 Preparar para envio com um círculo amarelo na frente (item 1 da figura 3.5). O número na frente se refere a versão da aplicação e o termo e círculo colorido variam de acordo ao status do seu projeto. Veja abaixo o significado de cada cor.

  • Vermelho, indica que é necessário realizar alguma ação antes de estar disponível na loja;
  • Amarelo, significa que algum processo está em andamento por você ou pela Apple e
  • Verde, indica que a aplicação já está pronto para a venda.

Para mais detalhes sobre todos os status, acesse a documentação oficial App statuses.

Figura 3.5 -  Status da aplicação para o envio e mais alguns campos para preenchimento


Nessa subaba teremos vários campos de preenchimento obrigatório, destacaremos alguns deles:

  • Pré-visualizações e capturas de tela do app: é necessário inserir imagens do aplicativo para ser exibido na loja. A Apple exige que sejam adicionadas imagens capturadas tanto dos Iphones de 5.5" e 6.5" quanto dos IPads de 2ª e 3ª geração. Você pode obter essa imagens a partir do simulador do Xcode, pressionando os botões "command + S".

 

Figura 3.6 -  Obtendo o screenshot direto do simulador do Xcode


  • App para iMessage e Apple Watch: Caso sua aplicação tenha suporte para essas plataformas, também será necessário inserir os screenshots.
  • Ícone para App Store: Não é necessário inserir o ícone manualmente, como estamos usando uma versão recente do Xcode o ícone será automaticamente inserido quando fizermos o upload do projeto.
  • Classificação: Clique no link Editar e preencha o formulário para determinar a idade mínima recomendada da sua aplicação.
  • Informações para a equipe de revisão dos apps: Sua aplicação será revisada por funcionários da Apple, caso necessite de login, informe um usuário e senha. Além disso, inclua informações que podem ser necessárias para testar seu app, como ajustes específicos no campo Notas e informações para que eles entrem em contato.
  • Âncora
    LiberacaoApp
    LiberacaoApp
    Liberação da versão
    : Escolha quando deseja que seu app seja liberado na loja: manualmente, automaticamente ou em uma data específica.


Após completar o preenchimento dos campos, clique no botão Salvar no começo da página.

Âncora
UploadPeloXcode
UploadPeloXcode
Upload do app pelo Xcode

Após cadastrar todos os dados no site App Store Connect, vamos voltar ao Xcode para subir a aplicação. Selecione a opção Generic iOS Device na lista de dispositivos (item 1 da figura 4.1) para habilitar a opção do menu de sistema Product > Archive (2).

Figura 4.1 -  Só após configurar o device para genérico que a opção Archive fica habilitada


Após clicar em Archive, a janela do Architive Organizer abrirá para você selecione qual a aplicação criada no App Store Connect será feito o upload. (Figura 4.2)

Figura 4.2 -  Validação e distribuição da aplicação


Selecione a opção Validate App (item 1 da figura 4.2) e algumas telas aparecerão para que você preencha algumas informações:

  1. Permitir que seja gerado relatórios sobre sua aplicação no Xcode durante o processo de validação.
  2. Informe novamente o certificado de distribuição e provisioning profiles gerados para esse app.
  3. Na próxima janela será exibido um pequeno relatório sobre os dados do seu projeto, confirme clicando em Validate para que seja feita a validação automática. Isso pode levar alguns minutos.

Se tudo ocorreu bem, uma mensagem de sucesso aparecerá, clique em Done para voltar a janela da Figura 4.2. Caso seja exibido alguma mensagem de erro, verifique o problema, resolva e valide novamente para seguir para o próximo passo.

Clique agora em Distribute App (item 2 da figura 4.2) e outras janelas aparecerão:

  1. Informe o método de distribuição, no nosso caso será o iOS App Store.
  2. Na próxima janela será perguntado se deseja fazer o envio direto para a App Store ou exportar, selecione a opção Upload.
  3. Novamente será perguntado sobre geração de relatórios de sua aplicação no Xcode, porém agora para o processo de upload.
  4. Informe o certificado de distribuição e o provisioning profiles gerados para esse app e
  5. Por fim, um pequeno relatório sobre os dados do seu projeto aparecerá, confirme clicando em Upload e aguarde por alguns minutos.

Após a mensagem que o processo foi finalizado com sucesso, clique em Done.

Âncora
PublicacaoASC
PublicacaoASC
Publicação pela Apple Store Connect

Após o upload do projeto no passo acima, aguarde alguns minutos e logue no Apple Store Connect, se tudo ocorreu bem você verá que agora o app que criamos possui um ícone (item 1 da figura 5.1).

Clique no simbolo + (item 2 da figura 5.1) na área de compilação e selecione a versão que acabamos de subir e em seguida clique no botão Enviar para revisão (item 3 da figura 5.1).

Figura 5.1 - Selecionando a compilação do projeto


Na próxima tela será perguntado se seu projeto possui criptografia, possui direitos autorais de terceiros e se possui publicidade; caso alguma dessas perguntas seja positiva a tela irá expandir para você detalhar melhor esses pontos. Informe tudo corretamente e ao final clique em Enviar.

Figura 5.2 - Enviando para revisão


Informações
titleDica

Durante o desenvolvimento desse tutorial, ao clicamos no botão Enviar a tela atualizava e não passava dessa etapa. Achamos que era algum problema com algum dos itens perguntados, mas bastou deslogar e logar novamente que o problema foi resolvido.

Um pequeno probleminha no sistema. (sorriso)


Se os testadores da Apple não encontrarem nenhum problema na sua aplicação, seu app ficará com o status de Pronto para venda e ficará disponível na loja da Apple automaticamente caso você tenha selecionado a opção "Liberar automaticamente esta versão" na área de Liberação da versão nas configurações. 

O processo de testes leva em média de 1 a 2 dias. 

Âncora
AppRejeitado
AppRejeitado
Aplicativo Rejeitado

Os testes nessa etapa costumam ser bastante rigorosos e é comum que as aplicações sejam rejeitadas por pequenos problemas. Caso isso ocorra, uma notificação irá aparecer na App Store Connect, Acesse a aba Atividades (item 1 da figura 6;1) e depois Versões na App Store (2) para visualizar todos os status da última versão, por fim clique em Central de resoluções (3) para ler o problemas relatado pelo testador da Apple. (Figura 6.1)


Figura 6.1 - Status de Aplicativo rejeitado nos testes


Informações
titleObservação

No exemplo da imagem, a aplicação foi rejeitada pois usamos um endereço temporário do servidor, no momento que o testador abriu a aplicação, o servidor não estava em execução e não foi possível logar com o login e senha que informamos.


Veja todos os itens relatados na Central de resoluções, corrija todos os problemas e volte a fazer o upload da nova versão. Lembre-se de atualizar o valor da nova versão nos campos Version e Build (item 1 da Figura 6.2). 

Figura 6.2 - Nova versão do Aplicativo



Painel
titleNessa página

Índice
maxLevel2