2016-06-06 12 views
7

Ho un problema che il collegamento dinamico Firebase viene riavviato al riavvio dell'app Android. La seguente sequenza produce il problema:Link dinamici Firebase gestiti due volte

  1. clic l'URL del profondo legame
  2. l'applicazione viene aperta la vista puntato dal profondo legame (come previsto)
  3. chiudere l'applicazione (completamente)
  4. aperto l'applicazione dall'icona
  5. l'applicazione viene aperta la vista puntato dal profondo legame (anche se non dovrebbe)
  6. dopo che funziona benissimo

Sto usando le ultime (9.0.2) librerie. Il codice è praticamente come negli esempi (ad esempio: https://firebase.google.com/docs/dynamic-links/android#add-an-intent-filter-for-deep-links), autoLaunchDeepLink è falso.

  • ho notato che v'è stato un bug che causa questo, ma devono essere fissati con la release corrente: https://github.com/googlesamples/google-services/issues/141

  • Ho cercato una soluzione alternativa chiamando AppInvite.AppInviteApi.getInvitation due volte, secondo le istruzioni nel rapporto errori github. Nessun successo.

  • In onCreato sto verificando che savedInstance sia null e che controlli il deep link solo se lo è.

  • Sto controllando il collegamento diretto anche in onNewIntent per gestirlo mentre l'app è in esecuzione, tuttavia questo non viene chiamato quando si verifica il problema.

  • Nel mio manifest, il filtro intent con il protocollo e l'host specifici sono inclusi solo nell'attività principale. Il protocollo viene utilizzato anche in altri filtri in altre attività, ma ho provato anche a utilizzare protocolli diversi in quelli senza effetto. Solo l'attività principale utilizza AppInvite.AppInviteApi.getInvitation per ottenere l'intento. Il problema si verifica anche se rimuovo altri filtri intent da tutte le attività.

Qualche idea cosa potrebbe essere sbagliato o cosa dovrei ancora controllare?

risposta

4

È necessario chiamare getInvitation() sia nella propria attività di avvio che nell'attività dichiarata per gestire il collegamento dinamico.

Ma l'attività che gestisce il collegamento dinamico, è necessario passare nulla invece di passare l'attività come secondo parametro di getInvitation(), come questo AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, null, autoLaunchDeepLink).

+0

Funziona, grazie. Tuttavia, nel mio caso l'attività di avvio e l'attività che ho dichiarato di gestire il collegamento dinamico sono le stesse, quindi questo è veramente lo stesso di "Ho provato una soluzione alternativa chiamando AppInvite.AppInviteApi.getInvitation due volte, come indicato nel rapporto di errore di github . Nessun successo.". Ho appena perso il null come secondo parametro. – diidu

+3

Quindi sembra che il bug non sia stato risolto dopo tutto. La soluzione alternativa è ancora necessaria. – diidu