[JAVA] Push-Übermittlung von der Spring-Anwendung an Firebase Cloud Messaging

Firebase

Eine plattformübergreifende Messaging-Lösung von Google, mit der die kostenlose Zustellung von Nachrichten sichergestellt werden kann.

Bei Google I / O 2017, das neulich stattfand, scheinen die Funktionen des Analysesystems zusätzlich zu den Grundfunktionen erheblich verbessert worden zu sein.

Dieses Mal gab es einige süchtig machende Punkte beim Aufrufen eines solchen Firebase Cloud Messaging (im Folgenden FCM) von der Serverseite aus, daher werde ich es als Memorandum zusammenfassen.

Unterschied zwischen FCM- und Firebase-Benachrichtigungen

FCM

Ein Mechanismus, der eine flexible Push-Verteilung auf eine Vielzahl von Zielen wie mobile Endgeräte und Webbrowser ermöglicht. Grundsätzlich ist es notwendig, den Übertragungsprozess in jeder Sprache zu implementieren.

Firebase Notifications

Ein Mechanismus, mit dem Sie Push-Benachrichtigungen über das Firebase-Dashboard senden können. Es ist einfach, weil es nicht implementiert werden muss, sondern nur einfache Push-Benachrichtigungen erfolgen können.

Dieses Mal werde ich das erstere kurz zusammenfassen.

Anfrage Informationen

--FCM-Endpunkt: https://fcm.googleapis.com/fcm/send

Antwortinformationen

Wenn die HTTP-Kommunikation im obigen Format durchgeführt wird, werden die folgenden Antwortinformationen zurückgegeben. Offiziell: FCM-Antwort

Beispiel für eine FCM-Antwort


{
 "multicast_id":6782339717028231855,
 "success":0,
 "failure":1,
 "canonical_ids":0,
 "results":[
  {
   "error":"InvalidRegistration"
  }
 ]
}

Erstellen Sie also ein Modell, um das oben genannte zu erhalten.

FirebaseResponse.java


public class FirebaseResponse 
{
	public Long multicast_id;
	public Integer success;
	public Integer failure;
	public Integer canonical_ids;
	public List<Result> results;

	class Result 
	{
		private String message_id;
		private String registration_id;
		private String error;
	}
	//Accessor wird weggelassen, da Lombok verwendet wird
}

Implementierung

FirebaseClient.java



public class 
{
	private final String SAMPLE_MESSAGE= "{\"to\": \"xxx\",\"notification\": {\"title\": \"Es ist eine Überschrift\",\"body\": \"Es ist der Text\"},\"data\": {\"greet\": \"Hello. World!!\"}}";
	private final String FCM_END_POINT = "https://fcm.googleapis.com/fcm/send";
	private final String SERVER_KEY = "Serverschlüssel";

	RestTemplate template = new RestTemplate();

	HttpHeaders headers = new HttpHeaders();
	Charset utf8 = Charset.forName("UTF-8");
	MediaType mediaType = new MediaType(MediaType.APPLICATION_JSON, utf8);
	headers.setContentType(mediaType);
	headers.set( "Authorization", String.format("key=%s", SERVER_KEY) );

	HttpEntity< String > entity = new HttpEntity< String >( SAMPLE_MESSAGE, httpHeaders );

	FirebaseResponse response = template.postForObject(FCM_END_POINT , entity, FirebaseResponse.class );
	LOGGER.info(String.format("Firebase Push Result. header:[%s], message:[%s], response:[%s]", httpHeaders, SAMPLE_MESSAGE, response ));

}

Anforderungsbearbeitung und Antworterfassung sind auf diese Weise möglich.

Auf dem Terminal empfangene verstümmelte Benachrichtigungen

Ich war süchtig nach dem Teil, in dem der japanische Teil der Push-Benachrichtigung, der am Terminal ankam, wie "?????????" verstümmelt war.

das ist


Charset utf8 = Charset.forName("UTF-8");
MediaType mediaType = new MediaType(MediaType.APPLICATION_JSON, utf8);
headers.setContentType(mediaType);

Es war, weil ich das oben nicht getan habe. (Es ist auch fest in Official geschrieben. Orz)

Aufgabe

Bei Firebase-Benachrichtigungen bleibt die vom Dashboard gesendete Benachrichtigung als Protokoll erhalten, sodass die Datenanalyse den Sendestatus leicht erfassen kann. Bei FCM wird jedoch nur das Sendeergebnis zurückgegeben, sodass die Verwaltung des Sendebenachrichtigungsverlaufs usw. eindeutig ist. Es muss berücksichtigt werden, sobald es in entwickelt wird.

Das heißt, es hat nicht so viele Informationen, also denke ich, dass es eine kleine Belastung ist.

Am Ende

Da es sich um einen Dienst handelt, für den Google große Anstrengungen unternimmt, denke ich, dass es sich um eine Technologie handelt, die das Potenzial hat, durch das Tragen in Zukunft zu einer Waffe für das Leben in der IT-Gesellschaft zu werden.

Da jedoch Kenntnisse über die Entwicklung von Smartphone-Anwendungen für den Empfang auf dem Terminal unerlässlich sind, sollte ich sie vorerst über die Push-Benachrichtigung des Browsers tragen. .. ..

Zu diesem Zeitpunkt werde ich es noch einmal als Artikel zusammenfassen.

Na dann.

Recommended Posts

Push-Übermittlung von der Spring-Anwendung an Firebase Cloud Messaging
Machen Sie PUSH-Benachrichtigungen mit Bildern mit Firebase Cloud Messaging
Versuchen Sie Spring Boot von 0 bis 100.
Umschreiben von Applet zu Anwendung
Rüsten Sie den Federstiefel von der 1.5-Serie auf die 2.0-Serie auf
Die Geschichte des Übergangs von Spring Boot 1.5 zu 2.1
Änderungen bei der Migration von Spring Boot 1.5 auf Spring Boot 2.0
Übergang von Struts2 zu Spring MVC (Controller)
Änderungen bei der Migration von Spring Boot 2.0 zu Spring Boot 2.2
Vom Erstellen eines Spring Boot-Projekts bis zum Ausführen einer Anwendung mit VS Code
[Reverse] Spring Security (von Zeit zu Zeit aktualisiert)
Stellen Sie über eine Java-Anwendung eine Verbindung zu Aurora (MySQL) her
Berühren Sie alle "Anleitungen" des Frühlings (von Zeit zu Zeit aktualisiert)
Vom Aufbau einer AWS-Cloud-Umgebung bis zur Bereitstellung einer Spring Boot-App (für Anfänger)