Xcode 7 UIWebView没有加载网址

时间:2015-09-22 14:03:11

标签: ios xcode uiwebview

我在我的应用程序中使用UIWebView,它在Xcode4,5,6模拟器中都运行良好。但不适用于Xcode 7模拟器,我不知道为什么,模拟器中没有警告或错误,屏幕只显示空白页面。请帮我。感谢。

#import "IndexViewController.h"

@interface IndexViewController ()

@end

@implementation IndexViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *urlString = nil;
    NSString *languageCode = [[NSLocale preferredLanguages] objectAtIndex:0];
    if ([languageCode isEqualToString:@"zh-Hans"]) {
        urlString = @"http://www.originoftime.net/index-cn";
    }else if ([languageCode isEqualToString:@"zh-Hant"]) {
        urlString = @"http://www.originoftime.net/index-cn";
    }else{
        urlString = @"http://www.originoftime.net/index-en";
    }
    NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];

    NSURLRequest *urlrequest = [NSURLRequest requestWithURL:url];

    [_Index loadRequest:urlrequest];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

2 个答案:

答案 0 :(得分:14)

iOS9的Xcode 7现在强制您不使用HTTP呼叫,而是使用HTTPS呼叫。

这是AppTransportSecurity中增强的安全点。

试试这个:

  • 转到您的info.plist
  • 添加名为NSAppTransportSecurity
  • 的字典
  • 为此名称添加一个布尔属性,名为NSAllowsArbitraryLoads
  • 将其传递给TRUE

重新加载您的应用。

我建议你,如果Apple希望阻止HTTP(不安全)呼叫是有充分理由的。 http://www.originoftime.net/index-cn有一个HTTPS,但服务器证书似乎是自签名的。

如果此解决方法适合您,请告诉我

来自法国的干杯

答案 1 :(得分:1)

您是否实施了Web视图委托方法?特别是:

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

如果加载失败,那将告诉您问题所在。

很可能是与为网络访问强制执行的新安全模型相关的错误。您可以通过将以下内容添加到Info.plist文件中来覆盖此新行为。只需编辑XML并将其粘贴到:

<key>NSAppTransportSecurity</key>  
<dict> 
   <key>NSAllowsArbitraryLoads</key><true/>  
</dict>  

这些更改总结如下:https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html