Android-pushmeldingen verzenden met Firebase Cloud Messaging

Schrijver: Louise Ward
Datum Van Creatie: 4 Februari 2021
Updatedatum: 1 Juli- 2024
Anonim
Android-pushmeldingen verzenden met Firebase Cloud Messaging - Apps
Android-pushmeldingen verzenden met Firebase Cloud Messaging - Apps

Inhoud


Hoewel het buiten het bereik van deze zelfstudie valt, kunt u FCM ook gebruiken voor upstream-meldingen, waarbij FCM een ontvangt van de clienttoepassing, of om uw app op de hoogte te stellen wanneer er nieuwe gegevens beschikbaar zijn om te downloaden. Op deze manier kunt u ervoor zorgen dat de communicatie tussen uw app-server en de client-app alleen plaatsvindt als dat nodig is, wat veel efficiënter is dan de client-app die regelmatig contact maakt met de server. Mogelijk zijn er nieuwe gegevens beschikbaar.

Omdat FCM onderdeel is van Firebase, speelt het ook mooi samen met andere Firebase-services. Nadat u de FCM-essentials eenmaal onder de knie heeft, wilt u misschien A / B-testen gebruiken om te bepalen welke meldingen het meest effectief zijn, of Firebase Predictions gebruiken om krachtige machine learning toe te passen op alle analysegegevens die zijn gegenereerd met uw verschillende FCM-campagnes.

FCM ondersteunt twee soorten s:

  • Kennisgeving s. De clienttoepassing zal zich anders gedragen, afhankelijk van of deze op de achtergrond of op de voorgrond staat wanneer deze de FCM ontvangt. Als uw app op de achtergrond staat, verwerkt de Firebase SDK deze automatisch en geeft deze weer als een melding in het systeemvak van het apparaat. Aangezien het Android-systeem de melding voor u bouwt, is dit een van de gemakkelijkste manieren om pushmeldingen naar uw gebruikers te verzenden. Als uw app een FCM ontvangt terwijl deze op de voorgrond staat, wordt het systeem gebruikt zal niet deze melding automatisch verwerken, zodat u de callback in uw app onReceived () kunt verwerken. We zullen onReceived () later in deze zelfstudie verkennen, maar houd er voorlopig rekening mee dat als uw app een tijdje op de voorgrond staat, deze standaard niet wordt weergegeven aan de gebruiker.
  • Gegevens s. In tegenstelling tot meldingen kunt u gegevens gebruiken om aangepaste gegevenselementen naar de clienttoepassing te verzenden. FCM stelt echter een 4KB-limiet op deze gegevens, dus als uw payload groter is dan 4KB, moet u de extra gegevens ophalen met WorkManager of de JobScheduler API.

In deze tutorial zullen we ons richten op meldingen.


Hoe zit het met Google Cloud Messaging?

Als u de Google Cloud Messaging (GCM) -server en client-API's gebruikt, is er slecht nieuws: deze service is al verouderd en Google is van plan de "meeste" GCM-services in april 2019 uit te schakelen. Als u nog steeds met GCM, moet u nu beginnen met het migreren van uw projecten naar FCM en moet u uw migratie vóór april 2019 hebben voltooid.

Firebase toevoegen aan uw Android-project

Laten we eens kijken hoe eenvoudig het is om basis-FCM-ondersteuning aan uw app toe te voegen en deze vervolgens te gebruiken om pushmeldingen naar uw gebruikers te verzenden.

Aangezien FCM een Firebase-service is, moet u Firebase aan uw app toevoegen:

  • Ga naar de Firebase-console.
  • Selecteer "Project toevoegen" en geef uw project een naam.
  • Lees de algemene voorwaarden. Als u verder wilt gaan, selecteert u 'Ik accepteer ...' gevolgd door 'Project maken'.
  • Selecteer "Firebase toevoegen aan uw Android-app."
  • Voer de pakketnaam van uw project in en klik vervolgens op 'App registreren'.
  • Selecteer 'Download google-services.json'.
  • Sleep in Android Studio het bestand google-services.json naar de map 'app' van uw project.
  • Open uw build.gradle-bestand op projectniveau en voeg het volgende toe:

classpath com.google.gms: google-services: 4.0.1

  • Open uw build.gradle-bestand op app-niveau en voeg de Google-servicesplug-in toe, plus de afhankelijkheden voor Firebase Core en FCM:

// Voeg de Google-services plug-in toe // pas plug-in toe: com.google.gms.google-services ...… ... afhankelijkheden {implementatie fileTree (dir: libs, include:) // Voeg Firebase Core toe // implementatie com.google.firebase: firebase-core: 16.0.1 // FCM toevoegen // implementatie com.google.firebase: firebase-messaging: 17.3.4

  • Synchroniseer uw wijzigingen wanneer u daarom wordt gevraagd.
  • Vervolgens moet u de Firebase-console laten weten dat u Firebase met succes aan uw project hebt toegevoegd. Installeer uw app op een fysieke Android-smartphone of -tablet of een Android Virtual Device (AVD).
  • Terug in de Firebase-console, selecteer "App uitvoeren om installatie te verifiëren."
  • Zodra Firebase uw app heeft gedetecteerd, ziet u een "Gefeliciteerd". Selecteer 'Doorgaan naar de console'.

Uw eerste pushmelding verzenden met Firebase

En dat is het! U kunt nu een push-melding naar uw gebruikers verzenden en die melding verschijnt in het systeemvak van het apparaat (laten we aannemen dat uw app niet op de voorgrond staat wanneer de app wordt afgeleverd).


U maakt FCM-meldingen met behulp van de Notifications Composer, die beschikbaar is via de Firebase-console:

  • Zorg ervoor dat uw app op de achtergrond is geïnstalleerd en actief is en dat uw apparaat een actieve internetverbinding heeft.
  • Selecteer in de Firebase-console "Cloud Messaging" in het menu aan de linkerkant.

  • Selecteer 'Verstuur je eerste'.
  • Geef uw een titel en wat hoofdtekst en klik vervolgens op "Volgende".

  • Open de vervolgkeuzelijst "App selecteren" en kies uw app in de lijst. Dit gedeelte bevat ook enkele geavanceerde opties die u kunt gebruiken om gerichte meldingen te maken, op basis van factoren zoals de app-versie, de landinstelling van het apparaat en de laatste keer dat de gebruiker uw app heeft gebruikt. We gebruiken deze opties niet in onze testmelding, maar als u wilt zien wat er beschikbaar is, selecteert u "en ..." en bekijkt u de vervolgkeuzelijst.

  • Als u klaar bent met het bewerken van dit gedeelte, klikt u op "Volgende".
  • Ervan uitgaande dat u dit onmiddellijk wilt verzenden, opent u de vervolgkeuzelijst 'Verzenden naar in aanmerking komende gebruikers' en selecteert u 'Nu'.
  • Klik rechtsonder in het scherm op 'Publiceren'.
  • Controleer alle informatie in de volgende pop-up en selecteer 'Publiceren' als u wilt doorgaan.

Na enkele ogenblikken moeten alle clientapparaten waarop u zich richt deze melding in hun systeemvak ontvangen.

Meestal worden FCM-meldingen onmiddellijk bezorgd, maar af en toe kan het een paar minuten duren voordat je aankomt, dus raak niet in paniek als je melding vertraagd is.

Bepaalde doelen stellen: gebeurtenissen voor het omzetten van meldingen

Wanneer u een melding maakt, heeft u meestal een doel voor ogen - of dat nu gebruikers terug naar uw app drijft, hen overtuigt om te spetteren op een in-app aankoop, of gewoon uw melding opent.

U kunt een doel toewijzen aan uw melding met behulp van de Notification Composer en vervolgens de prestaties van die melding volgen in het FCM-rapportagedashboard.

Om een ​​doel in te stellen, klikt u om het gedeelte 'Conversiegebeurtenissen' van de Navigation Composer uit te vouwen, opent u de bijbehorende vervolgkeuzelijst en kiest u uit de beschikbare conversiegebeurtenissen.

Was uw melding een succes?

Na het verzenden van een melding, kunt u de prestaties ervan analyseren in het FCM-rapportagedashboard, dat automatisch wordt geladen telkens wanneer u een nieuw bericht verzendt, of u hebt rechtstreeks toegang tot het dashboard.

Zelfs als u geen expliciete conversiedoelen heeft ingesteld, kunt u nog steeds meten of gebruikers op uw meldingen reageren door het aantal geleverde s te vergelijken met het aantal geopende s.

U kunt ook elke in deze lijst selecteren om de verzend-, openings- en conversiegegevens als een grafiek te bekijken. Als u conversiedoelen instelt, vindt u hier ook de statistieken met betrekking tot die doelen.

Wat als mijn app op de voorgrond staat?

FCM-meldingen gedragen zich anders, afhankelijk van de status van de clienttoepassing.

Standaard geeft uw app geen FCM's weer die deze ontvangt terwijl deze op de voorgrond staat, dus wanneer u een verzendt, is er geen garantie dat uw gebruikers daadwerkelijk zien dat.

Als u actie wilt ondernemen op de app die uw app ontvangt terwijl deze zich in de voorgrond, moet u de FirebaseMessagingService uitbreiden, de methode onReceived negeren en vervolgens de inhoud ophalen met getNotification of getData, afhankelijk van of u met gegevens of meldingen werkt, of beide.

Maak een nieuwe Java-klasse met de naam "MyFirebaseMessagingService" en voeg vervolgens het volgende toe:

openbare klasse MyFirebaseMessagingService breidt FirebaseMessagingService uit {@Override public void onReceived (Remote) {super.onReceived (remote);

U moet ook een meldingsobject maken. Dit is uw kans om uw melding aan te passen, bijvoorbeeld door het geluid te kiezen dat moet worden afgespeeld wanneer de gebruiker deze melding ontvangt, of door een aangepast meldingspictogram toe te passen. U moet ook de inhoud van de gegevens of melding ophalen, bijvoorbeeld:

NotificationCompat.Builder noticeBuilder = nieuw NotificationCompat.Builder (dit, "channel_id") .setContentTitle (remote.getNotification (). GetTitle ()) .setContentText (remote.getNotification (). GetBody ()) .setPriority (NotificationCompat.PRIORITY_DEFAULT). setStyle (nieuw NotificationCompat.BigTextStyle ()) .setSound (RingtoneManager.getDefaultUri (RingtoneManager.TYPE_NOTIFICATION)) .setSmallIcon (R.mipmap.ic_launcher) .setAutoCancel (true); NotificationManager kennisgevingManager = (NotificationManager) getSystemService (Context.NOTIFICATION_SERVICE); notificatieManager.notify (0, notificatieBuilder.build ()); }}

Nadat u uw service heeft gemaakt, vergeet dan niet om deze toe te voegen aan uw manifest:

Elke keer dat uw app een FCM ontvangt terwijl deze op de voorgrond staat, wordt deze geleverd aan de handler onReceived () en zal uw app vervolgens de door u gedefinieerde actie ondernemen, zoals het plaatsen van de melding of het bijwerken van de inhoud van uw app.

Meer boeiende meldingen: gericht op uw gebruikers

Tot nu toe hebben we dezelfde melding naar ons hele gebruikersbestand gestuurd, maar meldingen zijn veel aantrekkelijker wanneer ze op specifieke gebruikers zijn gericht.

U kunt de Notification Composer gebruiken om verschillende meldingen naar verschillende delen van uw gebruikersbestand te verzenden. Ga naar de Notification Composer en maak uw melding zoals normaal, maar klik in het gedeelte 'Doel' op 'en'. Dit geeft u toegang tot een nieuwe vervolgkeuzelijst met de volgende opties:

  • Versie. Hiermee kunt u apparaten targeten of uitsluiten die specifieke versies van uw applicatie uitvoeren. U kunt bijvoorbeeld meldingen verzenden naar mensen die de gratis versie gebruiken en hen aanmoedigen om te upgraden naar de Premium-versie van uw app.
  • Taal. U kunt deze instelling gebruiken om de verschillende talen en locaties die uw toepassing ondersteunt, te targeten of uit te sluiten, zoals het maken van meldingen die zijn afgestemd op verschillende tijdzones of talen.
  • Gebruikers publiek (en). Hiermee kunt u verschillende delen van uw doelgroep targeten of uitsluiten. U kunt deze instelling bijvoorbeeld gebruiken om mensen te verleiden die in het verleden in-app-aankopen hebben gedaan, door hen korting aan te bieden of hun aandacht te vestigen op alle geweldige nieuwe in-app-producten die u zojuist hebt uitgebracht.
  • Gebruiker eigendom. Als u Firebase Analytics heeft ingesteld, heeft u via gebruikerseigenschappen toegang tot een reeks informatie over uw doelgroep. U kunt deze eigenschappen in combinatie met FCM gebruiken om gerichte meldingen naar zeer specifieke delen van uw gebruikersbestand te sturen, zoals mensen in de leeftijd van 25-34 jaar die geïnteresseerd zijn in sport.
  • Voorspelling. Als u Firebase-voorspellingen hebt ingesteld, kunt u gebruikers targeten op basis van de waarschijnlijkheid dat ze zich de komende 7 dagen met een bepaald gedrag zullen bezighouden. Als bijvoorbeeld Voorspellingen waarschuwt dat iemand zich waarschijnlijk zal terugtrekken uit je mobiele spel, kun je FCM gebruiken om hem uit te nodigen om deel te nemen aan een nieuwe zoektocht, of om hem wat in-game valuta te sturen.
  • Laatste app-engagement. Als een gebruiker uw app al een tijdje niet heeft gestart, kunt u deze instelling gebruiken om ze een paar meldingen te sturen, gewoon om hen te herinneren aan alle geweldige inhoud die uw app te bieden heeft.
  • Eerst open. Hiermee kunt u meldingen verzenden op basis van de eerste keer dat de gebruiker uw app heeft geopend. Zo kunt u bijvoorbeeld nieuwe gebruikers helpen aan de slag te gaan door ze meldingen met nuttige tips en adviezen te sturen.

Gericht op één apparaat met registratietokens

We hebben al gezien hoe we gerichte meldingen kunnen verzenden op basis van factoren zoals de leeftijd, interesses en de laatste keer dat ze met uw app bezig waren, maar u kunt gelijk komen specifieker. In dit laatste gedeelte laat ik je zien hoe je een FCM-melding naar een kunt sturen single apparaat.

Wanneer de gebruiker uw app voor het eerst start, genereert de FCM SDK een registratietoken voor die instantie van de client-app. U kunt FirebaseInstanceId.getInstance (). GetInstanceId () gebruiken om dit registratietoken vast te leggen en vervolgens een melding naar dit specifieke token te sturen.

Merk op dat je in een real-world project meestal een token vastlegt door het naar je app-server te sturen en op te slaan met behulp van je voorkeursmethode, maar om het overzichtelijk te houden, druk ik dit token gewoon af naar Logcat van Android Studio.

Hier is mijn voltooide MainActivity:

android.support.v7.app.AppCompatActivity importeren; android.os.bundle importeren; android.support.annotation.NonNull importeren; android.util.Log importeren; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.iid.FirebaseInstanceId; import com.google.firebase.iid.InstanceIdResult; public class MainActivity breidt AppCompatActivity uit {private static final String TAG = "MainActivity"; @Override beschermde nietig onCreate (bundle saveInstanceState) {super.onCreate (saveInstanceState); setContentView (R.layout.activity_main); FirebaseInstanceId.getInstance (). GetInstanceId () .addOnCompleteListener (nieuwe OnCompleteListener() {@Override public void onComplete (@NonNull Task task) {if (! task.isSuccessful ()) {// To do // return; } // Haal het exemplaar-ID token // String token = task.getResult (). GetToken (); String msg = getString (R.string.fcm_token, token); Log.d (TAG, msg); }}); }}

Open uw bestand strings.xml en maak de stringbron "fcm_token" waarnaar we verwijzen in onze MainActivity:

FCM-token:% s

U kunt nu het unieke token van uw apparaat ophalen:

  • Installeer uw project op het verbonden Android-apparaat of AVD.
  • Open Logcat van Android Studio door het tabblad 'Logcat' te selecteren (waarbij de cursor zich in de volgende schermafbeelding bevindt).

  • Het token van uw apparaat wordt afgedrukt in het gedeelte 'Foutopsporing' van Logcat, dus open de vervolgkeuzelijst en selecteer 'Foutopsporing'.

Afhankelijk van de hoeveelheid informatie in uw Logcat, kan het moeilijk zijn om de regel te vinden die u zoekt. Als je het moeilijk hebt, voer dan een zoekopdracht uit naar het woord 'token' of probeer de app te sluiten en opnieuw te starten.

Nadat u het token heeft opgehaald, kunt u het gebruiken om een ​​pushmelding naar dit specifieke apparaat te verzenden:

  • Ga naar de Firebase-console en selecteer je project in het vervolgkeuzemenu, als je dat nog niet hebt gedaan.
  • Kies 'Cloud Messaging' in het menu aan de linkerkant.
  • Klik op de knop "Nieuwe melding".
  • Voer uw titel en tekst in, zoals normaal, maar klik vervolgens op 'Test op apparaat'.

  • Kopieer / plak uw token in het veld 'Een exemplaar toevoegen ...' en klik vervolgens op het kleine blauwe pictogram '+' dat verschijnt.
  • Schakel het bijbehorende selectievakje in.

  • Klik op 'Test'.

Deze melding verschijnt nu alleen op het beoogde clientapparaat.

Afsluiten

In dit artikel heb ik je laten zien hoe je Android-pushmeldingen kunt verzenden, Firebase Cloud Messaging kunt gebruiken en hoe je meldingen kunt maken die op verschillende delen van je gebruikersbestand zijn gericht.

Ga je FCM gebruiken in je eigen Android-projecten? Laat het ons weten in de reacties hieronder!

De Xiaomi Mi Box i een bijgewerkte verie van de Xiaomi Mi Box.Het apparaat voor mediatreaming treamt in 4K en bechikt over Android TV 8.1 met Chromecat en Google Aitant-functionaliteit.De Xiaomi Mi B...

De Xiaomi Mi CC9 Pro i nu al een paar dagen geplaagd, maar het Chinee merk heeft het apparaat vandaag formeel onthuld.We weten al dat de telefoon een 108MP penta-camera-optelling op de achterkant heef...

Deel