![Terraform não está morto](https://optimuscloud.com.br/wp-content/uploads/2024/05/1716463324_Terraform-nao-esta-morto-150x150.jpg)
Terraform não está morto
23 de maio de 2024![GitOps para Kafka em escala](https://optimuscloud.com.br/wp-content/uploads/2024/05/1716486244_GitOps-para-Kafka-em-escala-150x150.png)
GitOps para Kafka em escala
23 de maio de 2024Kotlin Multiplatform (KMP) simplifica a implementação de recursos compartilhados em projetos de plataforma cruzada, permitindo configurar dependências específicas da plataforma sem precisar revisar completamente sua base de código. Sua flexibilidade e versatilidade fazem do KMP uma estrutura de desenvolvimento excepcional e cuidadosamente projetada.
No primeiro artigo desta série, você implementou todos os elementos fundamentais para começar a usar o Kotlin Multiplatform. Agora você está pronto para implementar dependências específicas da plataforma a partir de seus respectivos módulos. Um exemplo prático para ilustrar isso é a criação de um ouvinte de rede simples.
Para ajudar a orientá-lo, criei um vídeo para mostrar o resultado do seu trabalho.
Comece a usar a multiplataforma Kotlin
Se você já desenvolveu aplicativos antes, provavelmente já encontrou cenários em que precisava informar os usuários sobre sua conectividade com a Internet, seja um status offline ou uma conexão desativada. Os desenvolvedores Android normalmente empregam o ConnectivityManager
enquanto os desenvolvedores iOS podem usar NWPathMonitor
.
Acessando ConnectivityManager
no módulo Android é simples com o androidContext()
função fornecida pela estrutura de injeção de dependência (DI) Koin para KMP. Porém, em dezembro de 2023, observei que NWPathMonitor
não está incluído nas bibliotecas pré-construídas para Kotlin Native, então usei uma interface para integrá-lo usando código Swift. Esta abordagem envolve aproveitar o IosApplicationComponent
para colmatar o NWPathMonitor
aula do iosApp
módulo para o composeApp
módulo compartilhado por Android e iOS.
Primeiro vou conceituar a interface. Basicamente, o ouvinte da rede deve realizar duas ações fundamentais: iniciar o processo de escuta e interrompê-lo quando necessário. Para fazer isso, defina duas funções: registerListener
para iniciar a escuta e unregisterListener
para pará-lo; em seguida, encapsule essas funcionalidades em uma interface chamada NetworkHelper
. Essa interface também foi projetada para notificá-lo sobre alterações no status da rede, fornecendo retornos de chamada para indicar quando uma conexão de rede é estabelecida ou perdida.
Implementar essa interface no Android é bastante simples. Vá para o local exato em seu androidMain
módulo e crie uma nova classe chamada AndroidNetworkHelper,
que implementa o NetworkHelper
interface. Esta é uma implementação bastante padrão.
Você ainda deseja disponibilizar essa classe no gráfico de injeção de dependência (DI) descrito no artigo anterior.
Agora a parte divertida: no iosApp
módulo, entre no iosApp
pasta e crie um novo arquivo de classe Swift chamado IosNetworkHelper
. Você deve fazer isso usando JetBrains Fleet ou editor de código XCode da Apple:
Observe que o Unit
tipo de retorno agora é representado como um Void
tipo. Isso se deve aos mapeamentos de interoperabilidade Kotlin Native Obj-C.
Agora que você tem uma implementação iOS aproveitando o Network
pacote nativo do ecossistema iOS, você pode integrá-lo ao IosApplicationComponent
. Para fazer isso de forma eficaz, primeiro defina-o dentro do componente:
Por último, para juntar as peças do quebra-cabeça, disponibilize-o para Koin:
Conclua as implementações
Agora você tem tudo que precisa para completar seu NetworkListener
implementação. Retorne para commonMain
conjunto de origem e crie uma classe chamada NetworkListener
:
Esta classe utiliza os fluxos do Kotlin para aproveitar os recursos do NetworkHelper
métodos que você estabeleceu anteriormente. Esse NetworkListener
classe pode ser injetada perfeitamente no gráfico DI dentro do commonMain
conjunto de origem, agilizando ainda mais sua integração e uso.
Para encerrar tudo, vá para o App.kt
combinável e teste a conectividade da rede:
Conclusão
Este artigo de duas partes fornece um guia passo a passo para chamar dependências específicas da plataforma no Kotlin Multiplatform. Embora eu tenha aplicado algumas abordagens criativas, a maioria dos padrões discutidos são derivados de várias fontes, incluindo blogs, artigos oficiais de Kotlin e JetBrains, documentação e exemplos de KMP, incluindo:
- Os princípios básicos da estrutura do projeto multiplataforma Kotlin
- Amostras multiplataforma Kotlin
- Usando APIs específicas da plataforma
- Declarações esperadas e reais
- Interoperabilidade com Swift/Objective-C
A mudança para a contratação remota e sem fronteiras permite que as empresas olhem para além das restrições geográficas para aceder a talentos globais. Explore estratégias para construir equipes distribuídas globalmente e de alto desempenho baixando The Future of Hiring Is Borderless.
A postagem Comece a usar a multiplataforma Kotlin com um projeto Network Listener apareceu pela primeira vez em The New Stack.