Skip to content

iOS 集成指南

核心库引入 (XCFramework)

SDK 核心以 TunnelCore.xcframework 形式提供,支持真机 (arm64) 和模拟器 (x86_64)。

  1. 在 Xcode 中,选择您的 Target -> General
  2. TunnelCore.xcframework 拖入 Frameworks, Libraries, and Embedded Content
  3. 确保状态设置为 Embed & Sign

网络扩展 (Network Extension)

iOS 平台实现应用级透明代理通常需要 NetworkExtension。

  1. 在 Xcode 中添加 Network Extension Capability。
  2. 选择 Packet Tunnel 类型。
  3. 配置您的 PacketTunnelProvider 类。

提示: 在大多数应用集成场景中,您只需要在 App 内部启动 SOCKS5/HTTP 监听,并手动配置网络库(如 URLSession, AFNetworking, Alamofire)使用该代理即可,无需复杂的 NetworkExtension。

Info.plist 配置

确保添加了网络权限声明,并在需要后台运行时配置后台模式:

xml
<key>UIBackgroundModes</key>
<array>
    <string>network-authentication</string>
    <string>fetch</string>
</array>

<!-- 如果您使用了本地网络权限 -->
<key>NSLocalNetworkUsageDescription</key>
<string>我们需要访问本地网络以启动代理隧道</string>

原生调用示例 (Swift)

swift
import TunnelCore

// 1. 启动隧道
let configJson = "{...}"
let result = TunnelCoreStartTunnel(configJson)

if result == "success" {
    print("Tunnel started")
} else {
    print("Error: \(result ?? "unknown")")
}

// 2. 获取统计数据 (JSON 字符串)
if let stats = TunnelCoreGetStats() {
    print("Stats: \(stats)")
}

// 3. 停止
TunnelCoreStopTunnel()

常见问题 (FAQ)

1. Bitcode 支持

由于 Go 编译器不支持 Bitcode,请在 Xcode 项目设置中将 Enable Bitcode 设置为 No

2. 模拟器运行

我们提供的 XCFramework 已包含模拟器切片。但请注意,模拟器网络环境与真机不同,部分高级加密功能可能因指令集差异导致性能下降。建议以 真机测试 为准。

基于 MIT 许可发布