CanOpenUrl方法不适用于ios 9

时间:2016-03-02 11:40:30

标签: ios objective-c swift deep-linking

我在我的应用程序中使用了CanOpenUrl方法,它在iOS 8.4上运行但是当我将模拟器更改为9.2时,它无效。我找不到原因。这些是我的代码;

if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"deeplinking://"]]){
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"deeplinking://"]];
}
else{
     NSLog(@"not working!");
}

任何人都可以帮助我吗?谢谢,哈利尔。

4 个答案:

答案 0 :(得分:6)

出于安全目的,Apple在iOS 9 and above中引入了NSAllowsArbitraryLoads的新概念,需要

您必须在YES文件的NSAppTransportSecurity字典中添加info.plist密钥至 <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>

例如,

ISNULL((LTRIM(RTRIM(Masters.comment1))+';'+LTRIM(RTRIM(masters.comment2))),'')Note1 ,

enter image description here

您可以在apple中看到此文档。例如

enter image description here

答案 1 :(得分:3)

.plist

中添加以下内容
  

应用传输安全设置字典

     

允许任意加载布尔值是

答案 2 :(得分:1)

请实施应用程序传输协议

添加

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
pist中的

答案 3 :(得分:0)

上述答案是正确的,但不建议允许所有仲裁负载,因为它允许执行所有非安全连接。相反,您可以只允许某些特定的网址在没有ssl证书的情况下工作,这是推荐的方式。

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>yourserver.com</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow HTTP requests-->
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <!--Include to specify minimum TLS version-->
      <key>NSTemporaryExceptionMinimumTLSVersion</key>
      <string>TLSv1.1</string>
    </dict>
  </dict>
</dict>