在运行时添加NSExceptionDomains

时间:2015-10-20 03:26:39

标签: objective-c xcode ios9

我已在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是不行的,但是我没有选择。

任何人都知道如何做到这一点?

1 个答案:

答案 0 :(得分:0)

我进入了同一个十字路口,我得到的解决方案是将我的应用程序直接传送到动态远程服务器并获得响应,我在中间添加我的服务器,其任务是成为中间人应用程序和动态远程服务器。这样您只需将自己的服务器添加到NSExceptionDomains Info.plist中,在我的情况下,已添加。这是我添加到我自己的远程服务器的php脚本,它作为我的应用程序和用户的远程服务器之间的中间人:

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

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