• Blog
    • Tecnologia
    • Carreira e Cultura
  • Materiais Gratuitos
  • Podcast
  • Nossas vagas
  • Site Movile
Menu
  • Blog
    • Tecnologia
    • Carreira e Cultura
  • Materiais Gratuitos
  • Podcast
  • Nossas vagas
  • Site Movile
  • iOS, PlayKids, Tecnologia

URL schemes no PlayKids iOS: Entenda como utilizamos

Compartilhe

Compartilhar no facebook
Compartilhar no google
Compartilhar no twitter
Compartilhar no linkedin

A URL scheme é uma funcionalidade muito interessante pois permite que aplicativos comuniquem entre em si. É possível clicar em um link no Safari e ser redirecionado para um app, levar o usuário diretamente para um conteúdo, etc.



O próprio iOS possui URL schemes nativas, sendo possível iniciar o app de telefone discando para um número, iniciar o app de e-mail com o destinatário escrito, etc.

Na PlayKids a funcionalidade é utilizada em diversas ocasiões:

Engajamento & Deep Link

Na nossa página da web, área dos pais e redes sociais temos diversos links que levam para um conteúdo específico do app. É possível abrir um vídeo, playlist ou jogos de qualquer personagem diretamente.

Também enviamos push notifications com dicas de conteúdos. O push possui uma URL scheme dentro do payload, que quando aberto redireciona diretamente ao conteúdo.

Suporte

Temos URLs para alterar configurações do app e enviar diagnóstico de problemas. Essas URLs são utilizadas pela nossa equipe de suporte para auxiliar clientes com problemas. É muito mais simples direcionar o usuário diretamente para onde ele precisa ir do que enviar um passo-a-passo por e-mail.

Comunicação com TV App

Fomos convidados a integrar nosso aplicativo com o TV App da Apple para o lançamento no Brasil. O TV App é um agregador de conteúdo e funciona praticamente como um controle remoto, onde o usuário escolhe o episódio/show que quer assistir e é redirecionado para o app que possui o conteúdo.

Apresentamos aqui uma forma simples, mas eficaz, para você introduzir as URL schemes em seu app!

Utilizando URL schemes

Antes de qualquer coisa, é preciso cadastrar qual scheme seu app vai utilizar no Info.plist. Em nosso exemplo vamos utilizar demoapp:// mas é recomendado que você escolha algo que faça sentido com o nome do seu app.

Clique com o botão direito em Information Property List, selecione Add Row e escolha URL types. Clique com o botão direito em Item 0, selecione Add Row e escolha URL Schemes. Verifique se ficou assim:

URL

Em URL identifier é utilizado geralmente o mesmo valor do bundle identifier.

Em URL Schemes é definido os schemes, defina um que seja único, pois em caso de conflito com outro app no sistema, é possível que o iOS não escolha o seu.

Para facilitar a implementação, vamos utilizar um framework que ajuda na organização e leitura das URL schemes, o JLRoutes. Nossa ideia é definir uma rota para cada URL scheme que suportaremos e para isso, precisamos criar um protocolo e uma estrutura:

Captura de Tela 2018-05-21 às 17.18.32

URLSchemeRoute representa a nossa rota. Ela define quais URLs são suportadas e possui um método para que seja feito o roteamento quando uma URL é recebida.

RouteParameters são os parâmetros extraídos da URL recebida pelo sistema. Esses parâmetros podem vir através de query strings ou como parte do path da URL.

Como exemplo, vamos criar uma rota chamada PlayVideoNavigationRoute, que toca um vídeo passado como parâmetro no path da URL:

Captura de Tela 2018-05-21 às 17.40.08

Agora que temos a nossa rota, precisamos registrá-la no JLRoutes. Isso pode ser feito diretamente no AppDelegate, mas para deixar o código mais organizado, preferimos criar uma classe para fazer essa ponte:

Captura de Tela 2018-05-21 às 17.41.35

Em URLSchemeManagerFactory criamos nosso objeto e registramos as rotas. Por curiosidade, no app da PlayKids, esse factory é feito em um arquivo separado pois temos muitas rotas registradas. Consegue adivinhar o número?

 Para finalizar, ficou assim o AppDelegate:

Captura de Tela 2018-05-21 às 17.41.57

Registramos as rotas assim que o app é iniciado e quando uma URL scheme é recebida, passamos ela para o JLRoutes que por sua vez a transmite para alguma de nossas rotas com os parâmetros já extraídos.

Pronto! Para testar, basta digitar a URL completa no Safari e o mesmo vai redirecionar para o seu app.

Um aplicativo feito apenas com URL schemes

Ao adotar URL schemes você abre portas para novas formas de engajamento e benefícios para seus usuários mas elas também podem ser um desafio para desenvolver. 



Tecnicamente é possível que elas sejam executadas a qualquer momento e nem sempre o app está preparado para isso. Questionamentos do tipo “funcionaria executar uma URL para tocar um vídeo enquanto estiver na tela desse jogo?” são comuns e precisam ser testados pelo desenvolvedor.



Outro ponto para prestar atenção é a falta de testes. Se a funcionalidade não é utilizada com freqüência e não existem testes automatizados, é possível que se quebre com o tempo e o problema só é descoberto em produção.



Para mitigar esses problemas pensamos em uma abordagem diferente. E se toda a navegação do app fosse feita através de URLs? Se ao invés de criar view controllers e passar parâmetros entre eles, por que não criar rotas e simplesmente chamar a URL? 



O PlayKids seguiu por esse caminho e é por isso que temos 77 rotas registradas atualmente, sendo possível acessar qualquer conteúdo ou tela a partir de outro app. Como tudo é feito através das URLs, temos como requisito resolver o problema da imprevisibilidade desde cedo e o resultado até o momento (2 anos de uso) tem se mostrado bem positivo.



Em um próximo post vamos mostrar como organizamos a navegação do nosso app para tornar possível o uso máximo dessa funcionalidade. Fiquem ligados =)

Referências

Inter-App Communication: 

https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW2

 

Compartilhe isso:

  • Tweet

Curtir isso:

Curtir Carregando...
Andre Alves

Andre Alves

Deixe um comentário

Categorias

Categorias
  • Android
  • Backend
  • Banco de Dados
  • BI
  • Carreira
  • Carreira e Cultura
  • Carreira e Cultura
  • Ciência de Dados
  • Cultura
  • Data Specialist
  • Design
  • Diversidade
  • Front-end
  • Frontend
  • Fundação 1Bi
  • Grupo Movile
  • Histórias
  • iFood
  • Infraestrutura
  • Inteligência Artificial
  • iOS
  • iOS App Development
  • Kotlin
  • kubernetes
  • LeaderShift
  • Material
  • Mobile
  • Mobile Dream
  • Movile
  • Movilian@s
  • News
  • PlayKids
  • Podcast
  • Produto
  • Projetos
  • React
  • RESPECT
  • Software Architecture
  • Software Engineering
  • Solid
  • Swift
  • SwiftUI
  • Sympla
  • Technology
  • Tecnologia
  • testes
  • UX
  • Vagas
  • Wavy
  • Zoop

Posts relacionados

Arquitetando Sign In with Apple de uma forma testável

Leia mais »
Swift

Swift: Princípio da Inversão de Dependência em Swift [Artigo 5]

Leia mais »

Whitepaper: API’s no iFood

Leia mais »
Swift

Swift: Princípio da Segregação de Interface [Artigo 4]

Leia mais »
Tags
Agile Android Apache api App Apps Arquitetura Autoconhecimento Backend Banco de Dados BI Blog bot Bots Cache Carreira Carreira e Cultura Cloud code containers Continuos integration Cultura Dados Dados Probabilísticos data Data Center Data Science Desenvolvimento Design devs digital diversidade DSL Entrevista Evento eventos Experiências Facebook front Front-end Frontend Full-stack Fundação 1Bi Gestão GO google Groovy grupo Grupo Movile histórias home iFood Infraestrutura Inteligencia artificial iOS Java jetpack Json Kotlin kubernetes layout Liderança linguagem loadview Machine Learning marketplace Mobile Movile Movilianos news Objective-C PlayKids podcast produto Projetos pwa python Rapiddo react Reativas Redis research review RH Room spark Spring stack storyboards Superplayer Swift Sympla Talentos tdd Tecnologia Testes transformação digital Unity ux vagas Valores view viewcode viewcontroller viper Voxel vue wavy web Widget Zoop

Siga-nos

Facebook-f
Linkedin
Instagram
Youtube
Twitter

Baixe nosso e-book!

Receba conteúdos exclusivos em seu email!

Seus dados estão protegidos conosco.

Menu

  • Tecnologia
  • Carreira e Cultura
  • Materiais Gratuitos
  • Podcast
Menu
  • Tecnologia
  • Carreira e Cultura
  • Materiais Gratuitos
  • Podcast

principais categorias

  • Tecnologia
  • Carreira e Cultura
  • News
  • Movile
  • Backend
  • Android
Menu
  • Tecnologia
  • Carreira e Cultura
  • News
  • Movile
  • Backend
  • Android

FEED RSS

RSS Feed RSS - Posts

RSS Feed RSS - Comentários

redes sociais

  • Facebook
  • LinkedIn
  • Instagram
  • Youtube
  • Twitter

Copyright 2021 © Todos os direitos reservados. Criação de Site por UpSites & Weblab

  • Novas Vagas!

  • Último Podcast!

%d blogueiros gostam disto: