— カスタムURLスキームを設定する

Usage

KARTE SDKでは、下記の各種機能に対応するためにカスタムURLスキームの設定を必要とします。

ここでは、カスタムURLスキームの設定方法について記載します。

カスタムURLスキームを設定する

任意のエディタで Info.plist を開き、下記設定を追記します。

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>krt-$(APIキー)</string>
    </array>
  </dict>
</array>

なお $(APIキー) の部分には、KARTEプロジェクト毎に用意されているAPIキーを指定します。

📘

APIキーの確認方法

APIキーは管理画面から取得可能です。
詳細については、こちらをご覧ください。

🚧

間違いやすい点

SDKの初期化に利用するアプリケーションキーとAPIキーは異なるものです。
お間違えないようご注意ください。

カスタムURLスキームハンドラを追加する

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

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

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

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)
  }
}
- (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];
  }
}

📘

application(_:open:options:) メソッドの戻り値について

KARTE SDK で処理可能なカスタムURLスキームが渡された場合は戻り値として true を返し、反対に処理できないカスタムURLスキームが渡された場合は false を返します。