Clexa
Erdapfel
- Registriert
- 18.10.11
- Beiträge
- 3
So frisch aufs iPad geladen, und geändert und ...... Es geht nicht
Ich bin über eine Google-Suche auf diesen Thread gestossen und denke, als Autor von iCab Mobile könnte ich ja mal etwas Licht ins Dunkel bringen...
iOS 5 hat leider einige dicke neue Fehler, die sich u.a. auf iCab Mobile und andere Browser (und auch andere Apps) auswirken. Das User-Agent-Problem hängt indirekt vermutlich ebenfalls an den neuen iOS 5 Bugs mit dran.
Wenn man unter iOS eine Webseite laden will, muss man die von iOS bereitgestellte Web-Engine verwenden. Dieser übergibt man ein HTTP-Request-Objekt, in das man URL, Methode (GET, POST, usw) sowie eigene HTTP- Header usw. ablegt. Die Web-Engine kopiert intern dieses HTTP-Request-Objekt mehrere Male, um seine eigene Informationen hinzuzufügen, und dabei auch den Standard-UserAgent-Header dort reinzuschreiben. Zum Schluss wird dann ein HTTP-Connection-Objekt erzeugt, welches den Kotakt zum Server übernimmt und die Daten verschickt und von Server die Antwort entgegennimmt.
Browser haben sich bisher in die Methode reingehängt, über die man HTTP-Header im HTTP-Request-Objekt setzen konnte. Dort haben sie einfach auf den UserAgent-Header geschaut, wenn der von der Webengine gesetzt wurde, haben die Browser den einfach durch den "richtigen" ausgetauscht. Das ging gut, weil die Web-Engine bisher die offiziellen Systemaufrufe hierfür verwendet haben.
Ab iOS 5 nutzt das iOS aber intern nicht mehr die offiziellen Systemaufrufe, sondern "murkst" sich anderweitig die Objekte zusammen. Daher können Browser den UserAgent nicht mehr setzen. Das UserAgent-Problem ist dabei nicht nicht mal wirklich schlimm, denn schlimm (und daher ein dicker Bug) ist, dass das iOS nun einige der ursprünglichen Daten des HTTP-Requests einfach vergisst. Das führt aktuell dazu, dass die Datei-Uploads in iCab Mobile unter iOS 5 auch nicht funktionieren.
Viele Browser verwenden allerdings noch alternative Verfahren, um den UserAgent zu setzen, was aber dann nur beim App-Start funktioniert (d.h. ein echter App-Start, nicht nur ein Aktivieren aus dem Hintergrund). Das erklärt, warum manche bei Bild.de Erfolg hatten, manche aber nicht. Nach dem ändern des UserAgents müsste das App erst abgeschossen und nie gestartet werden. Aber das ganze würde bei Seiten-spezifischen UserAgent-Einstellungen versagen.
Für iCab Mobile ist eine Lösung für die meisten iOS 5-Probleme das nächste Update, welches bereits bei Apple eingereicht ist. Die Änderung des UserAgents sowie die Uploads und einige andere Dinge werden dort wieder funktionieren. das Update beinhalten die notwendigen Workarounds.
Es gibt aber auch Bugs in iOS 5, die nur Apple beheben kann. Z.B. funktioniert das Übertragen von Dateien (also z.b. eine herunter geladene Video-Datei an einen Movieplayer) zwischen den Apps nur noch für "kleine" Dateien (bis ca. 300 MB) zuverlässig. Das iOS bricht Dateitransfers zwischen Apps nun ab, wenn sie länger als rund 1 min dauern (was für rund 300 MB ausreicht). Das betrifft alle Apps, die das "Öffnen in"-Feature verwenden.