

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.




