Concrete Logo
Hamburger button

Organizando ambientes no XCode

  • Blog
  • 28 de Junho de 2016
Share

Quantas vezes já nos pegamos em um emaranhado de URL’s apontando para diversos ambientes diferentes, trocando configurações de instrumentos como Mixpanel, New Relic e outros? Muitas vezes, não é mesmo?

Podemos simplificar muito esse processo, tornando-o indolor, por meio do User-Defined Settings. Já ouviu falar? Neste post vou mostrar como criar e acessar essas configurações, para que nosso App se comporte como o esperado independente do scheme ou target que estamos buildando.

Para começar, basta adicionar um novo arquivo de configuração ao nosso projeto. Para isso, vamos até a aba Info e adicionamos uma nova configuração. Ao fazer isso, precisamos especificar se ele será uma cópia do arquivo padrão de Release ou Debug:

Vamos considerar que serão dois os ambientes no nosso projeto: um para release na App Store e outro apenas para desenvolvimento. Neste caso, vamos criar mais duas configurações: uma duplicando de Release e outra de Debug:

Agora que definimos quais serão os ambientes do nosso App, podemos criar a tão desejada User-Defined Setting. Para isso basta ir ao menu Build Settings para adicionar:

Vamos usar esse novo setting para definir as URL’s dos ambientes. Assim, vamos nomear nosso Setting como BASE_URL:

Podemos observar que nossa configuração de usuário foi adicionada com sucesso, e dentro dela temos os ambientes que definimos nos passos anteriores. Nesses campos, vamos adicionar as URL’s desejadas e em cada uma das configurações descreveremos a URL que apontará para os respectivos ambientes:

Podemos criar tantas configurações de usuários quanto quisermos. Então, vamos criar mais uma para uma hipotética configuração de Mixpanel: 

Para facilitar o nosso processo de build, vamos criar schemes que nos traduzam qual ambiente queremos buildar:

Vamos criar o de development primeiro, nomeando nosso scheme de acordo:

Feito isso, precisamos editar nosso scheme para dizer a ele qual configuração ele irá obedecer. Vamos à aba Info na opção Run na edição de schemes e alteramos para configuração de Development: 
O mesmo passo que fizemos para Development temos também que fazer para todas as outras configurações que criamos, criando scheme e apontando a respectiva configuração.

Fazendo isso, estaremos com tudo configurado! Mágico, não? Ainda não! Mas não falta muito, precisamos agora criar um modelo que gerenciará esses dados dentro do nosso código.

Para isso, precisamos mapear as nossas configurações em nosso plist. Podemos chamar esse conjunto de configurações de usuário de “EnviromentSetting”. Então, vamos abrir nosso arquivo de plist e adicionar uma nova linha com nome de EnviromentSetting:

Feito isso, vamos modificar o tipo da nossa variável para Dictionary e mapear nossas configurações de usuário dentro desse dicionário: 

Agora é só codificar 🙂 Parece muito extensa essa configuração, porém quando formos codificar um manager para nossos ambientes teremos de escrever muito menos código e ele será muito mais legível e fácil de alterar.

Adicione, então, um novo arquivo de Swift em seu projeto. Aqui, vou dar o nome de EnviromentUtil e vou criar uma struct que nos dará as informações pertinentes ao ambiente que estamos rodando o App:

Simples, não? Primeiro adicionamos uma variável que nos dará acesso às informações que estão contidas em nosso Dicionário EnviromentSetting criado no plist. Depois, criamos uma variável que conterá o valor da nossa BASE_URL e MIXPANEL_ID dentro desse dicionário.

É assim que podemos simplificar e tornar indolor nossa forma de gerenciar URL’s e dados que mudam de acordo com um determinado ambiente.

Ficou alguma dúvida ou tem alguma sugestão? Aproveite os campos abaixo! Até a próxima =)

É desenvolvedor iOS e quer trabalhar com a gente? Acesse aqui.