— SDK v1からv2のアップグレード方法
Usage
KARTE SDK v2 では、これまでの設計を1から見直し、新たな設計のSDKを構築しました。
SDK v1 との大きな違いとして、以下のような違いがあります。
- 実装言語の変更(Objective-C > Swift)
- 機能単位でのモジュール化
- インターフェースの見直し
これに伴い、導入手順の変更や実装の置き換えなどの作業が発生します。
ここでは、SDK v1 から v2 への具体的なアップグレード方法について示します。
SDK構成の変更
SDK v1 では全ての機能を一つのバイナリにパッケージするモノリシックな構造でしたが、SDK v2 では機能毎にバイナリにパッケージするモジュール構造に変更しております。
そのため、アプリケーションが必要とする機能に応じてインストールするバイナリを選択する必要があります。
なお KARTE SDK を導入する上で、KarteCore モジュールの導入は必須となります。
詳細な SDK の導入手順については、 SDKを導入する をご覧ください。
各機能とモジュールの対応関係
機能 | 対応モジュール | 必須 |
---|---|---|
コア機能 / イベント計測 | KarteCore | ○ |
アプリ内メッセージ | KarteInAppMessaging | - |
プッシュ通知 | KarteRemoteNotification | - |
設定値配信 | KarteVariables | - |
ビジュアルトラッキング | KarteVisualTracking | - |
クラッシュイベント計測 | KarteCrashReporting | - |
インターフェースの違いについて
SDK v2 では、モジュール化に伴い全てのインターフェースの見直しを行いました。
この見直しは破壊的なものあり、インターフェースの後方互換性はありません。
SDK v1 と v2 のインターフェースの対応関係
クラス名とメソッド名の間にある #
はインスタンスメソッド、.
はクラスメソッドを意味します。
SDK v1 IF | SDK v2 IF | Required v2 module |
---|---|---|
KarteTracker.shared(appKey:) | 廃止 | - |
KarteTracker.setup(appKey:) | KarteApp.setup(appKey:) | KarteCore |
KarteTracker.setup(appKey:config:) | KarteApp.setup(appKey:configuration:) | KarteCore |
KarteTracker#appKey | KarteApp.appKey | KarteCore |
KarteTracker#visitorId | KarteApp.visitorId | KarteCore |
KarteTracker#config | KarteApp.configuration | KarteCore |
KarteTracker#init(appKey:) | KarteApp.setup(appKey:) | KarteCore |
KarteTracker#init(appKey:config:) | KarteApp.setup(appKey:configuration:) | KarteCore |
KarteTracker#optIn() | KarteApp.optIn() | KarteCore |
KarteTracker#optOut() | KarteApp.optOut() | KarteCore |
KarteTracker#renewVisitorId() | KarteApp.renewVisitorId() | KarteCore |
KarteTracker#track(_:values:) | Tracker.track(_:values:) | KarteCore |
KarteTracker#track(_:values:view:) | Tracker#init(view:) Tracker#track(_:values:) | KarteCore |
KarteTracker#trackNotification(_:) | Tracker.trackClick(userInfo:) | KarteRemoteNotification |
KarteTracker#trackUncaughtException(_:) | 廃止 | - |
KarteTracker#identify(_:) | Tracker.identify(_:) | KarteCore |
KarteTracker#identify(_:view:) | Tracker#init(view:) Tracker#identify(_:) | KarteCore |
KarteTracker#view(_:) | Tracker.view(_:) | KarteCore |
KarteTracker#view(_:title:) | Tracker.view(_:title:) | KarteCore |
KarteTracker#view(_:title:values:) | Tracker.view(_:title:values:) | KarteCore |
KarteTracker#view(_:title:values:view:) | Tracker#init(view:) Tracker#view(_:title:values:) | KarteCore |
KarteTracker#view(_:values:) | Tracker.view(_:title:values:) | KarteCore |
KarteTracker#registerFCMToken(_:) | KarteApp.registerFCMToken(_:) | KarteRemoteNotification |
KarteTrackerConfig.configure | Configuration.defaultConfiguration | KarteCore |
KarteTrackerConfig.configure(_:) | Configuration.init(_:) | KarteCore |
KarteTrackerConfig#isEnabledTrackingAppLifecycle | 廃止 | - |
KarteTrackerConfig#isEnabledTrackingAppOpen | 廃止 | - |
KarteTrackerConfig#isEnabledTrackingIdfa | 廃止 | - |
KarteTrackerConfig#isEnabledTrackingCrashError | 廃止 | - |
KarteTrackerConfig#isEnabledFCMTokenResend | 廃止 | - |
KarteTrackerConfig#isEnabledOptOutDefault | Configuration#isOptOut | KarteCore |
KarteTrackerConfig#isDryRun | Configuration#isDryRun | KarteCore |
KarteTrackerConfig#isEnabledVisualTracking | 廃止 | - |
KarteTrackerConfig#IDFADelegate | Configuration#idfaDelegate | KarteCore |
KarteTrackerConfig#init(_:) | Configuration#init(_:) | KarteCore |
KarteTrackerConfigBuilder | Configuration | KarteCore |
KarteTrackerJsUtil. stringByAppendingUserSyncQueryParameter(appKey:url:) | UserSync.appendingQueryParameter(_:) | KarteCore |
KarteTrackerJsUtil. URLByAppendingUserSyncQueryParameter(appKey:url:) | UserSync.appendingQueryParameter(_:) | KarteCore |
KarteTrackerJsUtil. setUserSyncScript(with:) | UserSync.setUserSyncScript(_:) | KarteCore |
KarteTrackerJsUtil.setUserSyncScript(with:appKey:) | UserSync.setUserSyncScript(_:) | KarteCore |
KarteIDFADelegate | IDFADelegate | KarteCore |
KarteInAppMessagingManager.shared | InAppMessaging.shared | KarteInAppMessaging |
KarteInAppMessagingManager#isPresenting | InAppMessaging#isPresenting | KarteInAppMessaging |
KarteInAppMessagingManager#delegate | InAppMessaging#delegate | KarteInAppMessaging |
KarteInAppMessagingManager#dismiss() | InAppMessaging#dismiss() | KarteInAppMessaging |
KarteInAppMessagingManager#suppress() | InAppMessaging#suppress() | KarteInAppMessaging |
KarteInAppMessagingManager#unsuppress() | InAppMessaging#unsuppress() | KarteInAppMessaging |
KarteInAppMessagingManagerDelegate# inAppMessagingManager(_:shouldOpen:) | InAppMessagingDelegate# inAppMessaging(_:shouldOpenURL:) | KarteInAppMessaging |
KarteRemoteNotificationHandler. canHandleRemoteNotification(_:) | RemoteNotification#init(userInfo:) | KarteRemoteNotification |
KarteRemoteNotificationHandler. handleRemoteNotification(_:) | RemoteNotification#handle() | KarteRemoteNotification |
KarteRemoteNotificationHandler. retrieveURL(userInfo:) | RemoteNotification#url | KarteRemoteNotification |
KarteVariables.variables | 廃止 | |
KarteVariables.variables(appKey:) | 廃止 | |
KarteVariables.fetch() | Variables.fetch() | KarteVariables |
KarteVariables.fetch(_:) | Variables.fetch(completion:) | KarteVariables |
KarteVariables.variable(forKey:) | Variables.variable(forKey:) | KarteVariables |
KarteVariables.track(variables:eventName:) | Tracker.trackOpen(variables:values:) Tracker.trackClick(variables:values:) | KarteVariables |
KarteVariables.track(variables:eventName:values:) | Tracker.trackOpen(variables:values:) Tracker.trackClick(variables:values:) | KarteVariables |
KarteVariables#init(appKey:) | 廃止 | KarteVariables |
KarteVariables#fetch() | Variables.fetch() | KarteVariables |
KarteVariables#fetch(_:) | Variables.fetch(completion:) | KarteVariables |
KarteVariables#variable(forKey:) | Variables.variable(forKey:) | KarteVariables |
KarteVariables#track(variables:eventName:) | Tracker.trackOpen(variables:values:) Tracker.trackClick(variables:values:) | KarteVariables |
KarteVariables#track(variables:eventName:values:) | Tracker.trackOpen(variables:values:) Tracker.trackClick(variables:values:) | KarteVariables |
KarteVariable#campaignId | Variable#campaignId | KarteVariables |
KarteVariable#shortenId | Variable#shortenId | KarteVariables |
KarteVariable#isDefined | Variable#isDefined | KarteVariables |
KarteVariable#string | Variable#string | KarteVariables |
KarteVariable#array | Variable#array | KarteVariables |
KarteVariable#dictionary | Variable#dictionary | KarteVariables |
KarteVariable#string(defaultValue:) | Variable#string(default:) | KarteVariables |
KarteVariable#integer(defaultValue:) | Variable#integer(default:) | KarteVariables |
KarteVariable#double(defaultValue:) | Variable#double(default:) | KarteVariables |
KarteVariable#bool(defaultValue:) | Variable#bool(default:) | KarteVariables |
KarteVariable#array(defaultValue:) | Variable#array(default:) | KarteVariables |
KarteVariable#dictionary(defaultValue:) | Variable#dictionary(default:) | KarteVariables |
KarteUrlSchemeHandler.handle(_:) | KarteApp.application(_:open:) | KarteApp |
KarteLogger.shared | 廃止 | - |
KarteLogger#logLevel | KarteApp.setLogLevel(:) KarteApp.setLogEnabled(:) | KarteApp |
廃止された機能
複数アプリケーションキー対応
アプリケーションキー毎に Tracker
インスタンスを管理する機能は廃止されました。
アプリ内メッセージ用Windowの表示/非表示通知
アプリ内メッセージ用のWindowが表示および非表示された時に、NotificationCenter
経由で通知する機能は廃止され、代わりに InAppMessagingDelegate
を使った通知に置き換えられました。
詳細は InAppMessagingDelegate
のリファレンスをご覧ください。
アップグレード手順
KARTE SDK v2 にアップグレードする際は、まず KARTE SDK v1 を最新版にアップグレードした上で、SDK v2 にアップグレードすることをお勧めします。
v1 の最新版には v2 と互換性のあるインターフェースを用意しています。
また旧インターフェースは deprecated
となっており、旧インターフェースを利用した状態でビルドを行うと警告が表示されるようになっています。
警告に従い新インターフェースに置き換えていただくことで、v2 アップグレード後はモジュールインポートの修正のみを行えば良い状態となります。
Updated 9 months ago