WebBridge (WebView)
راهنمای فنی یکپارچهسازی Adtrace WebBridge در اپلیکیشن Android که محتوا را در WebView بارگذاری میکند.
هماهنگ با Adtrace Android SDK / WebBridge v3.0.1.
برای اپهای فقط native (بدون WebView)، به شروع کار با Android SDK مراجعه کنید.
برای Trusted Web Activity، از مستندات TWA استفاده کنید. از WebBridge برای TWA استفاده نکنید.
اپ نمونه: example-app-webbridge.
فایلهای JS: فایلهای WebBridge plugin.
۱. مرور کلی
WebBridge به HTML/JavaScript داخل WebView اجازه میدهد با همان native Adtrace SDK که توسط کد Android استفاده میشود، ارتباط برقرار کند.
تنها یک نمونه SDK در هر پردازش اپ وجود دارد. آن را یک بار مقداردهی اولیه کنید، یا از JavaScript یا از native Android.
فراخوانی دوباره onCreate پیام لاگ میدهد: AdTrace already initialized.
۲. انتخاب حالت یکپارچهسازی
آیا از کد Android native رویدادهای Adtrace را ردیابی میکنید (Activity / Application / Service)?
| Case A: فقط WebBridge | Case B: ترکیبی | |
|---|---|---|
| رویدادهای native؟ | خیر. ردیابی فقط از HTML/JS | بله. Activities/Services قبلاً AdTrace.trackEvent را فراخوانی میکنند |
چه کسی AdTrace.onCreate را فراخوانی میکند؟ | JavaScript در صفحه WebView | Native (Application / Activity اولیه) |
| مقداردهی اولیه Application native؟ | اختیاری / برای Adtrace در Case A لازم نیست | الزامی |
AdTrace.onCreate از JS؟ | بله (پس از ثبت bridge) | خیر. از آن صرفنظر کنید |
AdTrace.trackEvent از native؟ | استفاده نمیشود | بله |
AdTrace.trackEvent از JS؟ | بله | بله (همان SDK) |
| اپ نمونه | مرورگر دروناپ / قیف عمدتاً HTML | رابط کاربری native مختلط + صفحات WebView |
۳. تنظیمات مشترک (هر دو حالت)
تنظیمات اصلی SDK (Maven / AAR، Google Play Services، Install Referrer) را طبق شروع کار با Android SDK انجام دهید. سپس WebBridge plugin را زیر اضافه کنید.
پیشنیازها
| مورد | نیاز |
|---|---|
| minSdkVersion | 21 (Android 5.0 / Lollipop) |
| Core SDK | io.adtrace:android-sdk (همان نسخه webbridge) |
| Plugin | io.adtrace:android-sdk-plugin-webbridge |
| WebView | JavaScript فعال |
| مجوزها | INTERNET، ACCESS_NETWORK_STATE، AD_ID (API 31+) |
| Google Play | play-services-ads-identifier + installreferrer توصیه میشود |
Gradle
dependencies {
implementation 'io.adtrace:android-sdk:3.0.1'
// اگر از Adtrace SDK درون web views اپ خود استفاده میکنید، موارد زیر را اضافه کنید
implementation 'io.adtrace:android-sdk-plugin-webbridge:3.0.1'
implementation 'com.android.installreferrer:installreferrer:2.2'
implementation 'com.google.android.gms:play-services-ads-identifier:18.0.0'
}
میتوانید WebBridge AAR/JAR را از صفحه releases گیتهاب دانل ود کنید.
حداقل سطح Android API پشتیبانی شده برای WebBridge plugin 21 (Android 5.0 / Lollipop) است. از WebBridge برای اپهای TWA استفاده نکنید.
مجوزها
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
فایلهای JavaScript
توسط WebBridge plugin ارسال میشوند (در APK ادغام میشوند):
| فایل | نقش |
|---|---|
adtrace.js | API اصلی AdTrace در JS |
adtrace_config.js | AdTraceConfig |
adtrace_event.js | AdTraceEvent |
adtrace_third_party_sharing.js | کمکی اشتراکگذاری با اشخاص ثالث |
ترتیب include:
<script src="adtrace_event.js"></script>
<script src="adtrace_third_party_sharing.js"></script>
<script src="adtrace_config.js"></script>
<script src="adtrace.js"></script>
برای HTML ریموت، این فایلها را کنار صفحه خود host کنید (یا از URL مطلق استفاده کنید). به فایلهای WebBridge JS مراجعه کنید.
اتصال WebView
این مرحله برای هر دو Case A و Case B الزامی است. آن را در Activity که WebView را host میکند انجام دهید.
قبل از شروع، یک reference به object مربوط به WebView خود بگیرید. سپس:
webView.getSettings().setJavaScriptEnabled(true)را فراخوانی کنید تا JavaScript در WebView فعال شود.- نمونه پیشفرض
AdTraceBridgeرا باAdTraceBridge.registerAndGetInstance(getApplication(), webView)راهاندازی کنید. این bridge Adtrace را به عنوان یک JavaScript interface در WebView ثبت میکند. - اگر بعداً نیاز به اتصال
WebViewدیگری دارید،AdTraceBridge.setWebView()را فراخوانی کنید. - در
onDestroyبرای لغو ثبت bridge وWebView،AdTraceBridge.unregister()را فراخوانی کنید.
AdTraceBridge.registerAndGetInstance را قبل از webView.loadUrl(...) فراخوانی کنید. در غیر این صورت JavaScript نمیتواند AdTraceBridge را ببیند.
پس از این مراحل، Activity شما باید اینگونه باشد:
- Java
- Kotlin
public class WebViewActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
WebView webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
AdTraceBridge.registerAndGetInstance(getApplication(), webView);
webView.loadUrl("file:///android_asset/your-page.html");
}
@Override
protected void onDestroy() {
AdTraceBridge.unregister();
super.onDestroy();
}
}
class WebViewActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_webview)
val webView = findViewById<WebView>(R.id.webView)
webView.settings.javaScriptEnabled = true
webView.webChromeClient = WebChromeClient()
webView.webViewClient = WebViewClient()
AdTraceBridge.registerAndGetInstance(application, webView)
webView.loadUrl("file:///android_asset/your-page.html")
}
override fun onDestroy() {
AdTraceBridge.unregister()
super.onDestroy()
}
}
تنظیم Proguard
اگر از Proguard استفاده میکنید، این خطوط را به فایل Proguard اضافه کنید:
-keep class io.adtrace.sdk.** { *; }
-keep class io.adtrace.sdk.webbridge.** { *; }
-keep class com.google.android.gms.common.ConnectionResult {
int SUCCESS;
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
java.lang.String getId();
boolean isLimitAdTrackingEnabled();
}
-keep public class com.android.installreferrer.** { *; }
اگر اپ خود را در Google Play Store منتشر نمیکنید، از قوانین بسته io.adtrace.sdk زیر استفاده کنید:
-keep public class io.adtrace.sdk.** { *; }
۴. Case A: فقط WebBridge (بدون رویداد native)
از Case A استفاده کنید وقتی اپ Android شما محتوا را در WebView بارگذاری میکند و تمام ردیابی Adtrace (مقداردهی اولیه، Session، رویداد) از HTML/JavaScript اجرا میشود.
این Trusted Web Activity (TWA) نیست. برای TWA، به مستندات TWA مراجعه کنید.
در سمت native فقط:
WebViewرا host میکنیدAdTraceBridgeرا قبل از بارگذاری صفحه ثبت میکنید
AdTrace.onCreate یا AdTrace.trackEvent از native را فراخوانی نمیکنید.
سمت native (فقط bridge)
بدون مقداردهی اولیه Adtrace در Application. بدون trackEvent از native.
Bridge را طبق اتصال WebView ثبت کنید، سپس صفحه HTML خود را بارگذاری کنید. در Case A نیازی به android:name=".GlobalApplication" برای Adtrace ندارید.
سمت JavaScript (مقداردهی اولیه)
اسکریپتهای WebBridge را بارگذاری کنید، AdTraceConfig بسازید، سپس AdTrace.onCreate را یک بار فراخوانی کنید:
<script src="adtrace_event.js"></script>
<script src="adtrace_third_party_sharing.js"></script>
<script src="adtrace_config.js"></script>
<script src="adtrace.js"></script>
<script>
var config = new AdTraceConfig(
'{YourAppToken}',
AdTraceConfig.EnvironmentSandbox
);
AdTrace.onCreate(config);
</script>
{YourAppToken} را با token اپ خود از پنل Adtrace جایگزین کنید.
از AdTraceConfig.EnvironmentSandbox در حین تست و AdTraceConfig.EnvironmentProduction قبل از انتشار استفاده کنید.
چگونه از ویژگیهای Adtrace در JavaScript استفاده کنیم
مثالهای ویژگی را در این صفحه تکرار نکنید. برای هر ویژگی Adtrace، صفحه مستندات Android آن ویژگی را باز کنید و تب Javascript را انتخاب کنید.
| هدف | این صفحه را باز کنید | سپس |
|---|---|---|
| سطح لاگ | تنظیم سطح لاگ | Javascript را انتخاب کنید |
| تأخیر شروع / event buffering / offline / disable | پیکربندی | صفحه ویژگی را باز کنید → Javascript |
| اطلاعات Attribution | ارسال اطلاعات Callback · Attribution کاربر | Javascript را انتخاب کنید |
الگو برای توسعهدهندگان:
- ویژگی را در Configuration، Event tracking، یا Additional features پیدا کنید.
- صفحه آن ویژگی را باز کنید.
- تب Javascript را انتخاب کنید.
- نمونه JS را در HTML WebView خود کپی کنید (پس از
AdTrace.onCreateدر Case A، یا در Case B بدونonCreateدوم).
در Case A، گزینههای config و Callback را در AdTraceConfig قبل از AdTrace.onCreate تنظیم کنید. در Case B، همان گزینهها را در native AdTraceConfig تنظیم کنید.
ترتیب عملیات در Case A
- JavaScript را در
WebViewفعال کنید AdTraceBridge.registerAndGetInstance(application, webView)loadUrl(...)- HTML فایلهای
adtrace*.jsرا بارگذاری میکند - JS:
AdTrace.onCreate(config)یک بار - از صفحات ویژگی (تب Javascript) برای رویدادها، سطح لاگ، Callbackها و APIهای دیگر استفاده کنید
- Activity
onDestroy→AdTraceBridge.unregister()
چکلیست Case A
- وابستگیها: core SDK + WebBridge plugin
- مجوزها:
INTERNET،ACCESS_NETWORK_STATE،AD_ID - Bridge قبل از بارگذاری صفحه ثبت شده
- JS
AdTrace.onCreateرا یک بار فراخوانی میکند - کد native
AdTrace.onCreateرا فراخوانی نمیکند - Logcat با تگ
AdTraceنصب/Session را پس از بارگذاری صفحه نشان میدهد