— 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 about a year ago

— SDK v1からv2のアップグレード方法


Usage

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.