iOS 的能力层使用 Swift Package Manager (SPM) 来管理,每个能力都是一个独立的 Swift Package,可以单独打包为 SDK。
xdz_ios/
├── BaseCore/ # 基础核心层(Swift Package)
├── BaseCommon/ # 业务封装层(Swift Package)
├── CapabilityPush/ # 推送能力层(独立的 Swift Package)✅
├── CapabilityShare/ # 分享能力层(独立的 Swift Package)
├── CapabilitySocketIO/ # SocketIO 能力层(独立的 Swift Package)
└── xdz/ # 业务层(Xcode 项目,依赖所有能力层)
mkdir -p CapabilityPush/Sources/CapabilityPush
mkdir -p CapabilityPush/Tests/CapabilityPushTests
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "CapabilityPush",
platforms: [
.iOS(.v15)
],
products: [
.library(
name: "CapabilityPush",
targets: ["CapabilityPush"]
)
],
dependencies: [
// 依赖 BaseCore(本地路径)
.package(path: "../BaseCore")
],
targets: [
.target(
name: "CapabilityPush",
dependencies: [
.product(name: "BaseCore", package: "BaseCore")
]
),
.testTarget(
name: "CapabilityPushTests",
dependencies: ["CapabilityPush"]
)
]
)
在 CapabilityPush 中实现 BaseCore 中定义的接口(如 IPushService)。
cd CapabilityPush
swift build # 编译
swift test # 运行测试
# 打标签
git tag 1.0.0
git push origin 1.0.0
# 在其他项目中使用
dependencies: [
.package(url: "https://github.com/your-org/CapabilityPush.git", from: "1.0.0")
]
// 在 xdz 项目的 Package.swift 中
dependencies: [
.package(path: "../CapabilityPush"),
.package(path: "../BaseCore")
]
# 构建 XCFramework
xcodebuild archive \
-scheme CapabilityPush \
-destination "generic/platform=iOS" \
-archivePath "./build/CapabilityPush-iOS.xcarchive" \
SKIP_INSTALL=NO \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES
# 创建 XCFramework
xcodebuild -create-xcframework \
-archive "./build/CapabilityPush-iOS.xcarchive" \
-framework "CapabilityPush.framework" \
-output "./build/CapabilityPush.xcframework"
将生成的 CapabilityPush.xcframework 打包分发,其他项目可以直接导入使用。
如果需要支持 CocoaPods,可以创建 CapabilityPush.podspec:
Pod::Spec.new do |s|
s.name = 'CapabilityPush'
s.version = '1.0.0'
s.summary = '推送能力层模块'
s.homepage = 'https://github.com/your-org/CapabilityPush'
s.license = { :type => 'MIT' }
s.author = { 'Your Name' => 'your@email.com' }
s.source = { :git => 'https://github.com/your-org/CapabilityPush.git', :tag => s.version }
s.ios.deployment_target = '15.0'
s.source_files = 'Sources/CapabilityPush/**/*.swift'
s.dependency 'BaseCore'
end
xdz.xcodeprojCapabilityPush 目录import CapabilityPush
import BaseCore
// 使用推送服务
let pushService = PushServiceFactory.create()
pushService.initialize(appKey: "your-key", channel: "App Store", debugMode: false)
| 能力层 | 说明 | 状态 |
|---|---|---|
| CapabilityPush | 推送能力(JPush) | ✅ 已创建示例 |
| CapabilityShare | 分享能力(友盟分享) | ⏳ 待创建 |
| CapabilitySocketIO | SocketIO 能力 | ⏳ 待创建 |
| CapabilityBLE | 蓝牙能力 | ⏳ 待创建 |
| CapabilityNFC | NFC 能力 | ⏳ 待创建 |
| CapabilityQRCode | 二维码能力 | ⏳ 待创建 |