Ometria ajuda seu departamento de marketing a entender e interagir melhor com seus clientes, enviando e-mails personalizados e notificações push.
O aplicativo tem dois objetivos principais:
Para o seu aplicativo móvel, isso significa:
Os desenvolvedores de aplicativos que se integram a este SDK devem seguir o guia abaixo. Você também pode consultar o aplicativo de exemplo que incluímos para uma implementação de referência.
Consulte Configurando seu aplicativo móvel com credenciais do Firebase na central de ajuda do Ometria e siga as etapas para obter uma chave de API.
A maneira mais fácil de incluir o Ometria em seu projeto ReactNative é usando npm install
ou yarn add
.
react-native-ometria
usando npm install react-native-ometria
ou yarn add react-native-ometria
Nota: Se você tiver problemas com a instalação da biblioteca, considere excluir o exemplo da configuração do TypeScript, por exemplo:
{
...,
"exclude": ["example"]
}
Para iOS
você precisa instalar Pods pod install
para criar um espelho de especificações local do CocoaPods.
Se você encontrar The Swift pod 'Ometria' depends upon 'FirebaseMessaging'
ao executar a instalação do pod, considere adicionar use_frameworks! :linkage => :static
.
Para inicializar o Ometria SDK, você precisa inserir a chave API de 2. Antes de começar .
import Ometria from 'react-native-ometria' ;
await Ometria . initializeWithApiToken ( 'API_KEY' , {
notificationChannelName : 'Example Channel Name' , // optional, only for Android
appGroupIdentifier : 'group.com.ometria.sampleRN' , // optional, only for iOS
} ) ;
Desde a versão 2.3.0, o SDK permite a reinicialização da instância Ometria. Portanto, você pode chamar esse método novamente mais tarde no aplicativo, se necessário.
Você pode especificar um nome personalizado para o canal de notificação do Android no segundo parâmetro de opções opcionais. O nome do canal padrão é <blank>
.
Você também pode especificar um identificador de grupo de aplicativos no segundo parâmetro de opções opcionais. Consulte esta seção para iOS.
Ometria registra quaisquer erros encontrados durante o tempo de execução por padrão; esses logs estão acessíveis no console do seu ambiente de desenvolvimento.
Você pode ativar o registro avançado se quiser mais informações sobre o que está acontecendo em segundo plano. Basta adicionar a seguinte linha após inicializar a biblioteca:
Ometria . isLoggingEnabled ( true ) ;
Você precisa estar ciente do comportamento dos usuários em suas plataformas para entendê-los. Alguns comportamentos são detectáveis automaticamente, outros eventos precisam do trabalho do desenvolvedor do aplicativo para serem rastreados.
Muitos desses métodos possuem eventos análogos em nosso rastreador de site.
Por exemplo, o evento identificado pelo cliente recebe um ID de cliente ou um e-mail - esses identificadores devem ser os mesmos aqui e na API de dados. Se você especificar o e-mail e o ID do cliente, ambos precisarão corresponder.
Os eventos são mesclados pelo lado da Ometria em uma grande visão transversal do comportamento do cliente. Se você usar e-mails/IDs de clientes inconsistentes, isso poderá resultar na criação de perfis duplicados ou na perda de dados.
Depois que o SDK for inicializado, você poderá rastrear um evento chamando seu método dedicado.
Um usuário do aplicativo acabou de se identificar, ou seja, fez login.
Ometria . trackProfileIdentifiedByCustomerIdEvent ( 'test_customer_id' ) ;
O ID do cliente é o ID do usuário em seu banco de dados.
Às vezes, um usuário apenas fornece seu endereço de e-mail sem fazer login completo ou ter uma conta. Nesse caso, Ometria pode combinar o perfil com base no e-mail:
Ometria . trackProfileIdentifiedByEmailEvent ( '[email protected]' ) ;
Ter um customerId torna a correspondência de perfis mais robusta.
O envio de um evento por email não é mutuamente exclusivo; para uma integração ideal, você deve enviar qualquer um dos eventos assim que tiver as informações. Esses dois eventos são essenciais para o funcionamento do SDK, portanto, certifique-se de enviá-los o mais cedo possível. Reiterando aqui que esses identificadores devem ser os mesmos que você utiliza na sua plataforma de e-commerce e envia para a Ometria (via API de dados ou outras formas). Se você especificar o e-mail e o ID do cliente, ambos precisarão corresponder. Um erro típico que vemos nas integrações é que o aplicativo gera um novo ID de cliente a cada login (que não corresponde ao ID de cliente armazenado no Ometria). Para evitar isso, gere esses IDs centralmente em seus servidores e envie IDs consistentes por meio do SDK móvel do Ometria e da API de dados do Ometria. Caso não seja prático gerar ids consistentes, sugerimos usar apenas e-mail para identificar os contatos.
Desfaça um evento profileIdentified. Você pode usar isso se um usuário fizer logout.
Ometria . trackProfileDeidentifiedEvent ( ) ;
Atualmente, este evento limpa os IDs armazenados (e-mail e/ou ID do cliente) do armazenamento local do telefone. Não tem outro efeito dentro de Ometria.
Um visitante clica/toca/visualiza/destaca ou demonstra interesse em um produto.
Por exemplo, o visitante pesquisa um termo e seleciona uma das prévias do produto em um conjunto de resultados, ou navega por uma categoria de roupas e clica em uma camisa específica para ver uma imagem maior.
Este evento tem como objetivo captar o interesse do visitante por este produto.
Ometria . trackProductViewedEvent ( 'product_id' ) ;
O visitante visualizou uma página, tela ou modal dedicado com o conteúdo do carrinho de compras:
Ometria . trackBasketViewedEvent ( ) ;
O visitante alterou o seu carrinho de compras:
const items : OmetriaBasketItem [ ] = [
{
productId : 'product-1' ,
sku : 'sku-product-1' ,
quantity : 1 ,
price : 12.0 ,
variantId : 'variant-1' ,
} ,
{
productId : 'product-2' ,
sku : 'sku-product-2' ,
quantity : 2 ,
price : 9.0 ,
variantId : 'variant-2' ,
} ,
{
productId : 'product-3' ,
sku : 'sku-product-3' ,
quantity : 3 ,
price : 20.0 ,
variantId : 'variant-3' ,
} ,
] ;
Ometria . trackBasketUpdatedEvent ( {
totalPrice : 12.0 ,
id : 'basket_id_eg' ,
currency : 'USD' ,
items ,
link : 'link_eg' ,
} ) ;
Este evento usa como parâmetro a cesta atual completa - não apenas as partes atualizadas.
Isso ajuda a recuperar eventos de cesta perdidos ou fora de sincronia: a atualização mais recente é sempre oficial.
OmetriaBasketItem é um objeto que descreve o conteúdo de um item do carrinho de compras. Pode ter preço e quantidade próprios com base nas diferentes regras e promoções que estão sendo aplicadas. Possui as seguintes propriedades:
- productId : (
String
, obrigatório) – Uma string que representa o identificador exclusivo deste produto.- sku : (
String
, opcional) - String representando a unidade de estoque, que permite identificar um determinado item.- quantidade : (
Int
, obrigatório) - O número de itens que esta entrada representa.- price : (
Float
, obrigatório) - Valor flutuante que representa o preço de um item. A moeda é estabelecida pelo OmetriaBasket que contém este item- variandId : (
String
, opcional) - Um identificador para um produto variante associado a este item de linha.
OmetriaBasket é um objeto que descreve o conteúdo de um carrinho de compras e possui as seguintes propriedades:
- id : (
String
, opcional) – Um identificador exclusivo para esta cesta- moeda : (
String
, obrigatório) - Uma string que representa a moeda no código de moeda ISO 4217 de três letras, por exemplo,"USD"
,"GBP"
- totalPrice : (
float
, obrigatório) - Um valor flutuante que representa o preço.- items : (
Array[OmetriaBasketItem]
) - Um array contendo as entradas dos itens nesta cesta.- link : (
String
) - Um link direto para a página da web ou do aplicativo desta cesta. Pode ser usado em uma notificação enviada ao usuário, por exemplo "Esqueceu de finalizar a compra? Aqui está sua cesta para continuar: 'https://eg.com/basket_url'". Seguir esse link deve levá-los diretamente para a página da cesta.
Acompanhe quando o usuário iniciou o processo de checkout. Atualmente, isso é usado apenas para contar visualizações de páginas e não tem outro efeito no Ometria.
Ometria . trackCheckoutStartedEvent ( 'order_id' ) ;
O pedido foi concluído e pago:
const items : OmetriaBasketItem [ ] = [
{
productId : 'product-1' ,
sku : 'sku-product-1' ,
quantity : 1 ,
price : 12.0 ,
} ,
] ;
Ometria . trackOrderCompletedEvent ( 'order_id' , {
totalPrice : 12.0 ,
id : 'basket_id_eg' ,
currency : 'USD' ,
items ,
link : 'link_eg' ,
} ) ;
Use o guia Tratamento da interação com notificações que contêm URLs para rastrear manualmente esse evento quando você tiver informações suficientes sobre a tela (ou outro destino) que o aplicativo abrirá.
Ometria . trackDeepLinkOpenedEvent ( '/profile' , 'ProfileScreen' ) ;
O visitante visualiza a ‘página inicial’ ou tela inicial do seu aplicativo.
Ometria . trackHomeScreenViewedEvent ( ) ;
O visitante clica/toca/visualiza/destaca ou demonstra interesse em uma lista de produtos. Este tipo de tela inclui resultados de pesquisas, listagens de produtos de um grupo, categoria, coleção ou qualquer outra tela que apresente uma lista de produtos.
Por exemplo, uma loja vende roupas e o visitante toca em "Calçados femininos" para ver uma lista de produtos nessa categoria ou pesquisa "suéter azul" e vê uma lista de produtos nessa categoria.
Este evento deve ser acionado em:
Ometria . trackProductListingViewedEvent ( ) ;
Rastrear as visualizações de tela independentes de um visitante nos ajuda a monitorar seu envolvimento com o aplicativo, bem como onde ele está na jornada.
Um evento análogo em um site seria rastrear visualizações de páginas independentes.
Todas as telas comuns de comércio eletrônico têm seu próprio evento de nível superior: cesta visualizada, lista de produtos visualizados, etc.
Seu aplicativo pode ter um tipo específico de página que seja útil para os profissionais de marketing rastrearem o envolvimento.
Por exemplo, se você estiver realizando uma promoção e visualizar uma tela específica indicar interesse na promoção, que o marketing poderá querer acompanhar posteriormente.
Para rastrear essas telas personalizadas, use o evento Tela visualizada :
Ometria . trackScreenViewedEvent ( 'OnboardingScreen' , { a : '1' , b : '2' } ) ;
Seu aplicativo pode ter fluxos ou páginas específicas de interesse da equipe de marketing.
Por exemplo, o Marketing pode querer enviar um e-mail ou notificação a qualquer usuário que se inscreveu em uma promoção específica ou interagiu com um botão ou elemento específico do aplicativo.
Se você enviar um evento personalizado correspondente a essa ação, eles poderão acionar uma campanha de automação sobre ela.
Verifique com a equipe de marketing os detalhes e o que eles podem precisar. Principalmente se já usam Ometria para email, eles conhecerão campanhas de automação e eventos customizados.
Ometria . trackCustomEvent ( 'my_custom_type' , { } ) ;
Os eventos a seguir são rastreados automaticamente pelo SDK.
Inicializar o SDK é suficiente para tirar vantagem disso; nenhuma integração adicional é necessária (a menos que mencionado de outra forma).
Evento | Descrição |
---|---|
Aplicativo instalado | O aplicativo acabou de ser instalado. Geralmente não pode ser enviado quando o aplicativo é realmente instalado, mas apenas na primeira vez que o aplicativo é iniciado. |
Aplicativo lançado | Alguém acabou de lançar o aplicativo. |
Aplicativo em primeiro plano | O aplicativo já foi iniciado, mas estava em segundo plano. Acabou de ser trazido para o primeiro plano. |
Aplicativo em segundo plano | O aplicativo estava em uso ativo e acabou de ser enviado para segundo plano. |
Notificação recebida no estado de encerramento do aplicativo | Uma notificação push foi recebida pelo sistema enquanto o aplicativo estava encerrado. (precisa de uma extensão de serviço de notificação no iOS) |
Ocorreu um erro | Ocorreu um erro no lado do cliente. Tentamos detectar quaisquer problemas com a carga de notificação real de nossa parte, por isso não esperamos nenhum erro que precise ser retornado aos usuários finais. |
Para reduzir o consumo de energia e largura de banda, a biblioteca Ometria não envia os eventos um por um, a menos que você solicite.
Em vez disso, ele compõe lotes de eventos que são enviados ao back-end durante o tempo de execução do aplicativo quando ocorre uma das seguintes situações:
pushtokenRefreshed
)notificationReceived
appForegrounded
appBackgrounded
Você pode solicitar que a biblioteca envie todos os eventos restantes para o backend sempre que desejar, chamando:
Ometria . flush ( ) ;
Você pode limpar completamente todos os eventos que foram rastreados e ainda não liberados.
Para fazer isso, chame o seguinte método:
Ometria . clear ( ) ;
Para ver quais eventos foram capturados, você pode verificar os logs provenientes do Ometria SDK, se o log estiver habilitado. Você pode filtrar pela palavra "Ometria". O SDK registra todos os eventos conforme eles acontecem e também registra a liberação, ou seja, quando eles são enviados para a API de eventos móveis do Ometria. Quaisquer erros potenciais com o envio (problemas de API ou problemas de validação de eventos) também seriam visíveis aqui.
Ometria usa Firebase Cloud Messaging para enviar notificações push para dispositivos móveis.
Você terá, portanto, que adicionar 'React-Native Firebase' como uma dependência do Ometria, usando as seguintes linhas:
import firebase from '@react-native-firebase/app' ;
import messaging from '@react-native-firebase/messaging' ;
Para Android siga o tutorial do Firebase ReactNative Firebase para Android Para iOS siga o tutorial do Firebase ReactNative Firebase para iOS
Para usar notificações push, você também precisa seguir as etapas em Guia ReactNative de notificações push
Quando configurado corretamente, o Ometria pode enviar notificações personalizadas para seu aplicativo móvel.
Siga estas etapas:
Antes de continuar, você já deve ter configurado:
Leia mais sobre essas etapas na seção 4. Inicialize a biblioteca
Para Android 13 (API de nível 33) e superior, primeiro você precisa declarar a permissão em seu arquivo AndroidManifest.xml:
< manifest ...>
< uses-permission android : name = " android.permission.POST_NOTIFICATIONS " />
< application ...>
...
</ application >
</ manifest >
Você deve solicitar permissões para notificações. Você pode usar permissões react-native.
import { requestNotifications , RESULTS } from 'react-native-permissions' ;
...
await requestNotifications ( [ 'alert' , 'sound' , 'badge' ] ) . then ( ( { status } ) => {
if ( status === RESULTS . GRANTED ) {
console . log ( '? Push Notification permissions granted!' ) ;
}
} ) ;
Encontre mais sobre as permissões de tempo de execução de notificação no Android aqui.
Após a inicialização do Ometria, você deve encaminhar o token Firebase Push Notification (iOS e Android).
Você também deve encaminhar o token de notificação push para Ometria sempre que ele for atualizado.
import Ometria from 'react-native-ometria' ;
import messaging from '@react-native-firebase/messaging' ;
await Ometria . initializeWithApiToken ( 'API_KEY' , {
notificationChannelname : 'Example Channel Name' , // optional, only for Android
appGroupIdentifier : 'group.com.ometria.sampleRN' , // optional, only for iOS
} ) ;
messaging ( )
. getToken ( )
. then ( ( pushToken ) => Ometria . onNewToken ( pushToken ) ) ;
messaging ( ) . onTokenRefresh ( ( pushToken ) => Ometria . onNewToken ( pushToken ) ) ;
Assine mensagens remotas que seu aplicativo recebe enquanto está no estado de aplicativo em primeiro plano. Você pode fazer isso usando o método onMessage
do pacote @react-native-firebase/messaging
.
No retorno de chamada, você pode usar Ometria.onNotificationReceived
para informar ao SDK do Ometria que uma mensagem remota foi recebida e o evento notificationReceived
será acionado. Use Ometria.parseNotification
se desejar extrair dados do Ometria da mensagem remota.
messaging ( ) . onMessage ( async ( remoteMessage ) => {
Ometria . onNotificationReceived ( remoteMessage ) ;
const ometriaData = Ometria . parseNotification ( remoteMessage ) ;
// Use ometriaData
} ) ;
Se você implementar essa solução personalizada, não se esqueça de chamar Ometria.onNotificationOpenedApp
para permitir que o SDK com o qual a notificação tenha interagido ao manipular o evento de interação de notificação para notificações em primeiro plano.
Para que o Ometria rastreie com precisão todas as notificações recebidas no estado de encerramento e em segundo plano do aplicativo no iOS, ele precisa aproveitar o poder de um serviço em segundo plano, que tenha acesso a todas as notificações.
Para obter um guia completo sobre como configurar uma extensão de serviço de notificação, consulte Adicionando destino de extensão de serviço de notificação.
Para que o Ometria rastreie com precisão todas as notificações que foram recebidas no estado de encerramento e em segundo plano do aplicativo no Android, você precisa se inscrever antecipadamente (em index.js
) para mensagens remotas que seu aplicativo recebe enquanto está no estado de encerramento e em segundo plano.
Ometria.onAndroidBackgroundMessage
informará ao Ometria SDK que uma mensagem remota foi recebida e o evento warningReceived será acionado. Ele precisa do token Ometria para inicializar o SDK em segundo plano.
Platform . OS === 'android' &&
messaging ( ) . setBackgroundMessageHandler ( async ( remoteMessage ) => {
Ometria . onAndroidBackgroundMessage ( {
ometriaToken : 'OMETRIA_KEY'
ometriaOptions : { } ,
remoteMessage ,
} ) ;
} ) ;
A partir da versão 2.4.0, Ometria.setBackgroundMessageHandler
é um método obsoleto. Use Ometria.onAndroidBackgroundMessage
.
Quando um usuário interage com uma notificação em segundo plano ou no estado de encerramento, você deve informar ao SDK do Ometria que houve interação com a notificação e que o aplicativo foi aberto. Você pode fazer isso chamando Ometria.onNotificationOpenedApp
com a mensagem remota como parâmetro.
// Check if the app was opened from quit state by a notification
messaging ( )
. getInitialNotification ( )
. then ( ( remoteMessage ) => {
if ( remoteMessage ) {
Ometria . onNotificationOpenedApp ( remoteMessage ) ;
}
} ) ;
// Subscribe to the app being opened from background state by a notification
messaging ( ) . onNotificationOpenedApp ( ( remoteMessage ) =>
Ometria . onNotificationOpenedApp ( remoteMessage )
) ;
A partir da versão 2.4.0, Ometria.onNotificationInteracted
é um método obsoleto. Use Ometria.onNotificationOpenedApp
.
Ometria permite que você envie URLs e informações de rastreamento junto com suas notificações push e permite que você as manipule no dispositivo. Quando uma notificação abre o aplicativo, você pode analisar a mensagem remota da notificação e verificar se ela contém um URL de link direto.
const notif = await Ometria . parseNotification ( remoteMessage ) ;
if ( notif ?. deepLinkActionUrl ) {
Ometria . trackDeepLinkOpenedEvent ( notif . deepLinkActionUrl , 'Browser' ) ;
Linking . openURL ( notif . deepLinkActionUrl ) ;
}
Ometria.parseNotification
retorna um objeto com tipo OmetriaNotificationData
que se parece com isto:
type OmetriaNotificationData = {
campaignType?: 'trigger; // represents automation campaigns
deepLinkActionUrl?: string;
externalCustomerId?: string;
imageUrl?: string;
sendId?: string;
tracking: { // Can be overridden / added in your automation campaign's settings
utm_medium?: string; // default is "push"
utm_source: string;
utm_campaign: string; // generated from campaign hash and title
om_campagin: string; // generated from campaign hash, campaign version and node id
[key: string]: string | undefined; // additional tracking data you add
};
};
A Extensão do Serviço de Notificação tem duas finalidades:
Para adicionar a extensão, vá para Arquivo > Novo > Destino e selecione Extensão do serviço de notificação > Próximo .
Um novo item é exibido na sua lista de alvos:
Em seguida, certifique-se de que o SDK do Ometria também esteja disponível para esse novo destino, atualizando seu podfile para incluir o destino recém-adicionado e especifique o Ometria como uma dependência.
# move this line before the App target
pod 'GoogleUtilities' , : modular_headers => true
use_frameworks! :linkage => :static
target 'sampleApp' do
# Pods for sampleApp
end
# Add the following lines
target 'NotificationService' do
use_frameworks! :linkage => :static
pod 'Ometria'
end
Neste ponto, o aplicativo principal e a extensão funcionam como duas entidades separadas, sendo o único componente compartilhado o código. Para que a extensão obtenha acesso de leitura e gravação aos dados relevantes para o SDK, ela precisa estar no mesmo grupo de aplicativos que o destino principal. Isso permitirá que o destino principal e a extensão compartilhem dados.
No navegador do projeto, selecione seu projeto, vá para Assinatura e recursos e selecione + Capacidade no canto superior esquerdo.
Depois de fazer isso, uma nova seção será exibida abaixo de Assinatura. Isso permitirá que você adicione um novo grupo de aplicativos. Certifique-se de selecionar um identificador relevante (por exemplo, group.[BUNDLE_IDENTIFIER]
) e retenha o valor, pois você precisará dele ao instanciar o Ometria. Repita o processo para o destino da Extensão do Serviço de Notificação e você estará pronto.
Para permitir que o Ometria intercepte notificações, abra a classe NotificationService
que foi criada automaticamente junto com a extensão e substitua o conteúdo pelo seguinte:
import UserNotifications
import Ometria
class NotificationService : OmetriaNotificationServiceExtension {
override func instantiateOmetria ( ) -> Ometria ? {
Ometria . initializeForExtension ( appGroupIdentifier : " group.[BUNDLE_IDENTIFIER] " )
}
}
Finalmente, você deve usar o identificador de grupo de aplicativos ao inicializar o Ometria no aplicativo ReactNative.
import Ometria from 'react-native-ometria' ;
// Ometria init
await Ometria . initializeWithApiToken ( 'API_KEY' , {
notificationChannelName : 'Example Channel Name' , // optional, only for Android
appGroupIdentifier : 'group.[BUNDLE_IDENTIFIER]' , // optional, only for iOS
} ) ;
Agora seu aplicativo emitirá um evento notificationReceived
sempre que uma notificação for recebida no estado de encerramento e você poderá exibir notificações de conteúdo rico no iOS.
Para obter um exemplo completo e um caso de uso, consulte o aplicativo Sample.
Ometria envia e-mails personalizados com URLs que apontam para o seu site. Para abrir esses URLs dentro do seu aplicativo, siga este guia.
Primeiro, certifique-se de ter um domínio de rastreamento Ometria habilitado para SSL configurado para sua conta. Você pode já ter isso para suas campanhas de e-mail, mas se não tiver, peça ao seu contato da Ometria para configurar um, e ele deverá fornecer o domínio.
Siga a documentação do ios para domínios associados, crie um arquivo apple-app-site-association e envie-o para seu contato Ometria.
A etapa final é processar os URLs no seu aplicativo e levar o usuário às seções apropriadas do aplicativo. Observe que você precisa implementar o mapeamento entre as URLs do seu site e as telas do seu aplicativo.
Consulte também Vinculando notificações push a telas de aplicativos.
Se você estiver lidando com URLs normais que apontam para o seu site, poderá decompô-lo em diferentes componentes e parâmetros de caminho. Isso permitirá que você obtenha as informações necessárias para navegar até a tela correta em seu aplicativo.
Para que o ReactNative identifique que um URL está abrindo o aplicativo, você precisa ajustar o arquivo AppDelegate.m da pasta ios, adicione o seguinte código a AppDelegate.m em ./ios/ProjectName
- ( BOOL )application:(UIApplication *)application openURL:( NSURL *)url
sourceApplication:( NSString *)sourceApplication annotation:( id )annotation
{
return [RCTLinkingManager application: application openURL: url
sourceApplication: sourceApplication annotation: annotation];
}
// Only if your app is using [Universal Links](https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html).
- ( BOOL )application:(UIApplication *)application continueUserActivity:( NSUserActivity *)userActivity
restorationHandler:( void (^)( NSArray * _Nullable))restorationHandler
{
return [RCTLinkingManager application: application
continueUserActivity: userActivity
restorationHandler: restorationHandler];
}
Para Android, adicione o seguinte:
< intent-filter android : autoVerify = " true " >
< action android : name = " android.intent.action.VIEW " />
< category android : name = " android.intent.category.DEFAULT " />
< category android : name = " android.intent.category.BROWSABLE " />
< data
android : host = " clickom.omdemo.net "
android : scheme = " https " />
</ intent-filter >
para /android/app/src/main/AndroidManifest.xml
No entanto, os e-mails do Ometria contêm URLs de rastreamento ofuscados e precisam ser convertidos de volta para o URL original, apontando para o seu site, antes de você