WebViewsの処理

モバイルアプリでWebViewsを使用してデータ収集を処理する方法を説明します。

前提条件

  • SDKがインストールされ、設定されたアプリが正常に構築され、実行されました。

学習目標

このレッスンでは、次の操作を行います。

  • アプリでWebViewsを特に考慮する必要がある理由を理解します。
  • トラッキングの問題を防ぐために必要なコードを理解します。

潜在的なトラッキングの問題

アプリのネイティブ部分とアプリ内のWebViewからデータを送信すると、別々(Experience Cloud ID)のECIDが生成されます。 こうした個別のECIDは、接続されていないヒットや、訪問データや訪問者データの高騰につながります。 ECIDの詳細については、ECIDの概要を参照してください。

切断されたヒットと膨らんだデータを解決するには、アプリのネイティブ部分からアプリで使用する可能性のあるWebViewにユーザーのECIDを渡す必要があります。

WebView内で使用されるAEP Edge ID拡張機能は、現在のECIDを収集し、新しいIDのリクエストをAdobeに送信する代わりにURLに追加します。 次に、実装はこのECIDを使用してURLをリクエストします。

実装

Web ビューを実装するには:

iOS

Luma > Luma > Views > Info > TermsOfServiceSheet​に移動し、final class SwiftUIWebViewModel: ObservableObject クラスのfunc loadUrl()関数を見つけます。 Web ビューを処理する次の呼び出しを追加します。

code language-swift
// Handle web view
AEPEdgeIdentity.Identity.getUrlVariables {(urlVariables, error) in
    if let error = error {
        print("Error with Webview", error)
        return;
    }

    if let urlVariables: String = urlVariables {
        urlString.append("?" + urlVariables)
        guard let url = URL(string: urlString) else {
            return
        }
        DispatchQueue.main.async {
            self.webView.load(URLRequest(url: url))
        }
    }
    Logger.aepMobileSDK.info("Successfully retrieved urlVariables for WebView, final URL: \(urlString)")
}

AEPEdgeIdentity.Identity.getUrlVariables APIは、URLの変数を設定し、ECIDなど、関連するすべての情報を含めるようにします。 この例では、ローカルファイルを使用していますが、同じ概念がリモートページにも適用されます。

Identity.getUrlVariables APIについて詳しくは、Edge Network拡張機能APIのID リファレンスガイド ​を参照してください。

Android

Android ChevronDown > app > kotlin+java > com.adobe.luma.tutorial.android > views > WebViewModel​に移動し、class WebViewModel: ViewModel()でfun loadUrl()関数を見つけます。 Web ビューを処理する次の呼び出しを追加します。

code language-kotlin
// Handle web view
Identity.getUrlVariables {
    urlVariables = it
    val baseUrl = getHtmlFileUrl("tou.html")

    val finalUrl = if (urlVariables.isNotEmpty()) {
        "$baseUrl?$urlVariables"
    } else {
        baseUrl
    }

    Handler(Looper.getMainLooper()).post {
        webView.loadUrl(finalUrl)
    }
    MobileSDK.shared.logInfo("TermsOfServiceSheet - loadUrl: Successfully loaded WebView with URL: $finalUrl")
}

Identity.getUrlVariables APIは、URLの変数を設定し、ECIDなど、関連するすべての情報を含めるようにします。 この例では、ローカルファイルを使用していますが、同じ概念がリモートページにも適用されます。

Identity.getUrlVariables APIについて詳しくは、Edge Network拡張機能APIのID リファレンスガイド ​を参照してください。

アプリでの検証

コードを実行するには:

  1. シミュレーターまたはデバイスをAssuranceに接続するには、設定の手順 セクションを確認してください。
  2. アプリの​ 設定 ​に移動します
  3. 「View…」ボタンをタップして、Terms of Use​を表示します。
iOS
{width="300"} {width="300"}
Android
{width="300"} {width="300"}

Assurance での検証

  1. Assurance UIで、com.adobe.griffon.mobile ベンダーから​Edge ID Response URL Variables イベントを探します。

  2. イベントを選択し、ACPExtensionEventData オブジェクトの​urlvariable フィールドを確認し、次のパラメーターがURLに存在することを確認します:adobe_mc、mcmid、およびmcorgid。

    webview検証 {modal="regular"}

    urvariables フィールドの例を次に示します。

    • オリジナル(エスケープされた文字を含む)

      code language-html
      adobe_mc=TS%3D1636526122%7CMCMID%3D79076670946787530005526183384271520749%7CMCORGID%3D7ABB3E6A5A7491460A495D61%40AdobeOrg
      
    • Beautified

      code language-html
      adobe_mc=TS=1636526122|MCMID=79076670946787530005526183384271520749|MCORGID=7ABB3E6A5A7491460A495D61@AdobeOrg
      

残念ながら、web セッションのデバッグには制限があります。 例えば、ブラウザーでAdobe Experience Platform Debuggerを使用して引き続きwebview セッションのデバッグを行うことはできません。

NOTE
これらのURL パラメーターを使用した訪問者のステッチは、Platform Web SDK(バージョン 2.11.0以降)およびVisitorAPI.jsを使用する場合にサポートされます。
SUCCESS
これで、Adobe Experience Platform Mobile SDKによって既に発行されているECIDと同じECIDを使用して、web ビューのURLに基づいてコンテンツを表示するようにアプリを設定しました。
Adobe Experience Platform Mobile SDKについて学ぶために時間を割いていただきありがとうございます。 ご質問がある場合、一般的なフィードバックを共有したい場合、または今後のコンテンツに関する提案がある場合は、このExperience League コミュニティ ディスカッション投稿で共有してください

次:ID

recommendation-more-help
platform-learn-help-tutorial-mobile-sdk