دمج واجهة برمجة تطبيقات WebView للإعلانات

تتيح واجهة WebView API for Ads تحقيق الربح من الإعلانات داخل التطبيق باستخدام WebViewController إذا كنت تعرض محتوى ويب يُنفِّذ إعلانات باستخدام رمز AdSense أو علامة "ناشر Google" في تطبيقك من خلال WebViewController، عليك استخدام واجهة برمجة التطبيقات هذه لتفعيل الإعلانات. تحقيق الربح لمزيد من المعلومات، يُرجى مراجعة AdSense وسياسات مدير إعلانات Google

  1. تحقيق الربح من خلال تقديم طلبات الإعلان باستخدام "SDK لإعلانات Google على الأجهزة الجوّالة"

    يمكنك تحقيق الربح من تطبيقك عن طريق إرسال طلبات إعلان إلى "مدير الإعلانات" من خلال حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" من خلال تنفيذ أشكال الإعلانات للأجهزة الجوّالة التطبيق.

    مزيد من المعلومات

  2. تحقيق الربح باستخدام واجهة WebView API for Ads

    إذا كان تطبيقك يستخدم WebViewController لعرض محتوى الويب الذي يعرض إعلانات من مدير الإعلانات أو AdSense، استخدام واجهة WebView API for Ads للتسجيل WebViewController عناصر باستخدام "SDK لإعلانات Google على الأجهزة الجوّالة". تشير رسالة الأشكال البيانية JavaScript في رمز AdSense أو علامة "ناشر Google" وإنشاء طلبات الإعلان وإرسالها، فلا تحتاج إلى إجراء أي طلبات إعلان مع حزمة SDK. ضع في اعتبارك أن الويب على الأجهزة الجوّالة والويب على أجهزة سطح المكتب فقط تنسيقات المستودع متوفرة باستخدام واجهة برمجة التطبيقات هذه.

    إذا لم تكن مالك محتوى الويب في WebViewController، يُرجى العلم أنّه لا يزال. على استخدام واجهة برمجة التطبيقات هذه للمساعدة في حماية المعلنين من المحتوى غير المرغوب فيه تحسين الأرباح لناشري المحتوى على الويب الذي قدّم المحتوى.

لاحظ أنه يمكنك تنفيذ أحد الخيارين أو كليهما في التطبيق نفسه.

يهدف هذا الدليل إلى مساعدتك في دمج واجهة WebView API for Ads في تطبيق iOS.

قبل البدء

قبل بدء استخدام WebView API for Ads، تأكَّد من إجراء ما يلي:

تجاوز عملية التحقّق من معرّف التطبيق

Android

أضِف علامة <meta-data> التالية في ملف AndroidManifest.xml إلى تجاوز عملية التحقق من APPLICATION_ID. إذا فاتتك هذه الخطوة، قد تستخدم Google قد تعرض حزمة SDK لإعلانات الأجهزة الجوّالة IllegalStateException عند تشغيل التطبيق

<!-- Bypass APPLICATION_ID check for WebView API for Ads -->
<meta-data
    android:name="com.google.android.gms.ads.INTEGRATION_MANAGER"
    android:value="webview"/>

iOS

عدِّل ملف Runner/Info.plist باستخدام قيمة المفتاح والسلسلة أدناه إلى تجاوز عملية التحقق من GADApplicationIdentifier. إذا فاتتك هذه الخطوة، قد تعرض حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" خطأ GADInvalidInitializationException عند تشغيل التطبيق

<!-- Bypass GADApplicationIdentifier check for WebView API for Ads -->
<key>GADIntegrationManager</key>
<string>webview</string>

تسجيل WebViewController

لتحسين تحقيق الربح من الإعلانات داخل التطبيق من خلال WebViewController التي تستخدم AdSense الرمز أو ناشر Google العلامات، اتّبِع الخطوات الواردة أدناه:

  1. يمكنك تفعيل JavaScript في WebViewController. وقد يؤدي عدم الالتزام بذلك إلى عدم تحميل الإعلانات.

  2. لتحسين تجربة تجربة الإعلان بشكل متّسق مع Chrome سياسة ملفات تعريف الارتباط، فعِّل ملفات تعريف الارتباط التابعة لجهات خارجية على مثيل AndroidWebViewController.

  3. تسجيل المثيل WebViewController من خلال استدعاء الدالة registerWebView() التي تقدمها حزمة "SDK لإعلانات Google على الأجهزة الجوّالة".

import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:webview_flutter_android/webview_flutter_android.dart';

@override
class WebViewExampleState extends State<WebViewExample> {
  late final WebViewController controller;

  @override
  void initState() {
    super.initState();

    createWebView();
  }

  void createWebView() async {
    controller = WebViewController();
    // 1. Enable JavaScript in the web view.
    await controller.setJavaScriptMode(JavaScriptMode.unrestricted);

    // 2. Enable third-party cookies for Android.
    if (controller.platform is AndroidWebViewController) {
      AndroidWebViewCookieManager cookieManager = AndroidWebViewCookieManager(
        const PlatformWebViewCookieManagerCreationParams());
      await cookieManager.setAcceptThirdPartyCookies(
        controller.platform as AndroidWebViewController, true);
    }

    // 3. Register the web view.
    await MobileAds.instance.registerWebView(controller);
  }
}

تحميل عنوان URL

يمكنك الآن تحميل عنوان URL وعرض محتوى الويب من خلال WebViewController. ننصحك بتحميل عنوان URL التجريبي هذا: https://webview-api-for-ads-test.glitch.me/ لاختبار الدمج قبل باستخدام عنوان URL الخاص بك. ستعرض صفحة الويب خطأً إذا لم يكن JavaScript متاحًا مفعّلة.

import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:webview_flutter_android/webview_flutter_android.dart';

@override
class WebViewExampleState extends State<WebViewExample> {
  late final WebViewController controller;

  @override
  void initState() {
    super.initState();

    createWebView();
  }

  void createWebView() async {
    controller = WebViewController();
    // 1. Enable JavaScript in the web view.
    await controller.setJavaScriptMode(JavaScriptMode.unrestricted);

    // 2. Enable third-party cookies for Android.
    if (controller.platform is AndroidWebViewController) {
      AndroidWebViewCookieManager cookieManager = AndroidWebViewCookieManager(
        const PlatformWebViewCookieManagerCreationParams());
      await cookieManager.setAcceptThirdPartyCookies(
        controller.platform as AndroidWebViewController, true);
    }

    // 3. Register the web view.
    await MobileAds.instance.registerWebView(controller);

    // 4. Load the URL.
    await controller.loadRequest(Uri.parse('https://webview-api-for-ads-test.glitch.me/'));
  }

يعرض عنوان URL التجريبي أشرطة حالة خضراء لإجراء عملية دمج ناجحة إذا كان تنطبق الشروط التالية:

  • تم ربط WebView بحزمة "SDK لإعلانات Google على الأجهزة الجوّالة".
  • تم تفعيل JavaScript
  • تعمل ملفات تعريف الارتباط التابعة لجهات خارجية (غير متوقَّعة على أجهزة iOS).
  • تعمل ملفات تعريف الارتباط الخاصة بالطرف الأول.

عرض رمز المصدر لعنوان URL التجريبي. يمكنك بعد ذلك استبدال عنوان URL التجريبي بعنوان URL الخاص بموقعك الإلكتروني. يمكنك أيضًا استخدام أداة خادم وكيل مثل Charles لتسجيل زيارات HTTPS إلى التطبيق وفحص طلبات الإعلان لمَعلمة &scar=.