پیاده سازی جاوا اسکریپت هندلر
اولین قدم در استفاده از Google Analytics در WebView، ایجاد توابع جاوا اسکریپت برای ارسال رویدادها و ویژگی های کاربر به کد بومی است. مثال زیر نشان می دهد که چگونه می توان این کار را به گونه ای انجام داد که با کدهای اصلی اندروید و اپل سازگار باشد:function logEvent(name, params) { if (!name) { return; } if (window.AnalyticsWebInterface) { // Call Android interface window.AnalyticsWebInterface.logEvent(name, JSON.stringify(params)); } else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.firebase) { // Call iOS interface var message = { command: 'logEvent', name: name, parameters: params }; window.webkit.messageHandlers.firebase.postMessage(message); } else { // No Android or iOS interface found console.log("No native APIs found."); } } function setUserProperty(name, value) { if (!name || !value) { return; } if (window.AnalyticsWebInterface) { // Call Android interface window.AnalyticsWebInterface.setUserProperty(name, value); } else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.firebase) { // Call iOS interface var message = { command: 'setUserProperty', name: name, value: value }; window.webkit.messageHandlers.firebase.postMessage(message); } else { // No Android or iOS interface found console.log("No native APIs found."); } }
با کنترل کننده جاوا اسکریپت از WebView خود تماس بگیرید
با فراخوانی توابع جاوا اسکریپت که در مرحله قبل تعریف کردید، می توانید رویدادها را به درستی ثبت کنید و ویژگی های کاربر را از داخل WebView تنظیم کنید. مثال زیر نشان می دهد که چگونه می توان یک رویداد خرید را به درستی ثبت کرد و یک ویژگی کاربر را به عنوان مثال تنظیم کرد:function logEventExample() { // Log an event named "purchase" with parameters logEvent("purchase", { content_type: "product", value: 123, currency: "USD", quantity: 2, items: [{ item_id: "sample-item-id", item_variant: "232323" }], transaction_id: "1234567" }); } function logUserPropertyExample() { // Set a user property named 'favorite_genre' setUserProperty("favorite_genre", "comedy") }
پیاده سازی رابط بومی
برای فراخوانی کد بومی اپل از جاوا اسکریپت، یک کلاس کنترل کننده پیام مطابق با پروتکل WKScriptMessageHandler
ایجاد کنید. می توانید تماس های Google Analytics را در داخل userContentController:didReceiveScriptMessage:
callback:
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { guard let body = message.body as? [String: Any] else { return } guard let command = body["command"] as? String else { return } guard let name = body["name"] as? String else { return } if command == "setUserProperty" { guard let value = body["value"] as? String else { return } Analytics.setUserProperty(value, forName: name) } else if command == "logEvent" { guard let params = body["parameters"] as? [String: NSObject] else { return } Analytics.logEvent(name, parameters: params) } }
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message { if ([message.body[@"command"] isEqual:@"setUserProperty"]) { [FIRAnalytics setUserPropertyString:message.body[@"value"] forName:message.body[@"name"]]; } else if ([message.body[@"command"] isEqual: @"logEvent"]) { [FIRAnalytics logEventWithName:message.body[@"name"] parameters:message.body[@"parameters"]]; } }
در نهایت، کنترل کننده پیام را به کنترل کننده محتوای کاربر webview اضافه کنید:
self.webView.configuration.userContentController.add(self, name: "firebase")
[self.webView.configuration.userContentController addScriptMessageHandler:self name:@"firebase"];
مراحل بعدی
برای اجرای کاملاً کاربردی Google Analytics در WebView، به نمونه analytics-webview مراجعه کنید.