来自http的图片不会加载到Xamarin iOS Project中

时间:2018-05-25 01:36:03

标签: xamarin.forms

我知道之前已经讨论过,但似乎没有什么对我有用。我创建了一个新项目作为测试,并从两个来源添加了相同的图像。一个http和一个https,我只能显示https。我已经编辑了我的Info.plist文件并添加了。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoadsInWebContent</key>
    <true/>
</dict>

这是我的页面。

 <?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:TestImage" x:Class="TestImage.TestImagePage">
    <StackLayout>
        <Image Source="https://www.closersharing.com/Images/Alarm.png"/>        
        <Image Source="http://newhorizonfellowship.com/wp-content/uploads/2018/05/Alarm.png"/>        
    </StackLayout>
</ContentPage>

我还将HTTPClient实现更改为NSURISession(iOS 7+)

我不知所措。

2 个答案:

答案 0 :(得分:0)

请尝试以下密钥以允许所有连接。

&#13;
&#13;
 <key>NSAppTransportSecurity</key>
  <dict>
    <!--Include to allow all connections (DANGER)-->
    <key>NSAllowsArbitraryLoads</key>
        <true/>
  </dict>
&#13;
&#13;
&#13;

如果它不适合你,请告诉我。

答案 1 :(得分:0)

  

如果您的应用需要从非安全加载并显示网页内容   网站,将以下内容添加到您应用的Info.plist文件以允许网络   Apple Transport Security(ATS)正确加载页面   仍然为应用的其余部分启用了保护:

<key>NSAppTransportSecurity</key>
<dict>
  <key> NSAllowsArbitraryLoadsInWebContent</key>
  <true/>
</dict>
     

您可以选择对应用进行以下更改   Info.plist文件完全禁用所有域和互联网的ATS   通信

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

来源:official documentation

由于您的示例中没有网页,因此很可能您打算使用完全禁用ATS的第二个示例。在认真考虑第二个选项之前,我强烈建议您理解security risks

除了您原来的问题之外,也许只是将应用程序与图像一起发布以避免这样的复杂化。如果你仍想下载图片,那么将它们缓存是有意义的,请检查FFImageLoader