Solução de problemas
Comece ativando os logs de depuração: eles dizem exatamente o que o SDK fez e por quê. Veja Logs de depuração.
Procure a tag Unolink no Logcat, ou [Unolink] no console do Xcode.
Nada aparece no painel
- Ative Incluir dispositivos de teste em Funil ou Jornadas. Builds de depuração são dispositivos de teste e ficam ocultas por padrão.
- Confira se o
configureroda. Ele precisa ser chamado uma vez, cedo:Application.onCreate()no Android, oinit()do App@mainno iOS, o layout raiz no React Native,main()no Flutter. - Envie os eventos agora. Os eventos são enviados a cada 15 segundos enquanto o app está aberto, e quando ele vai para segundo plano.
Aperte o botão de início, ou chame
flush(). - Confira a rede. Sem internet, os eventos esperam no dispositivo e são enviados quando a conexão volta.
"Chave do SDK inválida (401)"
A chave está errada, é de outro app ou foi revogada. Copie-a de novo em seu app → Configurações → Chaves do SDK. Se você não a salvou quando a criou, crie uma nova chave: a chave completa só é exibida uma vez. Depois de um 401, nada é enviado até a próxima abertura.
"O SDK não está incluído no plano do Unolink deste app (403)"
O SDK faz parte do plano Pro ou superior. O dono do app precisa fazer upgrade em Cobrança. Até lá, o SDK não envia nada e não deixa nada na fila.
Alguns eventos estão faltando
- Nome inválido. Os nomes de eventos começam com uma letra e usam só letras, dígitos,
_e., com no máximo 64 caracteres. Os inválidos são rejeitados e registrados no log. - Propriedades demais. No máximo 20 por evento, strings de até 200 caracteres, 4 KB no total.
- IDs de tela de onboarding inválidos.
stepeflowseguem a mesma regra dos nomes de eventos:how_heard, nãohow-heard. Em builds de desenvolvimento, o SDK de React Native (0.3.1 ou posterior) avisa no console. - Muito acima da cota mensal. Nada é bloqueado ao atingir sua cota. Só depois do dobro da cota seus próprios eventos
(personalizados) são rejeitados, com
quota_exceeded; os eventos padrão do funil são sempre registrados. - Chamado antes do
configure. Os SDKs nativos de iOS e Android ignoram chamadas feitas antes doconfigure. O React Native (0.3.1 ou posterior) as guarda e as envia logo depois dele. - Rastreamento desativado.
setEnabled(false)interrompe o rastreamento e é lembrado entre aberturas.
Compras ou testes grátis contados duas vezes, ou nenhuma
- RevenueCat conectado? Então o RevenueCat informa testes grátis e compras, e as chamadas do app a
purchaseetrialStartedsão ignoradas. Remova-as se quiser; elas não causam problema. - As compras do RevenueCat não se juntam à instalação? Informe o próprio app user ID do RevenueCat. Com o SDK
0.3.2 ou posterior,
connectRevenueCato mantém atualizado (veja RevenueCat). Senão, chamesetUserIdcom ele (Purchases.shared.appUserID,Purchases.sharedInstance.appUserID,Purchases.getAppUserID()ouPurchases.appUserID) depois dePurchases.configure, depois de cadaPurchases.logInePurchases.logOut, e em toda abertura. Uma compra que chega antes de o app informar seu usuário espera, e se junta assim que ele informar. Todo ID de usuário que uma instalação já informou conta, então um convidado que compra e depois cria uma conta mantém a compra. Se o app informar só o ID da conta, a compra de um convidado se junta apenas com o próximo evento do RevenueCat para esse cliente (por exemplo, a primeira renovação). Veja Convidados e contas. - Sem RevenueCat? Chame
purchasecom o preço como número decimal e um código de moeda de três letras, depois que a loja confirmar a compra.
Nenhum deep link adiado
- No iPhone, isso é esperado. A Apple não tem referrer de instalação, então deep links adiados são só para Android.
- Instale pelo Google Play. Instalações por sideload e pelo Android Studio não têm referrer do Play. Use o teste interno,
ou
debugInstallReferrerem uma build de depuração. Veja Testes. - Só na primeira abertura. O referrer é lido uma vez por instalação. Desinstale o app, ou limpe os dados dele, para testar de novo.
- Defina um deep link no link. No painel, Links → ⋯ → Editar → Deep link. Um link sem deep link ainda recebe o crédito da instalação, mas não há nada para abrir.
- Registre o listener. Ele pode ser adicionado depois do
configure: um link que chegou antes continua sendo entregue. No React Native isso exige 0.3.1 ou posterior; com 0.3.0, assine logo depois doconfigure. - A tela fica depois do onboarding ou do login? O listener roda uma vez por instalação. Quando o onboarding terminar,
leia
getPendingDeferredDeepLink(), abra o link e depois chameconsumeDeferredDeepLink(). A partir da 0.3.3, o link espera até você consumi-lo, mesmo que o app seja fechado nesse meio-tempo (até 30 dias). Veja Abrir depois do onboarding. - O mesmo link abre a cada abertura do app? Chame
consumeDeferredDeepLink()depois de abri-lo.
Uma reinstalação não é atribuída ao link
Cada clique é atribuído a uma única instalação. Depois de uma reinstalação, o Google Play pode entregar o mesmo referrer ao app de novo, e essa segunda instalação não é atribuída ao link uma segunda vez. O Unolink nunca chuta.
React Native e Flutter
- O Expo Go não funciona. O SDK tem código nativo: faça uma development build (
npx expo prebuildou EAS Build). - "Native module not found" ou
MissingPluginException. Recompile o app depois de instalar. Um reload do JavaScript ou um hot restart do Flutter não carrega código nativo novo. - A build do iOS falha depois de instalar. Rode
pod installna pastaios(React Native puro) e compile de novo.
Ainda com problemas?
Envie um e-mail para [email protected] com o nome do seu app, a plataforma, a versão do SDK e o log de depuração de uma abertura do app.