2016-11-05 2 views
0

У меня есть приложение с UIWebView, которое загружает веб-сайт https://app.bridallive.com/. Раньше он хорошо работал в iPad, но теперь это не так. Не загружается ни в UIWebView (в простейшем возможном приложении), ни в iOS Safari. Хорошо работает в Mac OS. Я пытался диагностировать его:iOS :: Веб-сайт не работает в iOS Safari и UIWebView

-(void) loadWebSite { 
    NSURL * url = [NSURL URLWithString:@"https://app.bridallive.com/#/dashboard?iPadApp=true"]; 
    NSURLRequest * request = [NSURLRequest requestWithURL:url]; 
    [self.webView loadRequest: request]; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self loadWebSite]; 
} 

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { 
    NSLog(@"Error : %@",error); 
} 

NSAppTransportSecurity установлен в YES и веб-сайт имеет действительный и доверенный сертификат.

это то, что я использовал в futher экспериментах:

-(void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [self loadWebSite]; 
} 

, но это не дает каких-либо ошибок.

Может кто-нибудь предложить способ диагностировать это в iOS?

С наилучшими пожеланиями, Андрей

+0

Вы включили 'NSAppTransportSecurity' флаг? – dirtydanee

+0

Да, это флаг установлен на YES, и веб-сайт имеет доверенный и правильный сертификат SSL. –

+0

можете ли вы показать код, с чего вы пытаетесь открыть 'url'? – dirtydanee

ответ

0

UIWebView имеет протокол, UIWebViewDelegate, это поможет вам наблюдать за изменениями в вашем Он реализует несколько метод, используя то, что вы можете наблюдать изменения в вашей UIWebView загрузки lifecyclye:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    NSLog(@"shouldStart"); 
    return true; 
} 

- (void)webViewDidStartLoad:(UIWebView *)webView { 
    NSLog(@"webViewDidStartLoad"); 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    NSLog(@"webViewDidFinishLoad"); 
} 

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { 
    NSLog(@"%@", error); 
    NSLog(@"didFailLoadWithError"); 
} 

Чтобы получить обратный вызов для этих функций, зарегистрируйтесь для делегата в вашем интерфейсе классов, например, в .h.

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController <UIWebViewDelegate> 

@end 

Я создал образец проекта, и при открытии URL, я получаю следующее сообщение об ошибке в didFailLoadWithError обратного вызова:

Ошибка домена = WebKitErrorDomain Code = 101 "(нулевой)"

Кажется, вы не кодируете, что вы запросите правильно. Вы должны кодировать строковое следующим образом:

NSString *encodedString=[[NSString stringWithFormat:@"https://app.bridallive.com/#/dashboard?iPadA‌​pp=true"] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]]; 
    NSURL *weburl = [NSURL URLWithString:encodedString]; 

enter image description here

+0

Это то, что я сделал. Как я уже говорил, приложение полностью работало ранее. Я подозреваю, что это может быть проблемой iOS 10.x или XCode 8. Другие URL-адреса, например say https://google.com, хорошо работают –

+0

Я обновил свой ответ. – dirtydanee

+0

спасибо, но это тоже не работает. Moveover это делает все хуже - бесконечный экран загрузки, как на вашем снимке экрана. Наконец-то я обнаружил ошибку переключения языков в iPad - похоже, что на сайте JavaScript есть ошибка. Я нашел проблему, позволяющую консоль Develper в Mac OS Safari и подключение к iPad Safari. Большое спасибо в любом случае. –

Смежные вопросы