— How to upgrade v2 from SDK v1

Usage

In KARTE SDK v2, we have reviewed the previous design from scratch and built a new design SDK.

The major differences from SDK v1 are the following.

  • Change implementation language (Objective-C> Swift)
  • Modularization in functional units
  • Review of interface

Along with this, work such as changing the installation procedure and replacing the implementation will occur.
This section describes the specific upgrade method from SDK v1 to v2.

SDK構成の変更

SDK v1 has a monolithic structure in which all functions are packaged in a single binary, but SDK v2 has changed to a module structure in which each function is packaged in a binary.

そのため、アプリケーションが必要とする機能に応じてインストールするバイナリを選択する必要があります。

なお KARTE SDK を導入する上で、KarteCore モジュールの導入は必須となります。
詳細な SDK の導入手順については、 SDKを導入する をご覧ください。

Correspondence between each function and module

functionSupported modules必須
Core functions / event measurementKarteCore
In-app messageKarteInAppMessaging-
Push NotificationKarteRemoteNotification-
Set value distributionKarteVariables-
Visual trackingKarteVisualTracking-
Crash event measurementKarteCrashReporting-

インターフェースの違いについて

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 アップグレード後はモジュールインポートの修正のみを行えば良い状態となります。


日本語
English
Translated by AI