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 リポジトリに統合されました。- セッションリプレイは、独立した製品
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:
以下のように移行します:
セッションリプレイが必要な場合:
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 セッションリプレイを含む Target:
GuanceSessionReplay - Widget Extension Target:
GuanceWidgetExtension
Swift の import:
セッションリプレイが必要な場合:
Framework / XCFramework¶
Framework のプロダクト名が変更されました:
| 旧プロダクト | 新プロダクト |
|---|---|
FTMobileSDK.xcframework |
GuanceSDK.xcframework |
FTSessionReplay.xcframework |
GuanceSessionReplay.xcframework |
FTMobileExtension.xcframework |
GuanceWidgetExtension.xcframework |
Objective-C では、新しいエントリヘッダーファイルの使用を推奨します:
互換性のあるエントリも引き続き使用できます:
セッションリプレイの推奨エントリは、統合方法に応じて選択してください:
| 統合方法 | Objective-C import |
|---|---|
| CocoaPods | #import <GuanceSDK/GuanceSessionReplay.h> |
| Swift Package Manager | @import GuanceSessionReplay; |
| Framework / XCFramework | #import <GuanceSessionReplay/GuanceSessionReplay.h> |
古いセッションリプレイのヘッダーファイルも引き続き互換性を持って使用できます。CocoaPods 統合では GuanceSDK パスを、Framework / XCFramework 統合では GuanceSessionReplay パスを使用します。Swift Package Manager では、直接モジュール 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を使用してください。
セッションリプレイ¶
セッションリプレイ関連のパブリックタイプは引き続き 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
これらの互換エントリは、将来のメジャーバージョンで削除される可能性があります。新しいコードでは、新しい統合プロダクト、エントリヘッダーファイル、および標準命名規則の使用を推奨します。