ios - 网络扩展查看打印报表

标签 ios ios-extensions

我正在实现一个 NEPacketTunnelProvider 并使用以下方法从我的 View Controller 加载它:

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 AA.BB.CC 创建为“NetworkExtension”类型的目标,扩展将被正确加载和执行。因此,我的理解是 startTunnel (来自 NEPacketTunnelProvider)将从上面的代码块隐式调用。

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

  1. 控制台
  2. 窗口 > 设备和模拟器 > 查看设备日志

这些似乎都没有显示扩展程序内的日志。问题是,在我附加到正在运行的进程之前,扩展似乎崩溃了,所以我感觉我只是“丢失”了该日志,因为我无法足够快地附加。

简短问题

如何足够快地附加到正在运行的网络扩展,以便我不会错过立即运行的 NSLog

最佳答案

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

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

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

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

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

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

sleep (60)

这将为您提供足够的时间来附加网络扩展进程进行调试。

关于ios - 网络扩展查看打印报表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56617923/

相关文章:

ios - Tableview reloadRowsAtIndexPaths 获得 50% CPU 内存?

ios - 如何抑制 `warning: linking against dylib not safe for use in application extensions` ?

ios - 在 WatchKitExtension 中混合 swift 和 objective-c

iphone - 如何在 iPhone 320px 屏幕上渲染 600px 图像

ios - 从我的应用程序打开 iMessage

ios - 通过 iOS 8 Action Extension 将选定的文本从 Safari 发送到已安装的应用程序?

iphone - 如何在 iOS 上创建漂亮的按钮?

ios - 如何使用 realm swift 检索另一个对象列表中的对象?

ios - 如何在 iOS Swift 中使用 alamofire 获取 json 响应?