Titanium Mobile: Gut zu wissen

Titanium Mobile: Gut zu wissen

Heute stelle ich fünf Tipps vor, die sich an Anfänger von Titanium Mobile richten. Die nachfolgenden Code-Beispiele finden sich auch alle in unserer Beispiel-App wieder. Dort kann jeder nachschauen, der sich mehr Kontext wünscht.

Plattform erfragen

Den Namen der derzeitgen Plattform erhält man mit:

1
Ti.Platform.getOsname()

Rückgabewert ist entweder “android”, “ipad”, “iphone” oder “mobileweb”. Es gibt noch die ähnlich benannte Funktion “Ti.Platform.getName()”. Diese wird seltsamerweise häufig in KitchenSink, der offiziellen Demo-App für Titanium, benutzt, obwohl sie Rückgabewerte wie “iPhone OS” liefert und Entwickler deshalb viel mehr aufpassen müssen, dass sie keinen Tippfehler beim Vergleichen des Rückgabewertes machen.

Datei herunterladen

Es gibt einen Unterschied zwischen iOS und Android wie man Dateien herunterlädt. In iOS reicht es, die Zieldatei anzugeben:

1
2
3
4
5
// iOS only
var httpClient = Ti.Network.createHTTPClient();
httpClient.open("GET", url);
httpClient.setFile(destinationFile);
httpClient.send();

Vorteil daran ist, dass die Daten direkt in die Datei geschrieben werden. In Android besitzt Ti.Network.HTTPClient die Methode “setFile()” nicht. Dort werden die eintreffenden Daten erst in den Arbeitsspeicher geschrieben und erst wenn wir alle Daten erhalten haben und das Load-Event gefeuert wurde, können wir die Daten in eine Datei schreiben:

1
2
3
4
5
6
7
8
// Android only
var httpClient = Ti.Network.createHTTPClient({
    onload: function(event) {
        destinationFile.write(this.responseData);
    }
});
httpClient.open("GET", url);
httpClient.send();

Bei Android-Geräten mit wenig Arbeitsspeicher kann es deshalb zu Problemen kommen.

iCloud-Backup für Dateien verhindern

Seit iOS 5 können Benutzer für ihre Backups iCloud wählen. Standardmäßig werden alle Dateien einer App dort gesichert. Um bestimmte Dateien auszuschließen, muss man es explizit angeben:

1
2
// iOS only
destinationFile.setRemoteBackup(false);

Dateien auslesen

Wenn man eine Datei lesen möchte, die Text enthält, muss man erst myFile.read() aufrufen, was einen Blob zurückgibt, und danach myBlob.toString():

1
Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, "fooDirectory", "bar.html").read().toString();

Heruntergeladene Bilder anzeigen

In der REFA Lexikon App laden wir Bilder für den Offline-Modus herunter und zeigen sie in einer Ti.UI.WebView an, was nichts weiter ist als ein getarnter Browser.

Das Problem war den richtigen Pfad anzugeben, damit das Bild von der WebView gefunden wird. Die Lösung ist letztendlich ganz simpel:

1
destinationFile.resolve();

In meinem HTML-Template ersetze ich dann im “src”-Attribut des <img> Tags den Platzhalter mit dem aufgelösten Pfad.

Schreiben Sie einen Kommentar

Kommentar senden