Sujet sur Discussion Gestion:Tâches/Liste/245/1

Antoine Mercier-Linteau (discussioncontributions)

Cette discussion concerne l'évaluation du support JS + HTML (afin de pouvoir soumettre des formulaires [comme ici]) de l'app.

Antoine Mercier-Linteau (discussioncontributions)

Sur le README du service mobileapps (un service utilisé par les applications pour faire du pre-processing server-side lors des requêtes de pages) Il est dit:

taking advantage of streaming by being able to use WebView.loadUrl() instead of piping every page section by section over the JS bridge.

Ce qui semble vraiment inférer que c'est WebView qui est utilisé pour afficher les articles.

Ici, il est dit:

Wikipedia for Android makes extensive use of WebViews. To debug WebView activity, navigate Google Chrome to chrome://inspect/#devices, then click on the topmost “inspect” link under “WebView in org.wikipedia.” From there you can debug the WebView like any other web site in Chrome.

Je crois que c'est donc confirmé, du moins pour la version Android. iOS ne devrait pas être très différent.

Charles-Éric Noël Laflamme (discussioncontributions)

Je confirme le support JS/HTML pour Android.

CommunicationsBridge.java

/**
 * Two-way communications bridge between JS in a WebView and Java.
 *
 * Messages TO the WebView are sent by calling loadUrl() with the Javascript payload in it.
 *
 * Messages FROM the WebView are received by leveraging @JavascriptInterface methods.
 *
 */

...

@SuppressLint({"AddJavascriptInterface", "SetJavaScriptEnabled"})
public CommunicationBridge(CommunicationBridgeListener communicationBridgeListener) {
    this.communicationBridgeListener = communicationBridgeListener;
    this.communicationBridgeListener.getWebView().getSettings().setJavaScriptEnabled(true);
    this.communicationBridgeListener.getWebView().getSettings().setAllowUniversalAccessFromFileURLs(true);
    this.communicationBridgeListener.getWebView().getSettings().setMediaPlaybackRequiresUserGesture(false);
    this.communicationBridgeListener.getWebView().setWebChromeClient(new CommunicatingChrome());
    this.communicationBridgeListener.getWebView().addJavascriptInterface(new PcsClientJavascriptInterface(), "pcsClient");
    eventListeners = new HashMap<>();
}

Pour ce qui est de d'iOS, je vais essayer de rechercher explicitement le support javascript aussi, car en raison de l'hétérogénité des deux codebases, ce n'est pas nécessairement garantit.

Charles-Éric Noël Laflamme (discussioncontributions)

L'application iOS a l'air de fonctionner de manière similaire, mais avec VKWebView au lieu de webView, qui support lui aussi javascript.

Antoine Mercier-Linteau (discussioncontributions)

Excellente nouvelle de ce côté!