无法加载图像cordova - ios 9

时间:2015-10-05 11:09:11

标签: angularjs image cordova cross-platform ios9

真的是一个古怪的问题,它一直都在工作,但是当我们尝试将ix 5的iphone 5s中的跨平台应用程序构建时,图像不会出现,图像也不会出现api到img src工作,特别是每当我尝试调用以下代码时。

<img ng-if="eachItem.Image.length > 0" 
src="https://<name hidden>.s3.amazonaws.com/images/{{eachItem.Image}}"
fallback-src="images/no_foto.jpg" alt="" class="spac-bdr">

但有趣的是,ios 8中的一切都运行正常。所有的apis都工作正常。只是图像不会加载。

但是使用相同的代码构建的Android应用程序没有这样的问题。它似乎影响仅在具有ios 9 OS的设备上运行的应用程序。

任何想法如何克服这个问题?

4 个答案:

答案 0 :(得分:2)

认为尝试从其他服务器访问图像时存在一些问题。虽然api指向不同的api。以下对plist的补充帮助我解决了这个问题。

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

答案 1 :(得分:2)

正如我在@Kailas的答案中所说,他发布的方式不是推荐方式。请读给大家:考虑应用程序的安全性!

虽然我已经告诉并链接了我对iOS 9 Ajax / ATS问题的详细解答,但由于完整性,我将在这里做一个完整的引用。

如此全面引用 - Original post over here

据我了解整个ATS( App Transport Security - iOS 9 ),来自area28的推荐方法不应该是您在应用程序中使用的方法。

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

这将允许对每个域的所有外部请求绝对不是您应该使用它的方式。在我看来,您应该在<dict>中定义一个新info.plist并将此代码添加到其中(编辑info.plist您可以使用普通文本编辑器,例如崇高文本等):

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>domain.tld</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSTemporaryExceptionMinimumTLSVersion</key>
                <string>TLSv1.1</string>
            </dict>
        </dict>
    </dict>

这只允许对您指定的域的请求。描述的方式是apple introduced on the WWDC 2015。正如您在屏幕截图中看到的那样,它是苹果希望用户使用它的方式。

如果您还没有指定任何内容,那么您将获得

  

无法加载包含错误的网页:无法加载资源   因为App Transport Security策略要求使用安全   连接。

所以,像我说的那样改变它,错误就消失了。 enter image description here

答案 2 :(得分:1)

确保config.xml文件中的路径来源具有提取图像所需的域(例如,我的图像是从AWS S3提供的,因此我需要以下这一行)

<access origin="*s3.amazonaws.com*" subdomains="true" />

我在从xCode构建之前将其添加到.plist文件中解决了我的问题。

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

答案 3 :(得分:0)

如果您正在使用cordova cli,则必须手动对config.xmlplugin.xmlinfo.plist文件进行更改。从platforms/ios/ios.json文件中删除配置。这将重建每个cordova构建的所有以前的文件。 我在从图形api加载图像时遇到问题,所以我从ios.json文件中删除了它。

{
   "xml": "<access origin=\"https://graph.facebook.com\" />",
   "count": 1
}