Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden. (https://www.delphipraxis.net/195808-fehler-java-klasse-jgooglecloud-messaging-wurde-nicht-gefunden.html)

Kostas 28. Mär 2018 09:35

Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.
 
Hallo Zusammen,

ich habe eine frische Installation vom 10.2.3 Tokio und beschäftige mich gerade mit Push Notification über Google Cloud Messaging.
Ich habe mehrere Beispiele die ich im Internet und auf YouTube gefunden habe ausprobiert. Alle scheitern an der gleichen Stelle, auch die Beispiele die Kinvey nutzen.
Beim versuche eine Verbindung aufzubauen bekomme ich die Meldung am Android Device "Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden"

Somit gehe ich davon aus, mir fehlt etwas. Meine Installation ist anscheinend nicht komplette, denn die Fehlermeldung findet man im Netz nicht und die ganzen Beispiele funktionieren sofort.
Hat jemand irgend eine Idee was fehlen könnte?

Gruß Kostas

MEissing 28. Mär 2018 09:49

AW: Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.
 
Es fehlt ein JAR im 10.2.3 Release. Das liefern wir "die Tage" nach...

Mavarik 28. Mär 2018 09:55

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

https://cc.embarcadero.com/Item/30831

MEissing 28. Mär 2018 10:23

AW: Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.
 
Ah... schon da. Danke, Mavarik!

Kostas 28. Mär 2018 10:26

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

ich habe den Patch eingespielt und schon funktioniert es.

Tausend Dank nochmals.

Gruß Kostas

Kostas 28. Mär 2018 11:23

AW: Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.
 
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
Delphi-Quellcode:
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

mjustin 28. Mär 2018 11:44

AW: Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.
 
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.

Kostas 28. Mär 2018 13:43

AW: Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.
 
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
Delphi-Quellcode:
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

Mavarik 28. Mär 2018 14:34

AW: Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.
 
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

mjustin 28. Mär 2018 15:08

AW: Fehler: Java-Klasse JGoogleCloud-Messaging wurde nicht gefunden.
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:02 Uhr.
Seite 1 von 2  1 2      

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