iOS/tvOS/macOS 1.6.6 迁移指南¶
本文适用于从旧版 iOS SDK / macOS SDK 迁移到 SDK 1.6.6 及以上版本的项目。1.6.6 起,Apple 平台主 SDK 统一为 GuanceSDK,iOS、tvOS、macOS 共用同一主 SDK。
macOS Alpha 说明
macOS 当前为 Alpha 版本,不承诺所有 iOS 功能都支持。接入 macOS 前,请先在测试环境验证初始化、RUM、Log、Trace、数据同步等核心链路。
变更概览¶
- 主 SDK 库统一为
GuanceSDK。 datakit-macos不再单独维护,macOS 能力合并到当前 SDK 仓库。- Session Replay 作为独立产品
GuanceSessionReplay提供,仅支持 iOS。 - Widget Extension 作为独立产品
GuanceWidgetExtension提供,仅用于 iOS Widget Extension Target。 - iOS、tvOS、macOS 共用主 SDK;不支持某个平台的 API 会通过可用性标记声明。
| 组件 | iOS | tvOS | macOS |
|---|---|---|---|
GuanceSDK |
支持 | 支持 | Alpha |
GuanceSessionReplay |
支持 | 不支持 | 不支持 |
GuanceWidgetExtension |
支持 | 不支持 | 不支持 |
最低系统版本由发布包配置定义:
- iOS 12.0+
- tvOS 12.0+
- macOS 10.14+
安装迁移¶
CocoaPods¶
旧版主 SDK:
迁移为:
如需 Session Replay:
如需 Widget Extension 数据采集,仅在 Widget Extension Target 中集成。新接入推荐使用 WidgetExtension subspec:
如果旧项目原来使用 pod 'FTMobileSDK', :subspecs => ['Extension'],升级到 GuanceSDK 后也可以继续使用兼容 subspec:
兼容说明:
GuanceSDK默认包含主 SDK 能力。GuanceSDK/SessionReplay仅支持 iOS。GuanceSDK/WidgetExtension仅用于 iOS Widget Extension Target。- 旧的
GuanceSDK/FTSessionReplay、GuanceSDK/Extension作为兼容别名保留;pod 'GuanceSDK', :subspecs => ['Extension']也可以继续集成 Widget Extension 能力。新接入建议使用SessionReplay与WidgetExtension。 - macOS Target 不要集成
SessionReplay或WidgetExtensionsubspec。
Swift Package Manager¶
SPM 产品名已调整为新的品牌产品名:
| 旧产品 | 新产品 |
|---|---|
FTMobileSDK |
GuanceSDK |
FTSessionReplay |
GuanceSessionReplay |
FTMobileExtension |
GuanceWidgetExtension |
在 Xcode 添加 Swift Package 后,根据 Target 选择对应产品:
- App Target:
GuanceSDK - iOS Session Replay 所在 Target:
GuanceSessionReplay - Widget Extension Target:
GuanceWidgetExtension
Swift import:
如需 Session Replay:
Framework / XCFramework¶
Framework 产品名已调整:
| 旧产品 | 新产品 |
|---|---|
FTMobileSDK.xcframework |
GuanceSDK.xcframework |
FTSessionReplay.xcframework |
GuanceSessionReplay.xcframework |
FTMobileExtension.xcframework |
GuanceWidgetExtension.xcframework |
Objective-C 推荐使用新的入口头文件:
兼容入口仍可使用:
Session Replay 推荐入口按集成方式选择:
| 集成方式 | Objective-C import |
|---|---|
| CocoaPods | #import <GuanceSDK/GuanceSessionReplay.h> |
| Swift Package Manager | @import GuanceSessionReplay; |
| Framework / XCFramework | #import <GuanceSessionReplay/GuanceSessionReplay.h> |
旧的 Session Replay 头文件仍可兼容使用。CocoaPods 集成使用 GuanceSDK 路径,Framework / XCFramework 集成使用 GuanceSessionReplay 路径;Swift Package Manager 直接使用 module import: |
// CocoaPods
#import <GuanceSDK/FTSessionReplay.h>
// Framework / XCFramework
#import <GuanceSessionReplay/FTSessionReplay.h>
// Swift Package Manager
@import GuanceSessionReplay;
API 迁移¶
初始化配置¶
新代码建议从 FTMobileConfig 迁移到 FTSDKConfig。
旧写法:
FTMobileConfig *config = [[FTMobileConfig alloc] initWithDatakitUrl:datakitUrl];
[FTMobileAgent startWithConfigOptions:config];
新写法:
FTSDKConfig *config = [[FTSDKConfig alloc] initWithDatakitUrl:datakitUrl];
[FTMobileAgent startWithConfigOptions:config];
说明:
FTMobileConfig当前仍可使用,并继承自FTSDKConfig。FTMobileConfig已废弃,新代码建议使用FTSDKConfig。FTMobileAgent仍可继续作为启动入口;新代码也可以使用兼容别名FTSDKAgent。
采样率参数命名¶
samplerate 已调整为标准驼峰命名 sampleRate。
受影响配置:
FTRumConfigFTTraceConfigFTLoggerConfig
旧写法:
FTRumConfig *rumConfig = [[FTRumConfig alloc] initWithAppid:appId];
rumConfig.samplerate = 100;
FTTraceConfig *traceConfig = [[FTTraceConfig alloc] init];
traceConfig.samplerate = 100;
FTLoggerConfig *loggerConfig = [[FTLoggerConfig alloc] init];
loggerConfig.samplerate = 100;
新写法:
FTRumConfig *rumConfig = [[FTRumConfig alloc] initWithAppid:appId];
rumConfig.sampleRate = 100;
FTTraceConfig *traceConfig = [[FTTraceConfig alloc] init];
traceConfig.sampleRate = 100;
FTLoggerConfig *loggerConfig = [[FTLoggerConfig alloc] init];
loggerConfig.sampleRate = 100;
说明:
samplerate当前仍可使用,但已废弃。sampleRate与samplerate映射到同一个值。- SDK 1.6.6 以下版本请继续使用
samplerate。
Session Replay¶
Session Replay 相关公共类型仍使用 FT 前缀,例如:
旧写法可能因集成方式不同而使用不同路径:
新写法按集成方式选择入口头文件:
| 集成方式 | Objective-C import |
|---|---|
| CocoaPods | #import <GuanceSDK/GuanceSessionReplay.h> |
| Swift Package Manager | @import GuanceSessionReplay; |
| Framework / XCFramework | #import <GuanceSessionReplay/GuanceSessionReplay.h> |
| 如需使用隐私覆盖能力,也应按集成方式选择入口: |
| 集成方式 | 隐私覆盖所需入口 |
|---|---|
| CocoaPods | #import <GuanceSDK/UIView+FTSRPrivacy.h> |
| Swift Package Manager | @import GuanceSessionReplay; |
| Framework / XCFramework | #import <GuanceSessionReplay/UIView+FTSRPrivacy.h> |
| 新代码推荐直接引入入口。以下为 Swift Package Manager 写法;CocoaPods 或 Framework / XCFramework 集成请使用上表中的对应路径: |
Widget Extension¶
Widget Extension 组件应只在 Widget Extension Target 中单独集成。
CocoaPods 示例。新接入推荐使用 WidgetExtension subspec:
旧项目升级时,如果原来使用 pod 'FTMobileSDK', :subspecs => ['Extension'],也可以继续保留 subspec 形式:
Swift Package Manager 示例:
// 将产品添加到 Widget Extension Target:
// GuanceWidgetExtension```
Objective-C import 按集成方式选择:
| 集成方式 | Objective-C import |
| --- | --- |
| CocoaPods | `#import <GuanceSDK/GuanceWidgetExtension.h>` |
| Swift Package Manager | `@import GuanceWidgetExtension;` |
| Framework / XCFramework | `#import <GuanceWidgetExtension/GuanceWidgetExtension.h>` |
Swift Package Manager 示例:
```objc
@import GuanceWidgetExtension;
Framework / XCFramework 示例:
macOS 注意事项¶
macOS 已合并到主 SDK,当前为 Alpha 版本。迁移 macOS 项目时:
- 不要集成
GuanceSessionReplay。 - 不要集成
GuanceWidgetExtension。 - 不承诺所有 iOS 功能都支持。
- 对标记为
API_UNAVAILABLE(macos)的 API,应移除调用或通过条件编译隔离。
示例:
推荐迁移步骤¶
- 先更新依赖名称:将 CocoaPods / SPM / Framework 产品切换到
GuanceSDK。 - 更新 import:Objective-C 优先使用新的入口头文件,Swift 使用对应产品模块的
import入口。 - 新代码将
FTMobileConfig替换为FTSDKConfig。 - 将
samplerate替换为sampleRate。 - 单独确认 iOS Target 是否需要
GuanceSessionReplay。 - 单独确认 Widget Extension Target 是否需要
GuanceWidgetExtension。 - macOS Target 检查不可用 API,并根据可用性调整代码。
兼容说明¶
为降低迁移成本,以下旧入口当前仍可兼容使用:
FTMobileSDK.hFTMobileAgent.hFTMobileConfigsamplerateFTSessionReplay.h
这些兼容入口可能会在未来大版本中移除。新代码建议使用新的集成产品、入口头文件与标准命名。