首页 > 解决方案 > 网络扩展视图打印报表

问题描述

我正在NEPacketTunnelProvider使用以下方法从我的视图控制器中实现并加载它:

var vpnManager: NETunnelProviderManager = NETunnelProviderManager()
...
let providerProtocol = NETunnelProviderProtocol()
providerProtocol.providerBundleIdentifier = "AA.BB.CC"
providerProtocol.serverAddress = "<something>"
...
self.vpnManager.localizedDescription = "My app"
self.vpnManager.protocolConfiguration = providerProtocol
self.vpnManager.isEnabled = true
self.vpnManager.connection.startVPNTunnel()

标有“...”的部分似乎无关紧要。

我的理解(尽管在文档中并不清楚)是,当我这样做时,我有一个使用 BundleId 创建为“NetworkExtension”类型的目标,AA.BB.CC扩展将被正确加载和执行。所以,我的理解是startTunnel(from NEPacketTunnelProvider) 将从上面的代码块中隐式调用。

我在方法NSLog("STARTING TUNNEL!!!!!")的顶部放了一个权利startTunnel,但不知道在哪里可以看到。到目前为止,我已经查看了以下日志:

  1. 安慰
  2. 窗口 > 设备和模拟器 > 查看设备日志

这些似乎都没有显示扩展内的日志。问题是在我可以附加到正在运行的进程之前扩展似乎崩溃了,所以我觉得我只是“错过”了那个日志,因为我不能足够快地附加。

简短的问题

如何以足够快的速度连接到正在运行的网络扩展,以免错过NSLog立即运行的网络扩展?

标签: iosios-extensions

解决方案


来自网络扩展的日志不会转到 Xcode 控制台。要查看来自网络扩展的日志,您必须按照以下步骤操作。

  1. 打开控制台应用程序。

  2. 选择运行网络扩展的 iOS 设备,您将看到来自设备的所有日志。

  3. 按网络扩展目标名称过滤日志现在您将只看到来自网络扩展的日志。

如何以足够快的速度附加到正在运行的网络扩展?

为了解决这个问题,我一直在做的是,在日志语句之前将线程置于睡眠状态。

sleep(60)

它会给您足够的时间来附加网络扩展进程以进行调试。


推荐阅读