firebase-cloud-messagingAan de slag met firebase-cloud-berichten


Opmerkingen

Een beruchte veel voorkomende vraag is "hoe meldingen van apparaat naar apparaat te verzenden", helaas is het antwoord: dat kan niet. FCM moet worden geactiveerd om pushmeldingen te verzenden. Dat kan op 3 verschillende manieren:

  1. Direct in de Firebase-webconsole
  2. Een Firebase Functies-luisteraar instellen en vervolgens FCM activeren
  3. Een server vraagt FCM om een pushmelding te verzenden

Een pushmelding is een informatie-lading die wordt verzonden vanuit FCM. Er zijn 3 soorten pushmeldingen: notification , data , notification and data . Deze informatie kan worden weergegeven als een JSON:

  {
    "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }

Het bovenstaande voorbeeld is voor het derde type, notification en data gecombineerd. Dat is wat aan FCM wordt gevraagd om te verzenden.

  1. De console kan notification en notification met data verzenden, maar nooit alleen data
  2. Functies en elke server kunnen de 3 soorten verzenden

Het belang van de notification type is dat de aanvragen om ontvangen standaard pushes empowerment van andere teams zoals marketing om de groei toepassing verhogen door eenvoudig met behulp van de webconsole zonder verdere nodig codering naast het toevoegen van de bibliotheek om het project mogelijk te maken.

Verwar de pushmelding, het notification en de visuele melding niet, deze laatste komt overeen met een Android-klasse (meestal NotificationCompat).

Het gedrag van de push is afhankelijk van het type en als de app op de voorgrond of op de achtergrond staat. Niet op de voorgrond betekent, geminimaliseerd of gesloten.

  1. notification activeert een standaard visuele melding als de app niet op de voorgrond staat , deze melding kan worden aangepast in het manifest, zie documentatie . Als de app op de voorgrond staat, moeten we het gedrag in de methode onMessageReceived aanpassen.
  2. data moet altijd worden aangepast.
  3. Gecombineerde notification en data als de app niet op de voorgrond staat, activeert standaard visuele melding en data is beschikbaar wanneer de gebruiker klikt. Omdat de Launcher Activity wordt geactiveerd wanneer op de visuele melding wordt geklikt, moet je letterlijk getIntent().getStringExtra("yourKey"); in die activiteit om de gegevens te krijgen. Als de app actief is (op de voorgrond), moet u het gedrag in de methode onMessageReceived aanpassen en krijgt u direct toegang tot de data .

Om de informatie-lading te krijgen, moet je dit doen binnen de methode onMessageReceived , daar is het enige beschikbare argument het bericht:

  1. Om de notification te krijgen moet je remoteMessage.getNotification() dan kun je de body of titel krijgen met de bijbehorende methoden
  2. Om de data te krijgen, moet u remoteMessage.getData().get("yourKey") .

Is een goed idee om elke niet-nulverificatie toe te voegen, er zullen verschillende soorten meldingen binnenkomen in geavanceerde apps. Een goede strategie is om te controleren of de notification en de data niet ongeldig zijn. Een consequente strategie zal nuttig zijn om altijd gebruiken een type sleutel in het data mededelingen om een aantal flow control doen.

Om data te verzenden vanaf de Firebase-webconsole, moeten de geavanceerde opties worden geopend.

De notification zijn beperkt en worden aangegeven in de documentatie. De waarden in elk type kunnen alleen String zijn .

Als u problemen ondervindt bij het vinden van documentatie in Firebase, gaat u naar de onderkant van de pagina en wijzigt u de taal in "Engels". Documentaties zijn in sommige andere talen dunner .

Installatie of instellingen

Firebase Cloud Messaging is de Firebase-service die pushmeldingen afhandelt. U kunt deze service toevoegen aan elke client: web, Android of IOS. De specifieke werking voor elk moet worden gelezen uit de documentatie .

Voor het toevoegen van FCM aan elk type project, is altijd het toevoegen van een bibliotheek .

Gezien de speciale ondersteuning voor Android is het de moeite waard om er een paar regels voor te nemen. Maak een nieuw project met Android Studio, ga in het menu naar Tools / Firebase, het zal de Firebase-assistent activeren. Selecteer "Cloud Messaging" en volg stap één en twee.

  1. Als uw project eerder een andere Firebase-service toevoegt, wordt de stap één gemarkeerd als voltooid, anders moet u dit doen. Met de eerste stap kunt u een project in Firebase maken of een nieuw maken. Met deze stap wordt een google-service.json-bestand gedownload met de configuratie om verbinding te maken met het Firebase-project. Dit bestand bevindt zich in de map "app".
  2. Deze stap voegt de Google Services-bibliotheek en de Firebase-bibliotheek toe aan het verloop, het zal ook wat extra configuratie in die bestanden doen.

Dit is de basis voor het toevoegen van FCM aan een project. Vanaf dit moment kan de klant al FCM-pushmeldingen ontvangen die een "meldings" -payload bevatten, zolang de app niet op de voorgrond staat (meer details in de opmerkingen).

Om het FCM-gedrag in de client verder aan te passen, moeten we 2 services toevoegen, dit is goed gedocumenteerd op de officiële site. Opnieuw zullen we enige overweging nemen voor Android:

  1. Maak een klasse die FirebaseMessagingService uitbreidt en de methode onMessageReceived overschrijven
  2. Maak een klasse die FirebaseInstanceIdService uitbreidt en de methode onTokenRefresh overschrijven
  3. Registreer beide klassen in het manifest, doe dit binnen de application </intent-filter> </intent-filter>

U kunt de notification en de data binnen de onMessageReceived methode krijgen met het enige argument daar. De methode onTokenRefresh wordt aangeroepen wanneer het FCM-token wordt toegewezen door FCM. Een FCM-token is een unieke id voor de app-installatie en het apparaat en kan worden gebruikt als een adres van het apparaat om direct pushmeldingen te verzenden.

Lees opmerkingen voor meer informatie over de soorten meldingen en het bijbehorende gedrag.