private void onInviteClicked() {
Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title))
.setMessage(getString(R.string.invitation_message))
.setDeepLink(Uri.parse(getString(R.string.invitation_deep_link)))
.setCustomImage(Uri.parse(getString(R.string.invitation_custom_image)))
.setCallToActionText(getString(R.string.invitation_cta))
.build();
startActivityForResult(intent, REQUEST_INVITE);
}
L'avvio dell'intenzione AppInviteInvitation
apre il selettore dei contatti in cui l'utente seleziona i contatti da invitare. Gli inviti vengono inviati tramite e-mail o SMS. Dopo che l'utente sceglie i contatti e invia l'invito, la vostra applicazione riceve un callback per onActivityResult
:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult: requestCode=" + requestCode + ", resultCode=" + resultCode);
if (requestCode == REQUEST_INVITE) {
if (resultCode == RESULT_OK) {
// Get the invitation IDs of all sent messages
String[] ids = AppInviteInvitation.getInvitationIds(resultCode, data);
for (String id : ids) {
Log.d(TAG, "onActivityResult: sent invitation " + id);
}
} else {
// Sending failed or it was canceled, show failure message to the user
// ...
}
}
}
Ricevi inviti
Quando un utente riceve un invito, se l'utente non ha ancora installato l'applicazione, possono scegli di installare l'app da Google Play Store. Quindi, dopo aver installato l'app o se l'app è stata già installata, l'app viene avviata e riceve l'URL al suo contenuto, se ne è stato inviato uno. Per ricevere l'URL al contenuto del vostro app, chiamare il metodo getInvitation
:
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
// Create an auto-managed GoogleApiClient with access to App Invites.
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(AppInvite.API)
.enableAutoManage(this, this)
.build();
// Check for App Invite invitations and launch deep-link activity if possible.
// Requires that an Activity is registered in AndroidManifest.xml to handle
// deep-link URLs.
boolean autoLaunchDeepLink = true;
AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)
.setResultCallback(
new ResultCallback<AppInviteInvitationResult>() {
@Override
public void onResult(AppInviteInvitationResult result) {
Log.d(TAG, "getInvitation:onResult:" + result.getStatus());
if (result.getStatus().isSuccess()) {
// Extract information from the intent
Intent intent = result.getInvitationIntent();
String deepLink = AppInviteReferral.getDeepLink(intent);
String invitationId = AppInviteReferral.getInvitationId(intent);
// Because autoLaunchDeepLink = true we don't have to do anything
// here, but we could set that to false and manually choose
// an Activity to launch to handle the deep link here.
// ...
}
}
});
}
IMPORTANTE: codice sopra richiede un contatto con GoogleApiClientAppInvite.API
abilitato.
Se il parametro launchDeepLink
è true
, l'app si riavvia automaticamente con l'URL del contenuto dell'app, che l'app può gestire normalmente. Se il parametro launchDeepLink
è false
, è possibile avviare manualmente l'intento restituito da getInvitationIntent per gestire l'URL quando appropriato.
Ecco ulteriori informazioni su hot a Send and Receive Firebase Invites from Your Android App.
link Testing in Android Studio
Inoltre è possibile utilizzare la funzione Deep Link Test per Studio Android caratteristica versione 2.x per verificare che la vostra applicazione può essere lanciato con un URL specificato. Per configurare questa opzione, selezionare prima Esegui> Modifica configurazioni dall'applicazione Android > Generale. Per testare un URL HTTP, selezionare il collegamento diretto nelle Opzioni di avvio e quindi immettere l'URL da testare. Se il collegamento ha esito positivo, l'app dovrebbe essere avviata nell'emulatore o sul dispositivo connesso. In caso contrario, viene visualizzato un messaggio di errore nella finestra Esegui.
Debug Android Ponte
prova che i collegamenti aprire la vostra applicazione utilizzando il ponte di debug di Android, dove {URL}
rappresenta l'URL HTTP dichiarato nel file manifest.
adb shell am start -a android.intent.action.VIEW -d "{URL}" com.example.android
A link non v'è più informazioni su come verificare l'implementazione.
Ho provato ad utilizzare shell adb, come testare un referrer di installazione, ma non sembra funzionare. Per riferimento: 'am broadcast -a com.android.vending.INSTALL_REFERRER -n {com.your.package} /com.tune.TuneTracker --es referrer" test_referrer = test "' – staackuser2
so che questo non è un commento utile , più di un rant: ho trovato che i test per Firebase sono piuttosto schifosi come in: un ripensamento totale ....spero che migliorerà col tempo, visto che hanno fatto quei fantastici codelab, ecc. (che ammetto è stato davvero fantastico) – Creos
@Creos d'accordo. ero un po 'scioccato per la mancanza di documentazione ed esempi. Ho visto quelli su Github, ma questa domanda è un esempio di un caso di uso effettivo che dicono di supportare, ma in realtà non dice come farlo. – staackuser2