# \[Cordova]SDKを導入する

{% hint style="warning" %}
**導入時の注意事項**

新規でのCordova環境への導入、もしくは既存環境をCordova環境に移行する場合、担当から詳細をご案内しております。\
適宜担当までご連絡をお願い致します。
{% endhint %}

## 前提条件

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

* Cordova 9 以上
* Cordova Android 8 以上
* Cordova iOS 5 以上

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

* [SDKを導入する - Android](https://app.developers.karte.io/android-sdk/setup-android-sdk)
* [SDKを導入する - iOS](https://app.developers.karte.io/ios-sdk/setup-ios-sdk)

## 導入手順

## STEP1: SDKをアプリに追加する

{% code overflow="wrap" %}

```shell
cordova plugin add cordova-plugin-karte
```

{% endcode %}

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

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

### Androidの場合

1. SDKの初期化に必要な値（アプリケーションキーなど）が定義された設定ファイルをプロジェクトに追加します。
   1. 管理画面から設定ファイルをダウンロードする\
      設定ファイルのダウンロード方法についてはサポートサイトをご覧ください。
   2. 設定ファイルをプロジェクトに配置する\
      設定ファイルをプロジェクトのリソースに追加します。\
      該当するビルドバリアントの res/values ディレクトリに配置してください。
2. アプリケーションクラスを追加\
   [`android.app.Application` を継承したアプリケーションクラス](https://developer.android.com/reference/android/app/Application)を`platforms/android` 配下のAndroidプロジェクト内に配置します。

{% hint style="warning" %}
**multidex を有効にする場合**

minSdkVersion が21未満プロジェクトの場合は、`android.support.multidex.MultiDexApplication` を継承したアプリケーションクラスをプロジェクトに追加してください。
{% endhint %}

3. アプリケーションクラスにインポート宣言を追加\
   ファイルの先頭にインポート宣言を追加します。

{% code overflow="wrap" %}

```java
import io.karte.android.KarteApp;
```

{% endcode %}

4. アプリケーションクラスにSDKの初期化コードを追加\
   `onCreate` メソッド内に初期化コードを追加します。

{% code overflow="wrap" %}

```java
public class YourApplication extends Application {

  @Override
  public void onCreate() {
    super.onCreate();
    KarteApp.setup(this);
  }
}
```

{% endcode %}

{% hint style="warning" %}
**KarteApp.setupの設置場所**

`Activity`内の`onCreate`に設置してしまうと正しく動作しないため、ステップ1で追加したアプリケーションクラス内の`onCreate`に設置をしてください。
{% endhint %}

5. AndroidManifest.xml を修正\
   AndroidManifest.xml を開き、`<application>` タグに `android:name` 属性を追加します。\
   属性値には手順1で追加したアプリケーションクラスの名前を指定します。

クラス名が `YourApplication` の場合は、属性値は `.YourApplication` となります。

### iOSの場合

1. `platforms/ios`以下をXCodeで開きます。
2. SDKの初期化に必要な値（アプリケーションキーなど）が定義された設定ファイルをプロジェクトに追加します。
3. AppDelegate.m を開く\
   `platforms/ios/<プロジェクト名>/Classes/AppDelegate.m` を任意のエディタで開きます。

![](https://2393392196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH4XuUv5EgXiqltJXSiRd%2Fuploads%2Fgit-blob-78fb7802b000e92fdedba900f70d873200eaa939%2F6c6a39ae1300c99bdb9f244e7c20833165ff2af30ce791f00bd7d84e667341db-_2024-10-02_13.46.25.png?alt=media)

![](https://2393392196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH4XuUv5EgXiqltJXSiRd%2Fuploads%2Fgit-blob-5c62d6abc38893dfc1b2925f343c58bdd7e1a4ad%2F89251f602a6f013d98fb73cb7cd02678e4185d49325cd784ced6f1b3a9d01cf9-_2024-10-02_13.47.29.png?alt=media)

4. SDKのインポート宣言を追加\
   ファイルの先頭にインポート宣言を追加します。

{% code overflow="wrap" %}

```objectivec
@import KarteCore;
```

{% endcode %}

5. SDKの初期化コードを追加\
   `application(_:didFinishLaunchingWithOptions:)` メソッド内に初期化コードを追加します。

{% hint style="warning" %}
**設定ファイルによるSDKの初期化について**

※設定ファイルによるSDK初期化は iOS SDK v2.12.0 以上から利用できます。\
古いSDKを利用している場合は KarteApp.setup(appkey:)メソッドを利用して初期化してください。
{% endhint %}

{% code overflow="wrap" %}

```objectivec
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [KRTApp setupWithConfiguration:KRTConfiguration.default_];
  ...
}
```

{% endcode %}

{% hint style="warning" %}
**アプリケーションキーについて**

初期化時に指定するアプリケーションキー（Application Key）は、KARTE管理画面に記載されているAPIキーとは異なります。取得方法は[アプリケーションキーの確認方法](https://support.karte.io/post/1PbomDUORPoCrcvos2rq3T#1-0)をご確認ください。
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://app.developers.karte.io/cordova-sdk/setup-cordova-sdk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
