SDKを導入する

前提条件

SDKを導入するためには、以下が必要となります。

  • Flutter 2.0.0 以上
  • Dart 2.12.0 以上

また、Flutterの下記のバージョンでの動作確認を行なっています。

  • 2.5.0 3.0.0, 3.3.0, 3.7.0, 3.10.0, 3.10.6

なお各プラットフォーム毎に導入条件が定められております。

Flutter on the Web , Flutter on Desktop には対応していません

導入手順(共通)

パッケージをインストールする

アプリケーションの pubspec.yaml の dependencies にパッケージを記入し、 pub get コマンドでインストールしてください。

dependencies:
  karte_core: ^1.2.1
flutter pub get

パッケージのインストールが完了したら、対応するプラットフォーム毎の導入手順に従い設定を進めてください。

🚧

利用可能なパッケージについて

karte_core パッケージはイベントトラッキング機能のみを提供します。
アプリ内メッセージ・プッシュ通知受信などのその他機能については、別途パッケージを導入する必要があります。
利用可能なパッケージについては、利用可能なパッケージ一覧 をご覧ください。

導入手順(iOS)

STEP1: SDKの初期化コードを追加する

アプリケーションにSDKの初期化コードを追加します。

  1. SDKのインポート宣言を追加
    UIApplicationDelegate を実装したクラスがあるファイルの先頭にインポート宣言を追加します。
@import KarteCore;
import KarteCore
  1. SDKの初期化コードを追加
    application(_:didFinishLaunchingWithOptions:) メソッド内に初期化コードを追加します。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [KRTApp setupWithAppKey:@"アプリケーションキー" configuration:KRTConfiguration.defaultConfiguration];
  ...
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
  KarteApp.setup(appKey: "アプリケーションキー")
  ...
}

🚧

アプリケーションキーについて

初期化時に指定するアプリケーションキー(Application Key)は、KARTE管理画面に記載されているAPIキーとは異なります。取得方法はアプリケーションキーの確認方法をご確認ください。

STEP2: URLスキームハンドラを追加する

KARTEで独自に定義したURLスキームを処理するために、application(_:open:options:) メソッド内にハンドラを追加します。

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  return [KRTApp application:app openURL:url];
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
  return KarteApp.application(app, open: url)
}

なお iOS13 から利用可能な UISceneDelegate を実装している場合は、scene(_:willConnectTo:options:) および scene(_:openURLContexts:) メソッド内にハンドラを追加します。

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
  UIOpenURLContext *URLContext = connectionOptions.URLContexts.anyObject;
  if (URLContext) {
    [KRTApp application:[UIApplication sharedApplication] openURL:URLContext.URL];
  }
}

- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts {
  UIOpenURLContext *URLContext = URLContexts.anyObject;
  if (URLContext) {
    [KRTApp application:[UIApplication sharedApplication] openURL:URLContext.URL];
  }
}
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
  if let context = connectionOptions.urlContexts.first {
    KarteApp.application(app, open: context.url)
  }
}

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
  if let context = URLContexts.first {
    KarteApp.application(app, open: context.url)
  }
}

🚧

Objective-C から SDK を利用する

Objective-C から SDK を利用した場合、ビルド時にエラーが発生する場合があります。
エラーが発生した場合は、こちら の記事を参考にしてください。

導入手順(Android)

STEP1: FlutterApplicationを継承したクラスを作成する

  1. FlutterApplicationを継承したクラスを作成しファイルを追加
    package以下の任意の場所にFlutterApplicationを継承したクラスを作成し任意のファイル名で追加します(ここではYourApplication.kt
package com.example.flutter_sample;

import io.flutter.app.FlutterApplication;

public class YourApplication extends FlutterApplication {
    @Override
    public void onCreate() {
        super.onCreate();
    }
}
package com.example.flutter_sample

import io.flutter.app.FlutterApplication

class YourApplication: FlutterApplication() {
    override fun onCreate() {
        super.onCreate()
    }
}

📘

ファイルの追加場所

ファイルはAndroidのpackage配下(ここではcom.example.flutter_sample)の任意の場所に追加できますが、Flutterプロジェクト作成時に自動で作成されるMainActivity.ktが存在するディレクトリ直下に追加する場合が多いです。またすでにFlutterApplicationを継承したクラスが存在する場合はこのSTEPは不要です。

  1. AndroidManifest.xmlに追加したクラスを登録
    AndroidManifest.xmlを開きapplicationname属性を以下のように変更します。この変更によりアプリ起動時にYourApplication.onCreate()内の処理が実行されるようになります。
    <application
-         android:name="${applicationName}"
+         android:name="com.example.flutter_sample.YourApplication" # 追加したファイルへのパス
          android:label="flutter_sample"
          android:icon="@mipmap/ic_launcher">

STEP2: SDKの初期化コードを追加する

  1. SDKのインポート宣言を追加
    android.app.Application クラスを継承したクラスがあるファイルの先頭にインポート宣言を追加します。
import io.karte.android.KarteApp;
import io.karte.android.KarteApp
  1. SDKの初期化コードを追加
    onCreate メソッド内に初期化コードを追加します。
public class YourApplication extends FlutterApplication {
  
  @Override
  public void onCreate() {
    super.onCreate();
    KarteApp.setup(this, "アプリケーションキー");
  }
}
class YourApplication : FlutterApplication() {
  override fun onCreate() {
    super.onCreate()
    KarteApp.setup(this, "アプリケーションキー")
  }
}

STEP3: 暗黙的インテントを解決するための設定を追加する(オプション)

一部の機能 *1 を利用するためには、暗黙的インテントを解決するための設定を AndroidManifest.xml に追加する必要があります。

*1. 管理画面に表示したQRコードを読み込みによるSDK機能の呼び出し

<activity android:name=".XxxActivity">

  <!-- 任意のActivityに対して、以下の指定を行なってください -->
  <intent-filter >
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="<アプリ毎に定義したスキーム名を指定>" android:host="karte.io" /> 
  </intent-filter>
</activity>

利用可能なパッケージ一覧

KARTE Flutter SDKでは機能毎にパッケージを提供しております。
利用する機能に応じて、部分的にパッケージを導入することが可能です。

なお karte_core パッケージの導入は必須です。

Package nameLatest versionDescription
karte_coreversionイベントトラッキング機能を提供します。
karte_in_app_messagingversionアプリ内メッセージ機能を提供します。(導入手順)
karte_notificationvプッシュ通知の受信および効果測定機能を提供します。(導入手順)
karte_variablesversion設定値配信機能を提供します。(導入手順)
karte_visual_trackingversionビジュアルトラッキング機能を提供します。(導入手順)