cordova 如何在iOS应用中显示Iframe

d8tt03nd  于 2022-11-15  发布在  iOS
关注(0)|答案(2)|浏览(202)

我有一个通过cordova(cordova而不是ionic)创建的应用程序,适用于Android和iOS。该应用程序集成了iFrame,在生成的APK中运行良好。它有一个“不允许明文HTTP流量”错误,使用此问题Android 8: Cleartext HTTP traffic not permitted中发布的一些说明修复了该错误。
但对于iOS 11来说,Iframe不起作用,也不显示任何错误信息,它加载了框架但内部是空白的,生成的应用充满了弃用。
有没有隐私政策,像明文的,但为iOS?或者我怎么知道为什么iFrame是不工作?

pgvzfuti

pgvzfuti1#

由于您尝试在Web视图中加载纯HTTP内容,因此可能被App Transport Security阻止。您可以将NSAllowsArbitraryLoadsInWebContent键添加到应用的Info.plist中,设置值YES(布尔类型),以便可以加载HTTP内容。
如果可能的话,最好将该内容托管在HTTPS下。这不仅更安全,而且Apple还要求提供启用此例外的理由,并且它可能会使应用程序接受更严格的审查(请参阅https://developer.apple.com/cn/documentation/security/preventing_insecure_network_connections#3138036)。

nafvub8i

nafvub8i2#

我已经成功地用纯html,css,javascript创建了许多cordova应用程序,这些应用程序都可以和iframe一起工作。iframe的内容来自我的web服务器,并填充它。我的网站是https和ssl,所以我用的url是https://,也许这就是你需要的。我已经用iframe,object和embed试过了,所有3个都工作正常。下面是object的代码示例

<object name="search_iframe" data="https://myurl.com/index1.html"
width="100%"
height="90%"
type="text/html">
</object>

在config.xml文件中,我添加了

<allow-navigation href="https://www.myurl.com*" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />

这些是我加载的插件。

<preference name="DisallowOverscroll" value="true" />
    <preference name="android-minSdkVersion" value="22" />
    <preference name="android-targetSdkVersion" value="29" />
    <plugin name="cordova-plugin-device" source="npm" />
    <plugin name="cordova-plugin-device-motion" source="npm"  />
    <plugin name="cordova-plugin-device-orientation" source="npm"  />
    <plugin name="cordova-plugin-splashscreen" source="npm"  />
    <plugin name="cordova-plugin-whitelist" source="npm" />

我的应用程序一切正常。截至2022年,最高iOS 15. 2

相关问题