UIWebView & Safari Mobile & Safari Desktop

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UIWebView & Safari Mobile & Safari Desktop

    Hallo,

    ich rufe eine URL in 3 verschiedenen Browsern auf. ( Safari Mobile, UIWebView und Safari Desktop )
    Die URL ist komplett identisch. Wieso schaut die Destkop und die Mobile Version identisch aus?! Wobei die UIWebView Version was komplett anderes lädt?!

    Ich habe die Befürchtung, dass der Provider bei der UIWebView Version eine Werbung schaltet.
    Der Request unterscheidet sich doch nicht von den anderen oder?
    Wenn ja, kann ich diese umgehen?

    Mein Aufruf:
    - (void)showEpub{
    NSMutableString *domaine = [NSMutableString stringWithString:@"http://...readMobile.php?selEpub="];
    NSMutableString *eId = [NSMutableString stringWithString:@"&selID="];
    NSString *gesamtURL = [[[[NSMutableString stringWithString:domaine] stringByAppendingString:epubPfadExt] stringByAppendingString:eId]stringByAppendingString:epubID];
    NSLog(@"Online ePub Url: %@", gesamtURL);

    NSURL *url = [NSURL URLWithString:gesamtURL];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    [self.epubWebView loadRequest:requestObj];
    }


    gruß
    lernen, lernen, lernen :)
  • Hallo macmoonshine,

    das habe ich zuerst auch gedacht. Ich habe den User_Agent auch entsprechend gesetzt. Jedoch ohne Erfolg.

    Ich habe in Safari die Option Entwicklermodus für den Simulator oder das iPhone gefunden. Der zeigt mir aber nur die geladenen Files an. ( also .html, js, und css )
    Gibt es ein Debugging Tool, mit dem ich jeden einzelnen Schritt von dem UiWebView Request bis hin zur Anzeige der Webseite in meinem View nachvollziehen kann???? Ich habe nichts gefunden.
    lernen, lernen, lernen :)
  • Die Agents sehen wohl so aus:

    UIWebView:
    "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_3 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Mobile/7E18"

    Safari Mobile:
    "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_3 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7E18 Safari/528.16"


    Beim WebView fehlt der Eintrag Safari
  • mit NSLOG gibt er mir folgendes aus:

    userAgent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A403


    BTW:
    Ich habe jetzt ein Test Projekt angelegt und einfach die URL (URL)
    für das UIWebView angelegt. Gleiches Problem.
    lernen, lernen, lernen :)
  • @wolf:

    Ich habe den UserAgent jetzt auf deinen String geändert:
    -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    {
    NSMutableURLRequest *r = (NSMutableURLRequest *)request;
    [r setValue:@"Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_3 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7E18 Safari/528.16" forHTTPHeaderField:@"User-Agent"];

    userAgent = [request valueForHTTPHeaderField:@"User-Agent"];
    NSLog(@"userAgent: %@", userAgent);

    return NO;
    }

    Ergebnis ist das gleiche. Die Seite wird nicht geladen =(

    @margroth:
    Ich habe den Desktop und den mobile safari user-agent probiert. Beides funktioniert einwandfrei im Desktop Browser. Nur im UIWebView funktionierts nicht.
    die URL: ereader.website.org/readMobile…d/mobyDick.epub&selID=114
    lernen, lernen, lernen :)
  • ich habs verstanden und Dir ja auch schon geschrieben. Verwende ich im Safari auf dem Desktop unter OSX deinen iPhone User-Agent, dann sehe ich auch die Werbung. Benutze ich den Standard User, sehe ich keine Werbung.
    Das bedeutet: es liegt am User-Agent. Also ändere den auf Standard-Safari/IE oder was auch immer. Dann wird es funktionieren.
  • Ok, soweit verstanden.

    Ich habe jetzt einfach mal den Standard Safari (OSX ) User Agent genommen.
    Gesetzt habe ich es so:

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)req navigationType:(UIWebViewNavigationType)navigationType {
    NSMutableURLRequest *request = (NSMutableURLRequest *)req;

    if ([request respondsToSelector:@selector(setValue:forHTTPHeaderField:)]) {
    [request setValue:@"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17" forHTTPHeaderField:@"User-Agent"];
    NSString *userAgent = [request valueForHTTPHeaderField:@"User-Agent"];
    NSLog(@"userAgent: %@", userAgent);
    }
    return YES;
    }


    den User Agent gibt er mir auch richtig aus:
    "userAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17"

    Ich kriege aber immer noch die Werbeseite.

    Die Methode "shouldStartLoadWithRequest" wird ja auch vorher aufgerufen, bevor er den content lädt. Deswegen verstehe ich es nicht wieso er immer noch die Werbung lädt =(
    lernen, lernen, lernen :)
  • ich kann hier leider deinen Code nicht per Sicht überprüfen oder hier testen.
    Falls der Code richtig ist und immer noch Werbung angezeigt wird, müßtest Du den Netzwerktraffik Dir mal ansehen, was denn tatsächlich dort für Daten übertragen werden.

    Das geht sehr gut, wenn Du über WLAN dich verbindest und den per Portmirroring am Switch den Traffik beobachtes. Alternativ würde auch ein Hub anstatt Switch gehen.
  • Vielen Dank margroth und den anderen für die Hilfe!

    Laut diesem Artikel user_agent kann ich zwar den User-Agent setzen. Dieser wird aber wieder überschrieben.
    Somit hat er immer den falschen USER Agent.

    Mit dieser Methode funktioniert es aber.

    + (void)initialize {
    // Set user agent (the only problem is that we can't modify the User-Agent later in the program)
    NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3", @"UserAgent", nil];
    [[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];
    }
    lernen, lernen, lernen :)