AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.

Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.

Ein Thema von Kostas · begonnen am 28. Mär 2018 · letzter Beitrag vom 28. Mär 2018
Antwort Antwort
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.112 Beiträge
 
Delphi 12 Athens
 
#1

AW: Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.

  Alt 28. Mär 2018, 10:26
Perfekt,

ich habe den Patch eingespielt und schon funktioniert es.

Tausend Dank nochmals.

Gruß Kostas
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.112 Beiträge
 
Delphi 12 Athens
 
#2

AW: Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.

  Alt 28. Mär 2018, 11:23
Hallo Zusammen,

die Nachricht kommt noch nicht an.
[Edit] Die Nachricht versende ich übrigens über console.firebase.google.com. Aus dem Video habe ich ersteinmal NUR das Android Projekt umgesetzt!

Ich arbeite gerade dieses Beispiel durch: https://www.youtube.com/watch?v=XE7dV5Devco

Die DeviceID wird nach Patch abgerufen. Der DeviceToken ist leer. Ich bekomme eine Exception "EJNIException mit der Meldung 'Java.io.IOException: MAIN_TREAD'"
sobald ich versuche AServiceConnection.Active:=True; zu setzen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  Senderid: String = '383490665090';
var
  ADeviceID, ADeviceToken: string;
begin
  APushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM);
  APushService.AppProps[TPushService.TAppPropNames.GCMAppID]:=SenderID;
  AServiceConnection:=TPushServiceConnection.Create(APushService);
  AServiceConnection.Active:=True; <<< hier kommt die Exception
  AServiceConnection.OnChange := OnChange;
  AServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent;
  ADeviceID := APushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID];
  ADeviceToken := APushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken];

  Memo1.Lines.Add('DeviceID = ' + ADeviceID);
  Memo1.Lines.Add('DeviceToken = ' + ADeviceToken);

end;

Hat jemand eine Idee?
Gruß Kostas

Geändert von Kostas (28. Mär 2018 um 11:25 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.

  Alt 28. Mär 2018, 11:44
Die Meldung könnte darauf hinweisen, dass der Code nicht im Hauptthread der App laufen darf (da er potentiell längere Zeit das UI blockiert).
Die Lösung wäre dann, den Code in einen Thread zu verlagern.
Michael Justin
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.112 Beiträge
 
Delphi 12 Athens
 
#4

AW: Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.

  Alt 28. Mär 2018, 13:43
Hallo Michael,

du hast Recht. Es funktioniert. Ich bekomme keine Fehlermeldung und die Nachricht kommt auch an wenn ich über firebaase notivication eine Nachricht sende direkt an das Token. Wenn ich in firebaase notivication als Ziel Nutzersegment(default) und meine App auswähle, wird die Nachricht nicht empfangen. Ich muss also direkt über das Token gehen.

Aktuell ist es so, wenn die App aktiv ist, wird der Event AServiceConnection.OnReceiveNotification gefeuert. Ist sie nicht aktiv kommt die Meldung nur in das Notification-Center.
Klicke ich auf die Nachricht wird die App gestartet. Gibt es eine Möglichkeit die Notification vom Notification-Center nochmals "abzuholen" so das der Event gefeuert wird incl. der übergebenen Notification damit sie behandelt wird?


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  TThread.CreateAnonymousThread(procedure ()
  const
    Senderid: String = '383490665090';
  var
    ADeviceID, ADeviceToken: string;
  begin
    APushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM);
    APushService.AppProps[TPushService.TAppPropNames.GCMAppID]:=SenderID;
    AServiceConnection:=TPushServiceConnection.Create(APushService);
    AServiceConnection.Active:=True;
    AServiceConnection.OnChange := OnChange;
    AServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent;
    ADeviceID := APushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID];
    ADeviceToken := APushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken];

      TThread.Synchronize(TThread.CurrentThread,
      procedure()
      begin
        Memo1.Lines.Add('DeviceID = ' + ADeviceID);
        Memo1.Lines.Add('DeviceToken = ' + ADeviceToken);
      end);
  end).Start;

end;

Gruß Kostas
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.

  Alt 28. Mär 2018, 14:34
Wird bei einem Klick auf die Nachricht, diese nicht an die App übergeben?

Ein Demo für beide Seiten wäre schön, dann kann man das nachvollziehen.

Mavarik
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.

  Alt 28. Mär 2018, 15:08
Wird der Thread mit TPushServiceConnection etc. erst beim Klick auf den Button gestartet oder schon ganz früh beim Start der App?

Rein intuitiv könnte Android ja nach dem Start zwar eine zuvor erhaltene Notification weiterleiten wollen, aber nicht können, weil die App zum entscheidenden Zeitpunkt noch keine TPushServiceConnection eingerichtet hat.

Das hier geschieht möglicherweise:

* Notification trifft ein (App läuft nicht)
* Android startet die App
* Sobald die App einen bestimmten Status (Aktivität wurde erzeugt) erreicht hat, prüft Android ob eine Cloudverbindung aufgebaut wurde, und falls ja, würde sie das Event (OnReceiveNotification) aufrufen und die Notification übergeben
* "leider" wird die Cloudverbindung aber im Delphi Code erst später aufgebaut => Chance verpasst
Michael Justin
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.112 Beiträge
 
Delphi 12 Athens
 
#7

AW: Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.

  Alt 28. Mär 2018, 15:33
Hallo Zusammen,

die Methode RegisterPushNotivication starte ich bei OnCreate.


Ich beschreibe alles was wichtig ist um das Projekt zu testen.
- https://console.firebase.google.com/
-Projekt hinzufügen, Projektname z.B.:TestApp, Land auswählen
-als Projektname z.B.: com.meineApp.TestApp eingeben

Android TestApp
---------------
- In der Methode RegisterPushNotivication die SenderID eintragen.
Die bekommt man über Firebase/Projekt/Einstellungen/Cloud Messaging/Sender-ID
- IDE/Projekt/Optionen/Versionsinformationen/package setzen z.B.: com.meineApp.TestApp und /label auf z.B.:TestApp
- IDE/Projekt/Optionen/Berechtigungsliste/Push-Benachritigung empfangen setzen
Android app starten und den Token kopieren für den Server

Windows Server Anwendung
------------------------
DeviceToken := ''; //Device Token von der AndroidApp eintragen
AJsonData.AddPair('id',''); //Firebase/Projekt/Einstellungen/Cloud Messaging/Sender-ID als zweiter Parameter eintragen
IdHTTP1.Request.CustomHeaders.AddValue('Authorizat ion','key='); //Firebase/Projekt/Einstellungen/Cloud Messaging/Serverschlüssel als zweiter Parameter nach dem = Zeichen eintragen

das ist alles.

Gruß Kostas
Angehängte Dateien
Dateityp: zip PushNotification.zip (1,26 MB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz