— 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 IFSDK v2 IFRequired v2 module
KarteTracker.shared(appKey:)廃止-
KarteTracker.setup(appKey:)KarteApp.setup(appKey:)KarteCore
KarteTracker.setup(appKey:config:)KarteApp.setup(appKey:configuration:)KarteCore
KarteTracker#appKeyKarteApp.appKeyKarteCore
KarteTracker#visitorIdKarteApp.visitorIdKarteCore
KarteTracker#configKarteApp.configurationKarteCore
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.configureConfiguration.defaultConfigurationKarteCore
KarteTrackerConfig.configure(_:)Configuration.init(_:)KarteCore
KarteTrackerConfig#isEnabledTrackingAppLifecycle廃止-
KarteTrackerConfig#isEnabledTrackingAppOpen廃止-
KarteTrackerConfig#isEnabledTrackingIdfa廃止-
KarteTrackerConfig#isEnabledTrackingCrashError廃止-
KarteTrackerConfig#isEnabledFCMTokenResend廃止-
KarteTrackerConfig#isEnabledOptOutDefaultConfiguration#isOptOutKarteCore
KarteTrackerConfig#isDryRunConfiguration#isDryRunKarteCore
KarteTrackerConfig#isEnabledVisualTracking廃止-
KarteTrackerConfig#IDFADelegateConfiguration#idfaDelegateKarteCore
KarteTrackerConfig#init(_:)Configuration#init(_:)KarteCore
KarteTrackerConfigBuilderConfigurationKarteCore
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
KarteIDFADelegateIDFADelegateKarteCore
KarteInAppMessagingManager.sharedInAppMessaging.sharedKarteInAppMessaging
KarteInAppMessagingManager#isPresentingInAppMessaging#isPresentingKarteInAppMessaging
KarteInAppMessagingManager#delegateInAppMessaging#delegateKarteInAppMessaging
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#urlKarteRemoteNotification
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#campaignIdVariable#campaignIdKarteVariables
KarteVariable#shortenIdVariable#shortenIdKarteVariables
KarteVariable#isDefinedVariable#isDefinedKarteVariables
KarteVariable#stringVariable#stringKarteVariables
KarteVariable#arrayVariable#arrayKarteVariables
KarteVariable#dictionaryVariable#dictionaryKarteVariables
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#logLevelKarteApp.setLogLevel(:)
KarteApp.setLogEnabled(
:)
KarteApp

廃止された機能

複数アプリケーションキー対応

アプリケーションキー毎に Tracker インスタンスを管理する機能は廃止されました。

アプリ内メッセージ用Windowの表示/非表示通知

アプリ内メッセージ用のWindowが表示および非表示された時に、NotificationCenter 経由で通知する機能は廃止され、代わりに InAppMessagingDelegate を使った通知に置き換えられました。

詳細は InAppMessagingDelegate のリファレンスをご覧ください。

アップグレード手順

KARTE SDK v2 にアップグレードする際は、まず KARTE SDK v1 を最新版にアップグレードした上で、SDK v2 にアップグレードすることをお勧めします。

v1 の最新版には v2 と互換性のあるインターフェースを用意しています。
また旧インターフェースは deprecated となっており、旧インターフェースを利用した状態でビルドを行うと警告が表示されるようになっています。

警告に従い新インターフェースに置き換えていただくことで、v2 アップグレード後はモジュールインポートの修正のみを行えば良い状態となります。