Du bist nicht angemeldet. [Anmelden]
Dieses Thema ist vormoderiert, das bedeutet, neue Beiträge müssen erst von einem Moderator dieses Forums freigeschaltet werden, bevor sie für alle sichtbar werden.
Optionen
Thema bewerten
Verbesserungen / Updates die User Apps betreffen. - #2898747 - 24.04.2018, 19:22:35
IgelchenM
​Laubhaufenbewohner

Registriert: 10.02.2005
Beiträge: 1.479
Ort: Bochum
In diesem Beitrag sammeln wir alle Veränderungen / Verbesserungen die das Thema User Apps betreffen. Alternativ könnt ihr euch natürlich auch über den Changelog über die aktuellen Änderungen / Verbesserungen informieren.

Aufzählungen in diesem Beitrag


Changelog der vergangenen Jahre


[zum Seitenanfang]  
Re: Verbesserungen / Updates die User Apps betreffen. [Re: IgelchenM] - #2898749 - 24.04.2018, 19:46:23
IgelchenM
​Laubhaufenbewohner

Registriert: 10.02.2005
Beiträge: 1.479
Ort: Bochum
Antwort auf: martin070476
Hallo zusammen! :-)

Wir haben soeben die Umstellung vom intern verwendeten JFX-Browser auf den JX-Browser abgeschlossen. Alle in Knuddels dargstellte HTML-Inhalte sind somit für Nutzer der PC/Mac/Linux-App ab sofort im besseren JX-Browser verfügbar.

Was muß ich als Nutzer machen?

Nichts. Die Änderungen sind mit dem nächsten Update der PC/Mac/Linux-App automatisch live. Sie betreffen Elemente wie den Hausknuddel, Code aktivieren, Knuddel übertragen, Code-Menü, /FA, viele Smiley-Features sowie die meisten User-Apps.

Was bringt diese Änderung?

Der neue Browser basiert auf Chrome und ist damit deutlich schneller und effizienter als der mit Java mitgelieferte JFX-Browser. Das macht bestehende Anwendungen schneller und ermöglicht User-Apps-Entwicklern bessere und flüssigere Apps in ihre Channel zu bringen.

Wir wünschen euch viel Spaß mit der neuen Technik. :-)


Ergänzend für diese neue Änderung ist, dass ihr folgende Möglichkeiten habt, folgende API-Calls durchzuführen:

Möglichkeit 1:
Die User-App unterstützt JFX ohne Probleme.
- Es muss nichts geändert werden.

Möglichkeit 2:
Die User-App hat unterschiedliche Versionen für JX und JFX.
- Hierfür kann Client.getHostFrame().getBrowserType() verwendet werden um clientseitig zwischen den verschiedenen Versionen umzuschalten.

Möglichkeit 3:
Bestimmte HTML-Views unterstützen den JFX-Browser nicht mehr.
- Für diese kann im Server per appContent.setAllowJFXBrowser(false); die Ausführung im JFX-Browser unterbunden werden.
- Der App-Entwickler muss sich um das Thema nicht weiter kümmern.
- Hinweis: Dies kann pro AppContent unterschiedlich eingestellt werden, sodass z.B. ein kompatibles Minigame im JFX angezeigt werden kann, jedoch ein inkompatibles Minigame unterbunden wird.


Bearbeitet von IgelchenM (27.04.2018, 19:18:25)
Bearbeitungsgrund: Nachtrag hinzugefügt.
_________________________
Wo zum Teufel ist dieser Wayne wenn man ihn braucht?!

[zum Seitenanfang]  
Re: Verbesserungen / Updates die User Apps betreffen. [Re: IgelchenM] - #2899102 - 26.04.2018, 19:56:37
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.761
Hallo zusammen :-)


Ich möchte auf folgenden Abschnitt aus der jxBrowser-Ankündigung mit mehr technischen Details für euch Entwickler eigehen:
Antwort auf: martin070476
Was bringt diese Änderung?

Der neue Browser basiert auf Chrome und ist damit deutlich schneller und effizienter als der mit Java mitgelieferte JFX-Browser. Das macht bestehende Anwendungen schneller und ermöglicht User-Apps-Entwicklern bessere und flüssigere Apps in ihre Channel zu bringen.


Allgemeines & Kontext
Der jxBrowser ist eine Komponente die den bisherigen Java-hauseigenen JavaFX-WebView ersetzt. Dieser JavaFX-WebView basiert auf einer ziemlich alten und modifizierten WebKit (Web Browser Engine) Version. Der neue jxBrowser setzt hier auf Chromium als Web Browser Engine. Dieser Chromium steckt im Kern auch im Google Chrome Browser, dem Opera Browser und in den meisten Browsern auf Android (vor allem natürlich wenn es Google Chrome for Android ist :P). Dieser Android-Browser wird auch in unserer Android App als WebView für eure UserApps verwendet.
Allerdings müssen wir aus Kompatibilitätsgründen (noch! Weitere Infos siehe hier) auf die etwas ältere Version des jxBrowsers zurückgreifen, die einem "Chrome 49" entspricht. Aber wie gesagt, wir planen nicht, dass das für immer so bleibt.
Und noch mal der Hinweis, dass das Browser-Applet diesen jxBrowser nicht enthält, hier wird weiter der JavaFX-WebView verwendet.

Vorteile bei Kompatibilität & Dokumentation
Durch den Wechsel von einer ziemlich unbedeutenden Web Browser Engine zu der größten und am weitesten verbreiteten Web Browser Engine ergeben sich für uns alle und demnach auch für euch Vorteile. z.B. gibt es auf der von mir des öfteren hoch gelobten "Dokumentation des Web", den MDN Web Docs zu jedem Featrure, HTML, CSS und JavaScript unten auf der Dokumentationsseite den Abschnitt "Browser compatibility"/"Browserkompatibilität" in dem detailliert aufgeführt ist ab welcher Browser-Version das jeweilige Feature funktioniert (und noch mehr Details). Da der jxBrowser ein "normaler" Chrome (Version 49) ist, könnt ihr diese Information nun zum nachschlagen verwenden.
Dieser "jetzt kann man Informationen zu Problemen und Dokumentationen nachschlagen"-Grundsatz gilt jetzt für fast alle Web-Features die ihr in eurer App verwenden wollt oder schon verwendet.
Durch die deutlich bessere Web Browser Engine werden sich auch diverse Probleme, Bugs oder sonstige (teils komplizierte) Komischkeiten mit HTML/CSS/JavaScript in Luft auflösen. Und gleubt mir, das ist einer der Hauptgründe warum wir das Projekt intern so vorangetrieben haben und selbst auf jeden Release gewartet haben. Wir sind leider viel zu oft an die Grenzen des JavaFX-WebView gestoßen.

Welche Web-Technologien oder HTML/CSS/JavaScript kann ich denn jetzt zusätzlich verwenden?
Bevor ich hier jetzt wirklich alles aufliste geb ich euch einfach einen Vergleich an die Hand. Unter dieser URL von HTML5Test findet ihr einen Feature-Vergleich von: JavaFX-WebView (erste Spalte), dem aktuell eingesetzten jxBrowser (zweite Spalte) und dem aktuellen Chrome 66 (dritte Spalte).
Ein paar Highlights aus den neuen Möglichkeiten/APIs (ich hab nicht alles getestet!):
- WebGL API (verwendet z.B. Unity3D)
- Gamepad API
- Web Animations
- requestAnimationFrame
Bitte schaut bei allem aber auf die besagte Browserkompatibilität, nicht alles davon wird z.B. auch im HTMLChat für alle funktionieren (I'm looking at you, IE!).

Performance und "Lightweight or Heavyweight" oder warum Spiele-Apps eher PopUps verwenden sollten
Der jxBrowser wird von uns in zwei Modi die er selbst mitbringt eingesetzt: Lightweight und Heavyweight.
Heavyweight bedeutet hier z.B. Hardware-Beschleunigung (z.B. per Grafikkarte). Dieser Modus ist das was ihr aus eurem Browser und dem HTMLChat gewohnt seid. Diesen Heavyweight Modus verwenden wir ausschließlich in PopUps. Das hat technische Gründe, da es sonst zu Problemen in der Interaktion mit unserer restlichen PC-App kommen kann. Wer also grafisch aufwendige Spiele, z.B. mit Hilfe von Unity3D bereitstellen will, der sollte dafür den PopUp-Modus verwenden.
Alle anderen HTML-UI-Modi verwenden den Lightweight Modus. Dieser hat keine Hardware-Beschleunigung und rendered alles mit der CPU. Dementsprechend ist er nicht ganz so performant wie sein schwergewichtiger Bruder.
Und zu Performance generell: alleine durch den Wechsel auf Chrome sollten eure Apps nun performanter laufen.

DevTools
Der vermutlich glitzerndste Diamant unter den neuen Features sind die mitgelieferten DevTools. Eine Doku der DevTools findet ihr hier auf der Seite von Google Chrome. Allerdings müsst ihr natürlich beachten, dass die DevTools Version auch die von Chrome 49 und nicht dem aktuellsten Chrome ist. Diese DevTools kennt ihr vielleicht schon vom Entwickeln von UserApps für den HTMLChat aus Firefox oder Chrome.
Ihr könnt die DevTools aktuell nur auf dem Dev-Server verwenden. Dort dann einfach den Fokus in eure UserApp HTML-UI setzen und "CTRL+SHIFT+I" drücken. Dann öffnen sich die DevTools und ihr könnt alles machen was ihr euch vorstellen könnt. Ihr werdet es lieben!

Fazit
Auch wenn der neue Browser nicht der allerneuste ist eröffnet er uns und euch allen doch eine ganze Menge mehr Möglichkeiten. Er schaltet eine Menge mehr Features frei, ist deutlich performanter und das Entwickeln mit ihm und für ihn wird sich für jeden von euch deutlich verbessern und leichter werden. :)


Happy coding. :)
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Re: Verbesserungen / Updates die User Apps betreffen. [Re: TobyB] - #2910050 - 20.07.2018, 18:57:23
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.761
Seit eben ist eine aktualisierte Version der API-Dokumentation live. :)
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Re: Verbesserungen / Updates die User Apps betreffen. [Re: TobyB] - #2940990 - 30.04.2019, 12:28:02
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.761
Kleiner Breaking-Change der bald kommt

Betrifft: LoadConfiguration

Vorher:
War ein "Loading-Indicator-Image" gesetzt, dann wurde auschließlich dieses angezeigt und nicht der "Text". War kein Image aber ein Text gesetzt, dann wurde dieser Text angezeigt.

Nachher:
Das "Loading-Indicator-Image" und der "Text" des Loading-Indicators werden gleichzeitig angezeigt wenn sie beide gesetzt sind. Ist nur eins von beidesn gesetzt, dann wird nur dieses angezeigt.
Wer jetzt nur das Bild und keinen Text anzeigen möchte kann den Text auf einen leeren Wert (oder null oder undefined) setzen um ihn zu entfernen.

APIs:
LoadConfiguration.setLoadingIndicatorImage()
LoadConfiguration.setText()
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Re: Verbesserungen / Updates die User Apps betreffen [Re: TobyB] - #3091772 - 05.06.2019, 17:24:54
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.761
Hallo!


Ich habe erfreuliche Nachrichten vom User Apps und Desktop-App Team zu überbringen! :-]


Die neuste Desktop-App (Version b190605) mit dem neuen JxBrowser wird seit diesem Moment LIVE an Nutzer verteilt.

Mit dieser Version gibt es folgende Neuerungen/Updates sowie neue Funktionen für euch:
  • Update des JxBrowser von Version 6.5 auf 6.23.1 (das entspricht Chrome 69)
  • /enableDevTools ermöglicht es euch auf allen Servern für User Apps die DevTools des JxBrowser zu öffnen (nach Eingabe der Funktion wie gewohnt F12 bzw. Strg+Shift+I drücken zum Öffnen der DevTools)
  • /toggleDevTools schaltet das automatische Öffnen der DevTools beim Öffnen einer User-App ein oder aus
    • beim ersten Aufruf führt es ebenfalls intern /enableDevTools aus, sodass man nicht beides eingeben muss
    • Dabei wird das Öffnen der App leicht verzögert, sodass die DevTools komplett geladen sind, bevor die App startet, wodurch sämtliche Netzwerk-Requests und Konsolen-Ausgaben erfasst werden können.
Weitere Änderungen die auch für euch interessant sein könnten:
  • Stabilitätsverbesserungen für HTML-UIs (sie bleiben nicht mehr im Ladevorgang stecken)
  • Behebung einiger Probleme beim JxBrowser wenn der User mehrere Desktop-Apps am laufen hat(te)
  • User mit Windows XP und Windows Vista bekommen diese oben genannte Version der Desktop-App (und alle folgenden) nicht mehr
    • Sie bekommen beim Start der Desktop-App einen Hinweis darüber
Hoffentlich freut ihr euch darüber so wie wir. :-)

Sollte es damit noch Probleme geben bitte meldet euch bei uns!


Happy Coding!
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Re: Verbesserungen / Updates die User Apps betreffen [Re: TobyB] - #3096056 - 26.07.2019, 09:17:33
InnerlichboeseAdministrator
​ChaosQueen

Registriert: 08.04.2003
Beiträge: 17.105
Ort: irgendwo im nirgendwo
Hallo!

Es betrifft jetzt nicht ganz User Apps, aber ich gehe davon aus, dass die meisten Channelbetreiber auch hier unterwegs sind, daher hier die Ankündigung:


Wir haben diese Woche etwas an den Important Channels geändert, was voraussichtlich mit dem nächsten Update live gehen wird. Bisher war es so, dass ein Channel immer dann important war, wenn er eine Nutzung über 10 hatte. Dieser Status konnte auch täglich wechseln. Wir haben dies nun so geändert, dass man sich den Important-Status immer für den ganzen Monat verdienen kann, wenn man im Monat davor im Schnitt eine Nutzung über 10 hatte. Der Status kann also nicht mehr täglich wechseln sondern gilt immer für einen ganzen Monat.

Das ermöglicht uns zukünftig auch, vollständige MCM-Monate ähnlich wie die Perioden der CM im Profil zu zählen, sofern sie in den important MyChannels absolviert wurden. Diese Channel sind für MCM verhältnismäßig arbeitsintensiv, was wir auch würdigen wollen, indem wir sie zählen und entsprechend anzeigen.

Liebe Grüße,
Inni


Bearbeitet von Innerlichboese (26.07.2019, 09:40:11)

[zum Seitenanfang]  
Re: Verbesserungen / Updates die User Apps betreffen [Re: Innerlichboese] - #3096468 - 30.07.2019, 14:06:11
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.761
API-Erweiterung

Wie PublicActionMessages haben jetzt auch PulblicEventMessages eine Methode getFunctionName(), die den Namen der Funktion liefert, durch die diese Nachricht generiert wurde (z.B. "knuddel").
Das sollte bei den meisten Funktionen funktionieren, kann aber teilweise noch null zurückgeben. Falls dem so ist meldet es bitte dem Bugsteam und lasst es als Bug eintragen.


Update & Ankündigung bzgl. Knuddel-Transfers

UserApp-Entwickler können jetzt den neuen KnuddelTransferDisplayType "Silent" verwenden, wenn sie vom App-Bot Knuddel auf den Nutzer oder seinen KnuddelAccount überweisen.

Der Nutzer erhält dann keine Benachrichtigung - außer er hat sie mit /notifications knuddelTransferSilentMessage:on aktiviert und erhält die Nachrichten so trotzdem als /m.
Nutzer können zudem /p's und /m's bei von App-Bots getätigten Knuddelüberweisungen abstellen. Die Möglichkeit dazu erhalten sie jedes mal, wenn sie eine entsprechende Nachricht erhalten.
Die Benachrichtigungen lassen sich unter /notifications list wieder aktivieren.

Am Ende des Tages erhält jeder Nutzer eine persönliche Zusammenfassung der Knuddelüberweisungen per /m (sofern welche getätigt wurden) - diese Zusammenfassung lässt sich mit /notifications knuddelTransferSummary:off abstellen.
Eine Übersicht über alle "notifications" geben die Befehle /notifications ? und /notifications list.

Da /notifications aber relativ neu ist, wird sich das wahrscheinlich in Zukunft noch etwas verändern.
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Re: Verbesserungen / Updates die User Apps betreffen [Re: TobyB] - #3103839 - 14.10.2019, 09:58:57
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.761
Am 10.10.2019 (Version 20191009-174020) haben wir einige Bugfixes und neue API ausgerollt:

Bugfix:
- ServerInfo.getRevision() liefert nicht mehr -1, sondern einen (neuen) sinnvollen Wert. Die Funktion ist jetzt jedoch deprecated.

Neue API Methoden:
- ServerInfo.getVersion()
- AppPersistence.getStringKeys([keyPattern])
- AppPersistence.getNumberKeys([keyPattern])
- AppPersistence.getObjectKeys([keyPattern])

Im Changelog steht ein wenig mehr und dort findet ihr auch die Direktlinks zur Dokumentation der jeweiligen API.
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Re: Verbesserungen / Updates die User Apps betreffen [Re: TobyB] - #3125425 - 04.05.2020, 14:40:22
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.761
Wir haben eben ein kleines Update für die HTML-UIs ausgerollt.

Dieses Update enthält ausschließlich Verbesserungen und Bugfixes hinsichtlich der Prüfungen, dass Parameter die ihr an APIs von uns weiterreicht auch den Anforderungen entsprechen. Hierbei haben wir fehlende Prüfungen hinzugefügt, bestehende Prüfungen vereinheitlicht und alle Fehlermeldungen dahingehend angepasst, dass sie in allen Fälle Informationen enthalten welcher Parameter nicht den Anforderungen entsprochen hat und warum nicht. Das war bisher nicht in allen Fällen so.

Beispiele sind z.B.
  • wir prüfen nun überall, dass die Typen korrekt sind (dass ihr z.B. auch "boolean" rein steckt wenn die API boolean erwartet)
  • wir prüfen nun überall, dass ihr keine "function" als Parameter übergebt, wenn der Parameter an den Server weitergegeben werden soll (für function als value innerhalb eines object könnt ihr Details in der Doku von JSON.stringify nachlesen)
  • alle Fehlermeldungen werfen nun einheitlich einen Error, sogar vom korrekten Typ, statt wie in einigen wenigen Fällen den Parameter weiterzureichen (was später im Code dann scheiterte) oder ihn auf einen Standard-Wert zu setzen, wenn dies nicht explizit in der Doku so erklärt wurde und demnach auch nicht das unbedingt gewünschte Verhalten war

Das ganze sollte die Entwickler-Erfahrung, besonders während der Entwicklungs-Phase, deutlich verbessern, da ihr nun schnell und besser auf die falsche Verwendung der APIs hingewiesen werdet.

Bei Fragen oder Fehlermeldungen dazu meldet euch bitte bei uns. :)
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  


Moderator(en):  Misterious