UIImage mit imageWithData online herunterladen. Pfad und Dateiname bleibt gleich, nur das Bild ändert sich bei gleichbleibenden Dateinamen. Mit WLan funktioniert das, nur über UMTS nicht!

  • UIImage mit imageWithData online herunterladen. Pfad und Dateiname bleibt gleich, nur das Bild ändert sich bei gleichbleibenden Dateinamen. Mit WLan funktioniert das, nur über UMTS nicht!

    Hallo Entwickler,

    ich habe heute ein sehr seltsames Problem.

    Nach längerer Recherche bin ich einfach nicht zu einer Lösung gekommen.

    Ich möchte ONLINE ein Bild herunterladen und als UIImage in der App anzeigen.

    Pfad zum Bild: :/pfad/
    Dateiname Bild: bild.jpg
    Gesamtpfad zur Datei: ./pfad/bild.jpg

    Ich habe ein einziges Bild auf dem Webserver.
    Die Bilder möchte ich ggf. später austauschen - der Dateiname soll allerdings immer gleich bleiben.

    Somit läd sich die App zunächst Bild xxx herunter und dann später Bild yyy - wobei der Dateiname 'bild.jpg' immer gleich bleibt.

    Nachfolgender Code funktioniert mit dem iPhone-Simulator und dem iPhone unter WLAN! Nur mit UMTS funktioniert der Code nicht.
    Das zuletzt geladene Bild wird immer angezeigt - als ob der Content irgendwo gecached werden würde.

    PHP-Quellcode

    1. NSData *_image = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"./pfad/bild.jpg"];
    2. imageView.image = [UIImage imageWithData:_image]; // Hier sollte immer das aktuelle Bild vom Webserver geladen werden
    3. [imageView setAlpha:1.0];


    Das funktioniert soweit auch ganz gut, nur wenn ich bei meinem iPhone WLan deaktiviere, läd sich die App immer nur das letzte Bild aus irgendeinen Cache.
    Ändere ich online das Bild, oder lösche das Bild komplett auf dem Webserver, so wird immer noch das zuletzt heruntergeladene Bild angezeigt.

    Woran liegt das?

    Was kann ich tun um diesen Effekt zu umgehen.
    Was mache ich falsch?

    Für jede Anregung aber auch Kritik bin ich sehr dankbar! :)

    Vielen lieben Dank euch Allen!


    Schönen Gruss
  • MCDan schrieb:

    Dies könnte am Proxy des Netzbetreibers liegen. Versuche mal beim Pfad zum Bild einen Zufallswert z.B. ?1239473723 anzuhängen, so dass z.B. folgender Pfad entsteht:

    ./pfad/bild.jpg?1239473723

    Den angehängten Zufallswert solltest Du bei jedem Abruf des Bildes vom Server ändern.

    Vielen Dank für deine Hilfe!
    Dein Lösungsansatz war sehr gut. Ich konnte das Problem lösen.
    Nachfolgend der Code:

    PHP-Quellcode

    1. int zufallszahl = 1000 + arc4random() % 10000;
    2. NSString *PFAD_ZUM_BILD = [NSString stringWithFormat:@"%@?%i", @"./pfad/bild.jpg", zufallszahl];


    :thumbsup:
  • fwtag schrieb:

    Es ist schon erstaunlich, aber wir hatten bereits öfters Fragen zu Problemen hier, die darauf beruhen, dass der Netzbetreiber Daten cached, "verändert" (v.a. Leerzeichen entfernt) und sonstwie in die Datenströme eingreift.

    Noch krasser ist das bei mobilen WebSeiten. Die musst Du nicht nur an Browser / Gerät sondern u. U. an den Netzbetreiber anpassen.
    „Meine Komplikation hatte eine Komplikation.“