我正在编写一个iOS应用程序,其中包括一个telnet服务器。当然,它一开始就会开始监听连接。
当我在模拟器中运行应用程序时,Mac OS X(我碰巧在10.7.3上)提示我允许或拒绝我的应用程序接受传入的网络连接。这是Mac OS X用于所有未签名的联网应用程序的标准防火墙消息。
我厌倦了每天点击“允许”五十次或更多次,所以我想方设法将我的应用程序永久添加到防火墙允许的应用程序列表中。
我尝试了以下内容。
在最后一步中做出了重大决定。您可以在该包上添加.app应用程序包或Show Contents,并在其中添加“Unix可执行文件”。我尝试了两种方法。
有趣的是,防火墙实际上会暂时停止向你发出有关app- 的警告。然而,经过几次运行后,我不清楚哪个事件确实导致了这种变化,但它发生在半小时左右的时间对我来说,一般来说 - 防火墙再次开始警告应用程序。
如何将防火墙设置为永久允许我的iOS应用程序?
当然,我可以通过禁用Mac OS X防火墙来绕过这整个问题。我也可以通过砍掉它来避免再次在我的脚下划伤。这些行动方案都没有向我推荐。
你会建议什么?
答案 0 :(得分:20)
所以我们想要取消以下对话框
每次激活 Xcode iOS模拟器时都会出现您是否希望应用程序“NNN.app”接受传入网络 连接吗?
。 我相信现在有一个解决方案。基于this博客的答案。
只需在终端窗口中运行以下命令:
#temporarily shut firewall off:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
#put Xcode as an exception:
/usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/Xcode.app/Contents/MacOS/Xcode
#put iOS Simulator as an exception:
/usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator
#re-enable firewall:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
对我而言,它有效。请注意模拟器地址是根据Xcode 8。
答案 1 :(得分:12)
在尝试了一段时间之后,我发现手动将可执行文件本身添加到防火墙“允许”列表会产生所需的结果。您不在.app的Contents文件夹中添加.app,而是添加“Unix”可执行文件。我相信我之前尝试过这个文件没有成功,但目前它正在运作。
答案 2 :(得分:3)
我认为最好的解决方案可能是编写将应用程序保存到防火墙的过程。
如果我没记错的话,最新的OSX防火墙实际上很聪明地识别允许的二进制文件的应用程序和指纹。这可以防止仅仅命名恶意软件“system32.exe”并避开防火墙这种令人惊讶的有效策略。如果是这种情况,你的应用程序将被(正确地)阻止,因为它不是同样的二进制文件,并且没有任何解决方法。
因此,尝试编写防火墙脚本,允许进程并将其合并到构建过程中。
答案 3 :(得分:1)
手动将可执行文件手动添加到防火墙的允许列表中我从未幸运。这是使用自动鼠标点击的解决方案:
/usr/local/bin
。Allow
按钮的屏幕坐标。 (在我的例子中,这些是x:750,y:600。)使用此内容创建脚本(w:
是等待时间,以毫秒为单位):
/usr/local/bin/cliclick c:750,600 w:1500 m:+0,+0 c:.
(我无法让CLIclick
无法“移动”到同一位置(m:+0,+0
部分)并再次点击c:.
的同一位置。)< / p>
Preferences / Behaviors
并添加上面的脚本。
答案 4 :(得分:-1)
我不知道这是不是正确的方式,但对我而言。