Publicar aplicativos Xamarin.iOS na App Store

Para publicar um aplicativo na App Store, primeiro, o desenvolvedor precisa enviá-lo – com capturas de tela, uma descrição, ícones e outras informações – para a análise da Apple. Após aprovar o aplicativo, a Apple o coloca na App Store e os usuários poderão comprá-lo e instalá-lo diretamente em seus dispositivos iOS.

Este guia descreve as etapas a serem seguidas para preparar um aplicativo para a App Store e enviá-lo à Apple para análise. Em especial, ele descreve como:

  • Seguir as Diretrizes de Análise da App Store
  • Configuração de uma ID e os direitos do aplicativo
  • Fornecer um ícone da App Store e ícones do aplicativo
  • Configurar um perfil de provisionamento da App Store
  • Atualização da configuração de build da Versão
  • Configurar um aplicativo no iTunes Connect
  • Criar um aplicativo e enviá-lo para a Apple

Importante

A Apple indicou que, a partir de março de 2019, todos os aplicativos e atualizações enviados à App Store deverão ter sido criados com o SDK do iOS 12.1 ou posterior, incluído no Xcode 10.1 ou posterior. Aplicativos também devem dar suporte aos tamanhos de tela do iPhone XS e de 12,9 pol. do iPad Pro.

Diretrizes da App Store

Antes de enviar um aplicativo para publicação na App Store, verifique se ele atende aos padrões definidos pelas Diretrizes de Análise da App Store da Apple. Quando você envia um aplicativo para a App Store, a Apple o analisa para se certificar de que ele atende a esses requisitos. Em caso negativo, a Apple o rejeitará – e você precisará resolver os problemas citados e enviá-lo novamente. Portanto, é uma boa ideia conhecer as diretrizes o quanto antes no processo de desenvolvimento.

Algumas coisas a observar ao enviar um aplicativo:

  1. Verificar se a descrição do aplicativo corresponde à sua funcionalidade.
  2. Testar para ver se o aplicativo não falha em uso normal. Isso inclui o uso em cada dispositivo iOS compatível.

Além disso, verificar os recursos relacionados com a App Store fornecidos pela Apple.

Configurar uma ID e os direitos do aplicativo

Todos os aplicativos iOS têm uma ID exclusiva, que tem um conjunto de serviços de aplicativo associado chamado direitos. Os direitos permitem que os aplicativos executem várias ações, como receber notificações por push, acessar recursos do iOS como o HealthKit, e muito mais.

Para criar uma ID do aplicativo e selecionar os direitos necessários, acesse o Apple Developer Portal e siga estas etapas:

  1. Faça login no Apple Developer Portal. Se ainda não tiver um ID Apple, crie primeiro um ID Apple.
  2. Vá para a seção Certificados, IDs e Perfis e, em seguida, para a seção Identificadores.
  3. Clique no + botão ao lado do título Identificadores na parte superior da página.
  4. Selecione IDs de aplicativo e clique em Continuar.
  5. Selecione Aplicativo e clique em Continuar.
  6. Insira uma Descrição e uma ID de pacote para o novo aplicativo e selecione os Recursos que serão exigidos pelo seu aplicativo Xamarin.iOS. Os Serviços de Aplicativos serão descritos mais adiante no guia Trabalhar com funcionalidades no Xamarin.iOS. Quando terminar de fazer suas seleções, clique em Continuar.
  7. Clique no botão Registrar para concluir o processo de criação da nova ID do aplicativo.

Além de selecionar e configurar os serviços de aplicativo necessários ao definir a ID do aplicativo, os direitos também devem ser configurados no projeto Xamarin.iOS editando os arquivos Info.plist e Entitlements.plist. Para saber mais, confira o guia Trabalhar com direitos no Xamarin.iOS, que descreve como criar um arquivo Entitlements.plist e o significado de várias configurações de direitos que ele contém.

Incluir um ícone da App Store

Quando você envia um aplicativo para a Apple, verifique se ele inclui um catálogo de ativos que contém um ícone da App Store. Para saber como fazer isso, confira o guia Ícones da App Store no Xamarin.iOS.

Configurar ícones e telas de inicialização dos aplicativos

Para a Apple disponibilizar um aplicativo iOS na App Store, ele precisa ter ícones e telas de inicialização apropriados para todos os dispositivos iOS nos quais ele pode ser executado. Para saber mais sobre a configuração de ícones e telas de inicialização de aplicativos, leia os seguintes guias:

Criar e instalar um perfil de provisionamento da App Store

O iOS usa perfis de provisionamento para controlar como a compilação de um determinado aplicativo pode ser implantada. Esses são arquivos que contêm informações sobre o certificado usado para assinar um aplicativo, a ID do aplicativo e informações sobre onde o aplicativo pode ser instalado. Para desenvolvimento e distribuição ad hoc, o perfil de provisionamento também inclui a lista de dispositivos permitidos nos quais você pode implantar o aplicativo. No entanto, para a distribuição da App Store, somente informações de certificado e ID do aplicativo são incluídas, pois o único mecanismo de distribuição pública é a App Store.

Para criar e instalar um perfil de provisionamento da App Store, siga estas etapas:

  1. Faça login no Apple Developer Portal.
  2. Vá para a seção Certificados, IDs e Perfis e, em seguida, para a seção Perfis.
  3. Clique no + botão, selecione iOS App Development e App Store e clique em Continuar.
  4. Selecione a ID do aplicativo do seu aplicativo na lista e clique em Continue (Continuar).
  5. Selecione um certificado de autenticação e clique em Continue (Continuar).
  6. Selecione os dispositivos a serem incluídos neste perfil e clique em Continuar.
  7. Insira um Nome do perfil de provisionamento e clique em Gerar para gerar o perfil.
  8. Use as ferramentas do Apple Account Management do Xamarin para baixar o perfil de provisionamento recém-criado para o seu Mac. Se você estiver usando um Mac, também será possível baixar o perfil de provisionamento diretamente do Apple Developer Portal e clicar nele duas vezes para instalar.

Para obter instruções detalhadas, confira Criar um perfil de distribuição e Selecionar um perfil de distribuição em um projeto Xamarin.iOS.

Atualizar a configuração de build da Versão

Os projetos novos do Xamarin.iOS configuram automaticamente as configurações de buildDepurar e Versão. Para configurar corretamente a compilação Versão, siga estas etapas:

  1. No Solution Pad, abra o arquivo Info.plist localizado dentro do projeto iOS.

  2. Verifique se você está no modo de exibição Aplicativo . Isso pode ser definido clicando na opção na barra de navegação inferior.

  3. Selecione Provisionamento manual como a opção Assinatura. Salve e feche o arquivo.

  4. Clique com o botão direito do mouse no Nome do projeto no Painel de Soluções, selecione Opções e navegue até a guia Compilação do iOS.

  5. Defina a Configuração como Versão e Plataforma como iPhone.

  6. Para compilar com um SDK específico do iOS, selecione-o na lista Versão do SDK. Caso contrário, deixe esse valor como Padrão.

  7. A vinculação reduz o tamanho total do aplicativo ao eliminar o código não utilizado.

    • Na maioria dos casos, o Comportamento do vinculador deve ser definido como o valor padrão de Vincular apenas SDKs da estrutura.
    • Usar a opção Não vincular pode fazer com que a Apple rejeite o aplicativo devido à presença de APIs iOS não públicas no Xamarin.iOS que seriam vinculadas com a opção Somente SDKs do Link Framework
    • Link All deve ser usado com cuidado, pois ele removerá o código de todos os assemblies no projeto, incluindo bibliotecas de terceiros 3rd. Ele pode remover o código que a biblioteca de terceiros 3rd só pode usar via reflexão que o vinculador não pode detectar, como ele faz análise de código estático para determinar qual código de biblioteca está sendo usado. Use Link All com cuidado, pois você pode ter que preservar manualmente algumas classes e/ou métodos para evitar falhas de tempo de execução devido à falta de código.
    • Para saber mais, consulte o guia Vincular aplicativos do Xamarin.iOS.
  8. Para o iOS 11, selecione uma das arquiteturas de dispositivo compatíveis com ARM64. Para saber mais sobre a compilação para dispositivos iOS de 64 bits, consulte a seção Habilitar compilações de 64 bits de aplicativos Xamarin.iOS da documentação Considerações sobre plataformas de 32/64 bits.

  9. Talvez você queira usar o compilador LLVM para compilar código menor e mais rápido. No entanto, essa opção aumenta o tempo de compilação.

  10. Confira Otimizar imagens PNG para diminuir ainda mais o tamanho do aplicativo.

  11. A depuração não deve ser habilitada, pois deixará o build maior, sem necessidade.

  12. Com base nas necessidades do seu aplicativo, você também pode ajustar o tipo de Coleta de Lixo que está sendo usado e configurar para a Internacionalização.

    Depois de definir as opções conforme descrito acima, suas configurações de compilação devem ser semelhantes a esta:

    iOS Build settings

    Também dê uma olhada no guia de mecânica de compilação do iOS, que descreve melhor as configurações de compilação.

  13. Navegue até a guia Assinatura de pacote do iOS. Se as opções aqui não forem editáveis, verifique se Provisionamento Manual está selecionado no arquivo Info.plist.

  14. Verifique se a Configuração está definida como Versão e se a Plataforma está definida como iPhone.

  15. Defina Identidade de assinatura como Distribuição (automática).

  16. Selecione o Perfil de provisionamento da App Store criado acima.

    As opções de assinatura de pacote do projeto serão parecidas com isto:

    iOS Bundle Signing

  17. Clique em OK para salvar as alterações nas propriedades do projeto.

Configurar seu aplicativo no iTunes Connect

O iTunes Connect é um pacote de ferramentas baseadas na Web para gerenciar aplicativos iOS na App Store. Seu aplicativo Xamarin.iOS precisa ser definido e configurado corretamente no iTunes Connect antes de ser enviado à Apple para análise e ser liberado na App Store.

Para saber como fazer isso, leia o guia Configurar um aplicativo no iTunes Connect.

Criar e enviar seu aplicativo

Com as configurações de build configuradas corretamente e o iTunes Connect aguardando seu envio, agora você pode criar seu aplicativo e enviá-lo para a Apple.

  1. No Visual Studio para Mac, selecione a configuração de build Versão e um dispositivo (não um simulador) no qual compilar.

    Build configuration and platform selection

  2. No menu Compilar, selecione Arquivo para publicação.

  3. Depois que o arquivo tiver sido criado, a visualização Arquivos será exibida. Clique em Assinar e Distribuir... para abrir o assistente de publicação.

    Screenshot of the Sign and Distribute button location in the Archives view.

    Observação

    Por padrão, a exibição Arquivos mostra somente os arquivos da solução aberta. Para ver todas as soluções que têm arquivos, marque a opção Mostrar todos os arquivos na caixa de seleção. É uma boa ideia manter arquivos antigos de forma que as informações de depuração que eles contêm possam ser usadas para simbolizar relatórios de falha, se necessário.

  4. Selecione o canal de distribuição App Store. Clique em Avançar.

  5. Selecione Carregar como destino. Clique em Avançar.

  6. Na janela Perfil de provisionamento, selecione sua identidade de assinatura, aplicativo e perfil de provisionamento. Clique em Avançar.

    Screenshot of the Provisioning profile wizard page showing a valid signing identity, app, and provisioning profile selection.

  7. Na janela de informações do App Store Connect, selecione um nome de usuário do ID Apple no menu e insira uma senha específica do aplicativo. Clique em Avançar.

    Screenshot of the App Store Connect information wizard page showing an Apple ID user name selected.

  8. Verifique os detalhes do seu pacote e clique em Publicar. Depois de selecionar um local para salvar o arquivo .ipa, o assistente carregará seu aplicativo no App Store Connect.

    Observação

    A Apple pode rejeitar aplicativos com o iTunesMetadata.plist incluído no arquivo .ipa, o que resulta em um erro como este:

    ERROR: ERROR ITMS-90047: "Disallowed paths ( "iTunesMetadata.plist" ) found at: Payload/iPhoneApp1.app"

    Para conferir uma solução alternativa para esse erro, veja esta postagem nos Fóruns do Xamarin.

Status do iTunes Connect

Para ver o status de envio do aplicativo, faça logon no iTunes Connect e selecione seu aplicativo. O status inicial deve ser Aguardando análise, embora ele possa mostrar temporariamente Upload recebido enquanto está sendo processado.

Waiting For Review

Dicas e truques

Personalizar o local do .ipa

Uma propriedade MSBuild, IpaPackageDir, possibilita a personalização do local de saída do arquivo .ipa. Se IpaPackageDir estiver definido como um local personalizado, o arquivo .ipa será colocado nesse local em vez de no subdiretório padrão com carimbo de data/hora. Isso pode ser útil ao criar builds automatizados que dependem de um caminho de diretório específico para funcionarem corretamente, como aqueles usados para builds de CI (Integração Contínua).

Há várias maneiras possíveis de se usar a nova propriedade. Por exemplo, para fazer a saída do arquivo .ipa no antigo diretório padrão (como no Xamarin.iOS 9.6 e inferior), você pode definir a propriedade IpaPackageDir como $(OutputPath) usando uma das abordagens a seguir. As duas abordagens são compatíveis com todos os builds do Xamarin.iOS de API Unificada, incluindo builds do IDE, bem como builds de linha de comando que usam msbuild ou mdtool:

  • A primeira opção é definir a propriedade IpaPackageDir dentro de um elemento <PropertyGroup> em um arquivo MSBuild. Por exemplo, você poderia adicionar o seguinte <PropertyGroup> à parte inferior do arquivo .csproj do projeto de aplicativo do iOS (logo antes da marca de fechamento </Project>):

    <PropertyGroup>
      <IpaPackageDir>$(OutputPath)</IpaPackageDir>
    </PropertyGroup>
    
  • Uma abordagem melhor seria adicionar um elemento <IpaPackageDir> à parte inferior do <PropertyGroup> existente que corresponde à configuração usada para compilar o arquivo .ipa. Ela é melhor porque preparará o projeto para compatibilidade futura com uma configuração planejada na página de propriedades do projeto Opções do IPA do iOS. Se você estiver usando a configuração Release|iPhone para compilar o arquivo .ipa no momento, o grupo de propriedades completo atualizado poderá ficar parecido com o seguinte:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone'">
       <Optimize>true</Optimize>
       <OutputPath>bin\iPhone\Release</OutputPath>
       <ErrorReport>prompt</ErrorReport>
       <WarningLevel>4</WarningLevel>
       <ConsolePause>false</ConsolePause>
       <CodesignKey>iPhone Developer</CodesignKey>
       <MtouchUseSGen>true</MtouchUseSGen>
       <MtouchUseRefCounting>true</MtouchUseRefCounting>
       <MtouchFloat32>true</MtouchFloat32>
       <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
       <MtouchLink>SdkOnly</MtouchLink>
       <MtouchArch>ARMv7, ARM64</MtouchArch>
       <MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>
       <MtouchTlsProvider>Default</MtouchTlsProvider>
       <BuildIpa>true</BuildIpa>
       <IpaPackageDir>$(OutputPath)</IpaPackageDir>
    </PropertyGroup>
    

Uma técnica alternativa para builds de linha de comando msbuild é adicionar um argumento de linha de comando /p: para definir a propriedade IpaPackageDir. Neste caso, observe que msbuild não expande as expressões $() passadas na linha de comando, portanto, não é possível usar a sintaxe $(OutputPath). Em vez disso, você deve fornecer um nome de caminho completo.

msbuild /p:Configuration="Release" /p:Platform="iPhone" /p:ServerAddress="192.168.1.3" /p:ServerUser="macuser" /p:IpaPackageDir="%USERPROFILE%\Builds" /t:Build SingleViewIphone1.sln

Ou semelhante ao seguinte no Mac:

msbuild /p:Configuration="Release" /p:Platform="iPhone" /p:IpaPackageDir="$HOME/Builds" /t:Build SingleViewIphone1.sln

Com a compilação de distribuição criada e arquivada, agora você está pronto para enviar seu aplicativo para o iTunes Connect.

Resumo

Este artigo descreveu como configurar, compilar e enviar um aplicativo iOS para lançamento na App Store.