Seiten

Posts mit dem Label mobile werden angezeigt. Alle Posts anzeigen
Posts mit dem Label mobile werden angezeigt. Alle Posts anzeigen

Dienstag, 5. November 2013

APEX - Passwort speichern in der Login-Form erlauben

Standardmäßig verhindert APEX das Abspeichern von Passwörtern im Browser. Die Suche nach der Einstellung, die geändert werden muss, war etwas mühselig. Damit der nächste nicht so lang wie ich suchen muss, hier die Lösung: Das Speichern des Passwortes wird durch den Parameter autocomplete der Login-Form von APEX verhindert, der immer auf "off" gesetzt ist. Den Parameter ändert man weder im Template, noch in der Region und auch nicht über irgend welche CSS/HTML-Spielereien am Item. Nein, man geht im Applicationbuilder auf die Loginseite der Application und über Edit Page -> Security -> Form Auto Complete ändert man den Wert "off" auf "on". Apply Changes. Fertig.
Die Lösung findet man auch im Application Builder User's Guide - wenn man weiß, wonach man suchen muss.

Mittwoch, 12. Juni 2013

Mobile-Apex-Tutorial

Carsten Czarski hat in der Apex Community ein erstklassiges Tutorial veröffentlicht, das zeigt, wie schnell und einfach Webseiten für mobile Engeräte mit APEX erstellt werden können.
Workshopartig, über 10 Aufgaben verteilt, wird umfassend und in anschaulicher Weise der Aufbau einer kleinen WebApp gezeigt.

Prädikat: Äußerst empfehlenswert.

(An Aufgabe 08 habe ich einen kleinen Anteil - das freut mich natürlich besonders. :))

Montag, 6. Mai 2013

APEX mobil - Zugriff auf's Smartphone-GPS

Mit Apex 4.2 ist es sehr einfach, Webseiten für mobile devices zu erstellen.
Sogar der Zugriff auf einige Smartphone-Funktionen ist über den Browser möglich.
Ich habe beispielhaft den Zugriff auf den Standort implementiert:
  • Auf einer Webseite soll die Position des Smartphones dargestellt werden.
  • Über den Klick eines Buttons wird der Browser die API ansprechen und Höhe und Breite abrufen.
  • Höhe und Breite werden zusätzlich angezeigt, damit man auch Änderungen registrieren kann.
Zunächst habe ich mir auf http://apex.oracle.com einen kostenlosen Workspace angelegt und anschließend schnell mal eine Anwendung mit dem Mobile-Template zusammengeklickt. Wie man das macht, ist in diesem Tipp der deutschsprachigen APEX und PL/SQL Community beschrieben.
Hier im Schnelldurchlauf:
  • Den Wizard für eine neue Applikation aufrufen und eine Datenbankapplikation auswählen.
  • Name, Schema, Optionen, Template auswählen
Die obligatorischen Angaben machen und weiter
  • Im Wizard bis zum Schluss immer nur auf "Weiter" klicken und Anwendung erstellen. Ob man - wie ich hier - ohne Login arbeiten möchte ist natürlich Geschmackssache.
Das Ergebnis
  • Jetzt vergeben wir noch schnell einen Aliasnamen, damit man sich nicht die Anwendungs-ID merken muss.
Damit steht das Grundgerüst und kann mit dieser URL aufgerufen werden: http://apex.oracle.com/pls/apex/f?p=gpstest
Auf der Home-Seite wird ein Button platziert, der bei einem Klick eine Dynamic Action auslöst. Hinter dieser liegt etwas JavaScript, welches das GPS-Modul des Smartphones abfragt.
Den Button bekommt man, indem man nacheinander:
  1. eine Region erstellt und dann dort
  2. den Button erstellt
Rechtsklick auf "Regionen"
In der Region muss noch HTML eingetragen werden, welches später per JavaScript manipuliert wird:
Wer schon mal mit JavaScript Webseiten manipuliert hat, der weiß, dass die ID eines Elementes für den gezielten Zugriff auf selbiges benötigt wird.
Jetzt per Rechtsklick auf die neue Region den Wizard für die Buttonerstellung starten.
Dem neuen Button verpassen wir - ebenfalls per Rechtsklick - eine "dynamic action"
Benamsen und weiter
weiter
Mussfelder sinnvoll füllen und weiter

Den JavaScript-Code einfügen, weiter zum letzten Schritt und dann fertigstellen.

Das Javascript findet man bequem per Google mit diesen Suchbegriffen: jquery mobile geolocation und kann ihn dann modifizieren.
navigator.geolocation.getCurrentPosition (function (pos)
{
  var lat = pos.coords.latitude;
  var lng = pos.coords.longitude;
  var t = new Date();
  var Monat = new Array("01", "02", "03", "04", "05", "06",
                        "07", "08", "09", "10", "11", "12")
  var Tag = t.toGMTString();
  var Tag = t.getDate() + "." + Monat[t.getMonth()] + "." + t.getFullYear()        + " "  + t.getHours() + ":" + t.getMinutes() + ":" +
          + t.getSeconds();
  var Tag = t.toLocaleString() ;
  var ts = t.getTime();
  $("#time").text (Tag);
  $("#ts").text (ts);
  $("#lat").text (lat);
  $("#lng").text (lng);
});

Hier kann man sich das unspektakuläre Ergebnis mit dem Iphone/Androiden/Blackberry/WindowsPhone ansehen: http://apex.oracle.com/pls/apex/f?p=gpstest
Eine Fehlerbehandlung habe ich mir gespart. Deshalb wird auch nichts passieren, sofern man gerade keinen freien Himmel hat.
Dieses Beispiel ließe sich jetzt bequem erweitern:
  • wegschreiben des Standpunktes in die DB (GPS-Tracking)
  • Darstellung des Standortes auf einem Kartendienst
  • ...

Fazit:

Mit APEX ist eine mobile Webseite extrem schnell "zusammengeklickt". Natürlich muss man für komplexe Anwendungen unter APEX mehr Aufwand investieren, dafür muss man sich nicht mit lästigen Arbeiten rund um Login, Datenbankzugriff, Browserkompatibilitäten... herumschlagen.
Schneller als mit APEX kommt man wohl nicht zu einer mobile-app-ähnlichen Webseite für Smartphones - erst recht nicht, wenn man sich darauf beschränkt, Datenbankinhalte auf dem Smartphone "nur" darzustellen.
Auch wenn man mehr machen möchte, kommt man sehr schnell zu einem guten Ergebnis.

Derzeit ist geolocation aber die einzige interessantere herstellerübergreifende Gerätefunktion, auf die der Smartphone-Browser zugreifen kann. Richtig interessant wird es erst, wenn der Browser Zugriff auf z.B. die Kamera bekommt. Dann ließen sich tolle Anwendungen in APEX erstellen, die bisher den nativen Apps vorbehalten sind.
Auf http://mobilehtml5.org/ werden die Fähigkeiten der gängigen Smartphone-OS aufgelistet. Bisher können nur Blackberry (Z10), sowie Android & Symbian (Opera Mobile) mit der Unterstützung von getUserMedia aufwarten - also dem Zugriff auf die Kamera.

Donnerstag, 25. April 2013

Bug im jQuery Mobile von APEX 4.2.1: "Error loading page"

Das jQuery Mobile, welches mit APEX 4.2.1 ausgeliefert wird, hat einen gemeinen Bug (bug# 16184694), der zuschlägt, sobald man nicht direkt auf den Webserver/APEXListener zugreift, sondern der Zugriff per redirect durch einen Proxy geleitet wird - das ist z.B. dann der Fall, wenn per Smartphone auf die DB zugegriffen werden soll und der Webserver in der DMZ steht.
Bei mir verhinderte der Bug bereits das Login in die Applikation.

Lösung:
Enter

$("#wwvFlowForm", apex.gPageContext$).attr("data-ajax", false);

into "Execute when Page Loads" attribute of page which contains the select list page item to not use an AJAX call for the submit. Avoiding the AJAX call will trigger a full page refresh which will also cleanup the jQuery Mobile call stack.
Quelle: https://forums.oracle.com/forums/thread.jspa?messageID=10857686&tstart=0