AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Service soll Push-Nachricht erzeugen

Ein Thema von Stewag · begonnen am 16. Okt 2023 · letzter Beitrag vom 20. Okt 2023
Antwort Antwort
Stewag

Registriert seit: 12. Jun 2008
175 Beiträge
 
Delphi 12 Athens
 
#1

Service soll Push-Nachricht erzeugen

  Alt 16. Okt 2023, 16:07
Meine Wetter-App für Wassersportler zeigt u.a. Wellenhöhen an.

Ich möchte, dass der Benutzer sich bei sehr hohen Wellen durch eine Push-Nachricht warnen lassen kann.
Da die App selber dazu nicht zu laufen braucht, würde ich einen Service einbinden, der im Hintergrund den entsprechenden Server abfragt.

Meine Frage: Wie gehe ich vor, um beim Überschreiten des Warnwertes eine Push-Nachricht auf dem Smartphone anzuzeigen?
Der Service selber kann das doch nicht, oder?
Steffen
  Mit Zitat antworten Zitat
supermulti81

Registriert seit: 13. Okt 2023
27 Beiträge
 
#2

AW: Service soll Push-Nachricht erzeugen

  Alt 16. Okt 2023, 16:21
Hallo,

das kannst du am besten über den Google Firebase Cloud Messaging (FCM) machen. Für Android ist soweit alles drin, man muss dann nur eine JSON Datei importieren. Für iOS muss man dann noch die Firebase SDK für iOS runterladen (bei Delphi 11.3 ist das die Version 6.28).
Bei Android musst du dann noch die Projekteinstellung setzen Push erlauben. Bei iOS muss beim Apple Identifier Push aktiviert werden. Das dazu mal ganz grob.

Bei der APP verbindest du dich dann mit FCM und erhälst einen Token, diesen muss du bei deinem User ablegen.

Wenn dein Service dann ermittelt, dass eine Push Nachricht an einen User gesendet werden soll, dann musst du die Token vom User (eventuell mehrere, da er mehrere Geräte verwenden könnte) auslesen und über die FCM API an diese Token die Nachrichten senden.

Mal ganz grob umrissen.

MfG
  Mit Zitat antworten Zitat
Stewag

Registriert seit: 12. Jun 2008
175 Beiträge
 
Delphi 12 Athens
 
#3

AW: Service soll Push-Nachricht erzeugen

  Alt 16. Okt 2023, 16:33
Vielen Dank, Supermulti, das klingt nachvollziehbar!
Dann versuche ich mich mal an der Umsetzung...
Steffen
  Mit Zitat antworten Zitat
supermulti81

Registriert seit: 13. Okt 2023
27 Beiträge
 
#4

AW: Service soll Push-Nachricht erzeugen

  Alt 16. Okt 2023, 19:00
Hier mal noch Links:

Für Android:
https://synaptica.info/en/2022/03/14...otification-1/

Für iOS:
https://synaptica.info/en/2022/03/24...otification-1/

Und für deinen Service dann hier noch Infos:
https://firebase.google.com/docs/ref...messages?hl=de
  Mit Zitat antworten Zitat
Stewag

Registriert seit: 12. Jun 2008
175 Beiträge
 
Delphi 12 Athens
 
#5

AW: Service soll Push-Nachricht erzeugen

  Alt 19. Okt 2023, 12:26
Ich habe jetzt einen Android-Service erstellt, der prüft, ob die Voraussetzung für eine Push-Nachricht erfüllt ist und diese nach dem Vorbild des Snippets
"Embarcadero\Studio\22.0\Samples\Object Pascal\Mobile Snippets\Notifications\SendCancelNotification" direkt an das Notification Center sendet:
Code:
 ...
NotificationC.PresentNotification(Notification)
Den Service habe ich in meine MultiDevice App integriert und starte ihn daraus mit
Code:
TLocalServiceConnection.StartService([Dienstname])
Es erscheinen aber keine Push-Nachrichten.

Vermutlich kann ein Dienst keine Push-Nachrichten direkt an das System senden und ich brauche zwingend die von supermulti beschriebene FCM?

Da ich die Push-Nachricht ja nicht von außen an die App senden will, sondern diese selbstständig prüft, ob eine Push-Nachricht angezeigt werden soll, habe ich gedacht ich könnte auf die Firebase Cloud verzichten.
Steffen

Geändert von Stewag (19. Okt 2023 um 12:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
675 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Service soll Push-Nachricht erzeugen

  Alt 20. Okt 2023, 11:59
Ich würde das Ganze erstmal ohne Service probieren, damit Du weisst, dass Dein Code in Ordnung ist...

btw. Klarstellung zu SuperMulti81's Text : Der Token, den Du in der App bekommst, wenn der User diese startet, musst Du nicht beim User ablegen, sondern auf Deinem Server, damit Du weisst, wem Du das schicken sollst.

Das Versenden geht ja eigentlich über einen http-Aufruf (ich hatte das mal mit RealThinClient gemacht) :

Delphi-Quellcode:
  RtcDataRequest.Request.Method := 'POST';
  RtcDataRequest.Request.FileName:='/fcm/send';
  RtcDataRequest.Request['Content-Type']:='application/json';
  // Das ist Dein key, den Du von Google für FCM bekommst (keine Angst, das ist nicht meiner ;)
  RtcDataRequest.Request['Authorization']:='key=AAACFWjzosA:APA31bH60XgRU6QGoN8PQ0-1CUROMSZVGThqz5nS3yCfIrMeWMiFJjslg6l7geF_P9fB8f__hzbSZt8rIq0NrDOmRKxpk2pVM9mTvav8OHtjzcKFEmViGFobEuPzvBZlGA7ootKV8j0E';
  With RtcDataRequest.Request.Info.newRecord('data') do begin
    asText['to']:= ADestino; // hier kommt der Token rein, den Du für deinen Empfänger hast
    with newRecord('data') do
      asText['message'] := AMessage; // hier Deine Nachrichten-Text
    end;
  RtcDataRequest.Post;

Geändert von MyRealName (20. Okt 2023 um 12:02 Uhr) Grund: Tippfehler
  Mit Zitat antworten Zitat
Stewag

Registriert seit: 12. Jun 2008
175 Beiträge
 
Delphi 12 Athens
 
#7

AW: Service soll Push-Nachricht erzeugen

  Alt 20. Okt 2023, 13:13
Schuld waren ältere Java Files! Hier kommt die Lösung des Problems:
https://github.com/DelphiWorlds/HowT...rviceDelphi111

Jetzt klappt es.

Demnach KANN ein Android Service eine Notification erzeugen.
Ein FCM wird nur benötigt, wenn die Notification von außen an das Smartphone gesendet werden soll.
Steffen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz