Movatterモバイル変換


[0]ホーム

URL:


KARTE Developer Portal

リンクの制御について

リンククリック時の挙動

ユーザーがアクション内のリンク(aタグ)をクリックすると、SDKは自動でリンクに指定されているURLを開きます。

この時SDKは、暗黙的インテントを生成しstartActivity メソッドを呼び出します。
インテントのアクションはACTION_VIEW、データにはリンクに指定されているURLが設定されます。
そのため基本的には、http またはhttps から始まるリンクの場合は Chrome等のブラウザが起動し、それ以外のスキームの場合は、スキームに対応するアプリケーションが起動する形となります。

リンククリック時にアプリケーション側で処理を行う

リンククリック後、アプリケーション側で処理を行いたい場合は、InAppMessagingDelegate クラスのshouldOpenURL() メソッドを実装する必要があります。

InAppMessagingDelegateクラスは抽象クラスで実装されています。

/** * アプリ内メッセージで発生するイベントを委譲するためのクラスです。 */abstract class InAppMessagingDelegate {    /* 実装省略 */      /**     * 接客サービスアクション中のボタンがクリックされた際に、リンクをSDK側で自動的に処理するかどうか問い合わせます。     *     * @param[url] リンクURL     * @return `true` を返した場合はSDK側でリンクを自動で開きます。`false` を返した場合はSDK側では何もしません。     */    open fun shouldOpenURL(url: Uri): Boolean {        return true    }}

アプリ内メッセージ経由のリンク遷移持に独自の処理を追加したい場合はInAppMessagingDelegateクラスを継承の後にオーバーライドすることにより挙動を変更することができます。

override fun shouldOpenURL(url: Uri): Boolean {  // アプリケーション側で独自の処理を行う    // SDKデフォルトの処理を行わない場合は `false` を返す  return false}
@Overridepublic boolean shouldOpenURL(Uri url) {  // アプリケーション側で独自の処理を行う    // SDKデフォルトの処理を行わない場合は `false` を返す  return false;}

また委譲先のインスタンスの登録は、以下のように実装します。

InAppMessaging.delegate = instance
InAppMessaging.setDelegate(instance);

全体のサンプルコードとしては以下のような形でリンクの制御できます。

  InAppMessaging.delegate = object : InAppMessagingDelegate() {      override fun shouldOpenURL(url: Uri): Boolean {          /* アプリケーション独自の実装を追加 */          return super.shouldOpenURL(url)      }  }

アプリケーション内の特定画面に遷移させる

アプリ内メッセージのリンククリックをトリガーにアプリケーション内の特定画面に遷移させるには、リンクURLとしてディープリンクURLを設定する必要があります。

この時アプリ側の AndroidManifest.xml にもインテント呼び出しに応じて起動する Activity の設定を行っておく必要があります。

Updated 2 months ago



[8]ページ先頭

©2009-2025 Movatter.jp