我在 MacOS 上使用 packetTunnelProvider 实现了每个应用程序的 VPN,功能齐全。我想从 sourceAppAuditToken 获取 PID,但它总是为零。
这是代码:
self.packetFlow.readPacketObjects { packets in
for packet in packets {
if let auditToken = packet.metadata!.sourceAppAuditToken {
log.debug("ok")
} else {
log.debug("No audit Token")
}
}
}
我读了很多关于这个问题的答案,但都在 NEFilterFlow 上解决了,而且它们实际上不适用于 PacketTunnelFlow
请更换
packet.metadata!.sourceAppAuditToken
与
packet.metadata?.sourceAppUniqueIdentifier
并验证它是否为零。
if packet.metadata?.sourceAppUniqueIdentifier == nil { 每个应用程序 VPN 未正确实施}