处理Web视图
了解如何在移动应用程序中通过WebViews处理数据收集。
先决条件
- 在安装和配置SDK的情况下成功构建和运行应用程序。
学习目标
在本课程中,您将执行以下操作:
- 了解为什么您的应用程序中必须对WebViews进行特别考虑。
- 了解防止跟踪问题所需的代码。
潜在的跟踪问题
如果您从应用程序的本机部分和应用程序内的WebView发送数据,则每个部分都会生成自己的Experience CloudID (ECID),这会导致断开连接的点击量和夸大的访问/访客数据。 有关ECID的详细信息,请参阅ECID概述。
要解决该不良情况,请务必将用户的ECID从应用程序的本机部分传递到您可能想要在应用程序中使用的WebView。
WebView中使用的AEP Edge Identity扩展可收集当前ECID并将其添加到URL,而不是向Adobe发送请求以获取新ID。 然后,实施将使用此ECID来请求URL。
实施
导航到 Luma > Luma > Views > Info > TermsOfServiceSheet,并在final class SwiftUIWebViewModel: ObservableObject
类中找到func loadUrl()
函数。 添加以下调用以处理Web视图:
// 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等。 在本例中,您使用的是本地文件,但相同的概念也适用于远程页面。
您可以在Edge Network身份扩展API参考指南中了解有关Identity.getUrlVariables
API的更多信息。
验证
要执行代码,请执行以下操作:
-
查看设置说明部分以将模拟器或设备连接到Assurance。
-
转到应用程序中的 设置
-
点按 View… 按钮以显示 Terms of Use。
{width="300"} {width="300"}
-
在Assurance UI中,查找来自 com.adobe.griffon.mobile 供应商的 Edge标识响应URL变量 事件。
-
选择事件并查看 ACPExtensionEventData 对象中的 urlvariable 字段,确认URL中存在以下参数:
adobe_mc
、mcmid
和mcorgid
。urvariables
字段示例如下所示:-
原始(带转义字符)
code language-html adobe_mc=TS%3D1636526122%7CMCMID%3D79076670946787530005526183384271520749%7CMCORGID%3D7ABB3E6A5A7491460A495D61%40AdobeOrg
-
美化
code language-html adobe_mc=TS=1636526122|MCMID=79076670946787530005526183384271520749|MCORGID=7ABB3E6A5A7491460A495D61@AdobeOrg
-
很遗憾,调试Web会话的功能有限。 例如,您不能在浏览器中使用Adobe Experience Platform Debugger继续调试Webview会话。
VisitorAPI.js
时,支持通过这些URL参数拼接访客。下一个: 标识