无法使WebKit显示网页

时间:2019-03-26 15:46:15

标签: ios objective-c webkit mobile-webkit

我正在尝试找出如何在IOS应用程序中显示网页。我已尝试仔细遵循可以找到的信息。这是我正在使用的:

@implementation FirstViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.productURL = @"http://google.com/";

    NSURL *url = [NSURL URLWithString:self.productURL];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    _webView = [[WKWebView alloc] initWithFrame:self.view.frame];
    [_webView loadRequest:request];
    _webView.frame = CGRectMake(self.view.frame.origin.x+50,self.view.frame.origin.y+50, self.view.frame.size.width-100, self.view.frame.size.height-200);
    printf("\nReady to add the Subview");
    self.view.backgroundColor = [UIColor blueColor];
    [self.view addSubview:_webView];
    printf("\nSubView has been added");
 }

@end

框架在上面偏移了,因此我可以为其着色并看到子视图将位于此处。据我了解,该网页应显示在子视图中,但我只会得到一个空白页。

我还向我的Info.plist中添加了NSExceptionDomains字典,并为其添加了google.com,其中有一个字典包含设置为true的NSIncludesSubdomains和设置为true的NSExceptionAllowsInsecureHTTPLoads,这可能是问题所在,但无济于事。我试过几个网址和同样的东西。

我如何找出正在发生的事情并加以解决?

2 个答案:

答案 0 :(得分:0)

我发现了问题!显然,我需要将密钥“ App Transport Security设置”作为字典添加到我的Info.plist,并为其添加密钥“允许任意加载”。现在显示!

我以前找不到这个,但是当我添加并添加它时,它与上面的代码一样工作正常。

答案 1 :(得分:0)

我知道您已经找到了解决方案。但是在这里我想解释一下代码有什么问题。该代码实际上很好。问题是您正在尝试打开不安全的URL http://google.com/。任何以http://开头的URL都将被iOS阻止。仅允许以https://开头的URL,而无需任何“应用程序传输安全设置”。

在您的情况下,您实际上有2个选择:

  
      
  1. 添加应用程序传输安全设置。
  2.   
  3. 确保您仅呼叫https:// URL。您可以更改https://google.com,它应该工作而无需添加任何应用程序传输   安全设置。
  4.   

对于添加的选项,“允许任意负载”可以进行测试,但是真正需要做的是在“应用程序传输安全设置”中添加例外域。这样一来,您的应用将仅接受相关的URL,而不接受恶意URL注入可能打开的任何旧URL。