WebBridge (WebView)
راهنمای فنی یکپارچهسازی Adtrace WebBridge در اپلیکیشن Android که محتوا را در WebView بارگذاری میکند.
هماهنگ با Adtrace Android SDK / WebBridge v2.6.0.
برای اپهای فقط 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 | 17 (Web Bridge) |
| 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:2.6.0'
// اگر از Adtrace SDK درون web views اپ خود استفاده میکنید، موارد زیر را اضافه کنید
implementation 'io.adtrace:android-sdk-plugin-webbridge:2.6.0'
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 17 (Jelly Bean) است. از 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()
}
}