Mentre la creazione della tua app per fornire un'esperienza straordinaria è incredibilmente importante, l'interazione con utenti nuovi ed esistenti è ancora più importante per il successo a lungo termine della tua app. In questo tutorial imparerai come utilizzare Firebase per abilitare Google Cloud Messaging e inviare notifiche alla tua app, nonché come consentire agli utenti di condividere la tua app con i loro contatti che utilizzano dispositivi Android o iOS.
Questo tutorial presumerà che tu abbia già impostato un progetto per Firebase e abbia accesso alla Firebase Console. Per sapere come iniziare con Firebase per Android, consulta uno dei nostri altri tutorial:
Le notifiche sono uno dei modi più semplici per comunicare agli utenti nuovi eventi o funzioni nella tua app e indurli a riaprire l'app. Utilizzando Firebase, puoi inviare notifiche a tutti gli utenti o ai segmenti della tua base di utenti, consentendo di personalizzare ciò che i tuoi utenti ricevono e stimolare il loro interesse.
La visualizzazione delle notifiche quando l'app è in background è incredibilmente facile, poiché viene gestita automaticamente dalla libreria di Firebase Messaging. Nella tua applicazione, dovrai includere la libreria con la seguente riga in dipendenze
nodo del tuo build.gradle file, quindi installare l'app su un dispositivo.
compila "com.google.firebase: firebase-messaging: 9.8.0"
Successivamente, devi accedere alla console di Firebase e selezionare il notifiche sezione nel pannello di navigazione sinistro.
Una volta nella sezione corretta, dovresti vedere una schermata che ti chiede di farlo invia il tuo primo messaggio.
Dopo aver fatto clic sul pulsante blu, verrai indirizzato a un modulo che ti consentirà di aggiungere contenuti ai messaggi e selezionare i gruppi che dovrebbero ricevere il messaggio. Utilizzando questo modulo, è possibile specificare le condizioni booleane che un dispositivo o utente deve soddisfare, come la posizione geografica o altri dati raccolti, per ricevere la notifica.
Una volta inviato il messaggio, dovrebbe apparire una notifica sui dispositivi dell'utente.
Una cosa da notare è che le notifiche non verranno visualizzate per un utente se sono già nella tua app. Per ricevere notifiche in questa situazione, è necessario implementare a Servizio
quello si estende FirebaseMessagingService
.
public class NotificationService estende FirebaseMessagingService @Override public void onMessageReceived (RemoteMessage remoteMessage) super.onMessageReceived (remoteMessage);
Dovrai anche includere questo Servizio
nel tuo AndroidManifest.xml file.
Ora che hai il quadro generale insieme, è tempo di rimpolpare onMessageReceived
nel tuo FirebaseMessagingService
classe. Lo scopo principale di questo metodo è quello di prendere i dati inviati con il RemoteMessage
oggetto e creare a Notifica
in base a ciò che ricevi.
Ci sono molte informazioni che possono essere tramandate con il RemoteMessage
. Tuttavia, la maggior parte delle opzioni sono disponibili solo se si utilizza l'API back-end Firebase, anziché la console. Dalla console Firebase, puoi impostare un titolo, un corpo del messaggio e coppie chiave / valore personalizzate.
Registrazione di tutti i dati disponibili da a RemoteMessage
può essere fatto in questo modo:
per (Map.Entryvoce: remoteMessage.getData (). entrySet ()) Log.e ("Test", "Key =" + entry.getKey () + ", Value =" + entry.getValue ()); Log.e ("TutsPlus", "collapsekey:" + remoteMessage.getCollapseKey ()); Log.e ("TutsPlus", "da:" + remoteMessage.getFrom ()); Log.e ("TutsPlus", "id messaggio:" + remoteMessage.getMessageId ()); Log.e ("TutsPlus", "tipo messaggio ::" + remoteMessage.getMessageType ()); Log.e ("TutsPlus", "to:" + remoteMessage.getTo ()); Log.e ("TutsPlus", "tempo di invio:" + remoteMessage.getSentTime ()); Log.e ("TutsPlus", "ttl:" + remoteMessage.getTtl ()); Log.e ("TutsPlus", "title:" + remoteMessage.getNotification (). GetTitle ()); Log.e ("TutsPlus", "body:" + remoteMessage.getNotification (). GetBody ()); Log.e ("TutsPlus", "click action:" + remoteMessage.getNotification (). GetClickAction ()); Log.e ("TutsPlus", "color:" + remoteMessage.getNotification (). GetColor ()); Log.e ("TutsPlus", "icona:" + remoteMessage.getNotification (). GetIcon ());
Che, a sua volta, produrrà i seguenti messaggi di log.
E / TutsPlus: Chiave = custom_data_key, Valore = valore_unitario E / TutsPlus: collapsekey: com.tutsplus.tutsplusfirebasenotification E / TutsPlus: da: 1044252370931 E / TutsPlus: id messaggio: 0: 1478812920837872% ba5f8433ba5f8433 E / TutsPlus: tipo messaggio :: null E / TutsPlus: a: null E / TutsPlus: tempo di invio: 1478812919847 E / TutsPlus: ttl: 0 E / TutsPlus: titolo: Titolo personalizzato E / TutsPlus: corpo: Testo messaggio E / TutsPlus: clic azione: null E / TutsPlus: color: null E / TutsPlus: icon: null
Una volta che sai quali informazioni sono disponibili e come vuoi gestirle, puoi creare e visualizzare una notifica per i tuoi utenti.
NotificationCompat.Builder builder = new NotificationCompat.Builder (this); builder.setContentTitle (remoteMessage.getNotification () getTitle ().); builder.setSmallIcon (R.mipmap.ic_launcher); builder.setContentText (remoteMessage.getNotification () getBody ().); NotificationManagerCompat.from (this) .notify (0, builder.build ());
E questo è tutto! Ora dovresti essere in grado di configurare un'app per Android per inviare e ricevere notifiche dalla console di Firebase.
Ottenere nuovi utenti sulla tua app può essere una sfida scoraggiante, ma il passaparola è un ottimo modo per far girare la palla. Utilizzando Firebase, puoi aggiungere il widget App invita alla tua applicazione, che consentirà ai tuoi utenti di condividere la tua app via email o SMS con altri utenti Android o iOS.
Prima di poter iniziare a utilizzare questa funzione, è necessario importare il pacchetto nel progetto aggiungendo la seguente riga al file dipendenze
nodo del tuo build.gradle file.
compila 'com.google.firebase: firebase-invites: 9.8.0'
Una volta sincronizzato il tuo progetto, sarai in grado di crearne uno nuovo Intento
usando il AppInviteInvitation.IntentBuilder
classe, che avvierà una schermata che consente agli utenti di selezionare i contatti da invitare all'app. Questo builder offre varie opzioni per personalizzare la schermata di invito all'applicazione:
setMessage
: Questo imposterà il messaggio che gli utenti vedono e possono inviare ai contatti tramite SMS o e-mail. Questo non può essere più lungo di 100 caratteri.setCustomImage
: Utilizzando questo metodo, è possibile fornire un URI a un'immagine personalizzata che verrà visualizzata nella schermata di invito e invitare e-mail.setCallToActionText
: Questo metodo imposta il testo per il pulsante di installazione nelle e-mail. Questo ha un limite di 32 caratteri.setDeepLink
: Consente di fornire metadati per l'invito, che possono essere ricevuti al momento dell'installazione per intraprendere azioni specifiche per l'utente appena invitato.setEmailHtmlContent
: Consente di eseguire l'override setMessage
, setCustomImage
, e setCallToActionText
per creare un'e-mail in formato HTML personalizzato da inviare a potenziali nuovi utenti.setEmailSubject
: Obbligatorio se setEmailHtmlContent
viene usato. Come suggerisce il nome, questo imposterà l'oggetto per la tua email personalizzata.setOtherPlatformsTargetApplication
: Una delle opzioni più interessanti, questo metodo ti consentirà di associare l'ID dell'app client Firebase per una versione iOS della tua app, consentendo agli utenti iOS di installare la versione corretta se condivisa da un utente Android.Una volta che hai creato il tuo Intento
, puoi lanciarlo con startSubActivity
essere avvisati quando l'utente è tornato dall'invitare altri.
Intent intent = new AppInviteInvitation.IntentBuilder (getString (R.string.invitation_title)) .setMessage (getString (R.string.invitation_message)) .setCustomImage (Uri.parse (getString (R.string.invitation_custom_image))) .setCallToActionText (getString (R.string.invitation_cta)) .setDeepLink (Uri.parse ("/ link")) .setOtherPlatformsTargetApplication (AppInviteInvitation.IntentBuilder.PlatformMode.PROJECT_PLATFORM_IOS, getString (R.string.ios_app_client_id)) .build ();
Ora che sei in grado di invitare altri utenti alla tua app, dedichiamoci un attimo a concentrarci sulle opzioni di deep linking. Quando crei il tuo Intento
, sei in grado di aggiungere un URI
come un legame profondo. Quando un utente riceve l'invito su Android, puoi utilizzare Google Play Services e l'API AppInvite per intercettarlo URI
ed esegui un'azione personalizzata, come la presentazione di una schermata di benvenuto, per il tuo nuovo utente.
booleano autodeeplink = true; mGoogleApiClient = new GoogleApiClient.Builder (this) .addApi (AppInvite.API) .enableAutoManage (this, this) .build (); AppInvite.AppInviteApi.getInvitation (mGoogleApiClient, this, autodeeplink) .setResultCallback (nuovo ResultCallback() @Override public void onResult (AppInviteInvitationResult result) if (result.getStatus (). IsSuccess ()) // Ottieni informazioni sull'intento Intent intent = result.getInvitationIntent (); String deepLink = AppInviteReferral.getDeepLink (intent); String invitationId = AppInviteReferral.getInvitationId (intent); );
Noterai che abbiamo creato un booleano
di nome autodeeplink
. Quando è impostato su vero
, il sistema Android gestirà automaticamente il ricevuto URI
attraverso i filtri nel tuo AndroidManifest.xml file. Se è impostato su falso
, puoi utilizzare l'API AppInvite per estrarre informazioni dall'invito ed eseguire l'azione personalizzata.
In questo tutorial hai imparato come implementare le notifiche di Firebase nelle tue app Android e come consentire agli utenti di condividere facilmente la tua app con i loro contatti. Capire cosa è disponibile in Firebase e come implementare le funzionalità generali ti aiuterà a creare rapidamente app che piacciono alle persone.
Per ulteriori informazioni sullo sviluppo di Firebase o Android in generale, consulta alcuni dei nostri altri corsi e tutorial qui su Envato Tuts+.