【问题标题】:Adding NSExceptionDomains in Runtime在运行时添加 NSExceptionDomains
【发布时间】:2015-10-20 03:26:38
【问题描述】:

我已成功将NSAppTransportSecurity > NSExceptionDomains 添加到Info.plist 文件中,例如:

<key>NSAppTransportSecurity</key>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
    <key><!-- your_remote_server.com / localhost --></key>
    <dict>
        <key>NSIncludesSubdomains</key>
        <true/>
        <key>NSExceptionAllowsInsecureHTTPLoads</key>
        <true/>
        <key>NSExceptionRequiresForwardSecrecy</key>
        <true/>
    </dict>
<!-- add more domain here -->
</dict>

但是有一个问题,我们有这个提供者,我们可以在其中获取 rss 提要并显示在应用程序中,而 NSAppTransportSecurity 正在阻止它们。我想在NSExceptionDomains 中动态添加当前活动的提供者并删除那些不活动的。

我知道在运行时修改Info.plist 是不行的,但我别无选择。

有人知道怎么做吗?

【问题讨论】:

  • 不是不能修改Info.plist,而是不能。它是只读的。除了指定 NSAllowsArbitraryLoads 键之外,您无法做任何您想做的事情。
  • @rmaddy,你的意思是我别无选择,只能手动一一添加?那么我们如何远程更改提供者呢?还有其他方法可以实现吗?
  • Info.plist 只能通过提交应用更新来更改。
  • @rmaddy,每次更新都更改提供程序,这就是我要避免的。我想我们真的别无选择吗?嗯..希望苹果对此有一些更新,或者可能支持至少两个 Info.plist 文件(一个是可编辑的)

标签: objective-c xcode ios9


【解决方案1】:

我在那里遇到了同一个十字路口,我得到的解决方案不是将我的应用程序直接与动态远程服务器通信并获得它的响应,而是将我的服务器添加到中间,它的任务是成为两者之间的中间人应用程序和动态远程服务器。这样,您只需将自己的服务器添加到NSExceptionDomains Info.plist,在我的例子中,它已经被添加了。这是我添加到我自己的远程服务器的 php 脚本,它充当我的应用程序和用户远程服务器之间的中间人:

<?php
   echo (file_get_contents($_REQUEST["scriptUrl"]));
?>

如果您使用这种方法,您只需将调用用户远程服务器的脚本 url 作为 scriptUrl 的参数发送。 希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 2016-01-02
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 2019-06-07
    • 2011-10-21
    • 2015-03-24
    相关资源
    最近更新 更多