بدء استخدام AdMob في مشروع C++


دليل البدء السريع هذا مخصّص للناشرين والمطوّرين الذين يريدون استخدام AdMob لتحقيق الربح من تطبيق تم إنشاؤه باستخدام Firebase. إذا كنت لا تخطّط لتضمين Firebase في تطبيقك، يمكنك الاطّلاع على دليل AdMob الاستخدام المستقل بدلاً من ذلك.

إذا لم يسبق لك ذلك، تعرَّف على جميع المزايا التي يمكنك الاستفادة منها عند استخدام AdMob وFirebase وGoogle Analytics معًا.

إذا كانت هذه هي المرة الأولى التي تستخدم فيها هذا الدليل، ننصحك بتنزيل تطبيق اختبار حزمة تطوير البرامج (SDK) للغة C++ من "إعلانات Google على الأجهزة الجوّالة" واتّباع الخطوات الواردة فيه.

قبل البدء

الخطوة 1: إعداد تطبيقك في حسابك على AdMob

  1. سجِّل كل صيغة مختلفة من تطبيقك على كل منصة على أنّها AdMob.

    1. سجِّل الدخول أو اشترِك للحصول على حساب AdMob.

    2. سجِّل كل إصدار من تطبيقك مخصّصًا لمنصة معيّنة باستخدام AdMob. تؤدي هذه الخطوة إلى إنشاء AdMob تطبيق برقم AdMob تعريف فريد للتطبيق ستحتاج إليه لاحقًا في هذا الدليل.

    سيُطلب منك إضافة Mobile Adsحزمة تطوير البرامج (SDK) إلى تطبيقك. يمكنك الاطّلاع على تعليمات مفصّلة حول هذه المهمة في وقت لاحق من هذا الدليل.

  2. اربط كل تطبيق من تطبيقات AdMob بتطبيق Firebase المقابل.

    هذه الخطوة اختيارية، ولكن ننصح بها بشدة. اطّلِع على مزيد من المعلومات حول مزايا تفعيل مقاييس سلوك المستخدمين وربط تطبيقات AdMob بمنصة Firebase.

    بالنسبة إلى كل صيغة من صيغ المنصات، أكمِل الخطوتَين التاليتَين في لوحة بيانات التطبيقات ضمن حسابك على AdMob:

    1. فعِّل مقاييس المستخدم للسماح AdMob بمعالجة بيانات الإحصاءات المنسّقة وعرضها في حسابك على AdMob. وهو أيضًا إعداد مطلوب لربط تطبيقك AdMob بمنصة Firebase.

    2. اربط AdMob تطبيقك بمشروعك الحالي على Firebase وتطبيق Firebase المرتبط به.

      تأكَّد من إدخال اسم الحزمة نفسه (Android) أو معرّف الحزمة (iOS) الذي أدخلته لتطبيق Firebase. يمكنك العثور على اسم الحزمة أو معرّف الحزمة لتطبيق Firebase في بطاقة تطبيقاتك ضمن > إعدادات المشروع.

الخطوة 2: إضافة معرّف تطبيق AdMob إلى تطبيقك

Android

أضِف AdMob رقم تعريف التطبيق إلى ملف AndroidManifest.xml في تطبيقك عن طريق إضافة العلامة <meta-data> كما هو موضّح أدناه.

<manifest>
    <application>
        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ADMOB_APP_ID"/>
    </application>
</manifest>

iOS

في ملف Info.plist الخاص بتطبيقك، أضِف مفتاح GADApplicationIdentifier بقيمة سلسلة AdMob لرقم تعريف التطبيق.

يمكنك إجراء هذا التغيير آليًا:

<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~1458002511 -->
<key>GADApplicationIdentifier</key>
<string>ADMOB_APP_ID</string>

أو عدِّلها في محرِّر قائمة الخصائص:

محرّر قائمة العناصر

الخطوة 3: إضافة حزمة "SDK لإعلانات Google على الأجهزة الجوّالة"

بما أنّ حزمة تطوير البرامج (SDK) للغة C++ في "إعلانات Google على الأجهزة الجوّالة" تقع في مساحة الاسم firebase::gma، نزِّل حزمة تطوير البرامج (SDK) للغة C++ في Firebase، ثم فكّ ضغطها في دليل من اختيارك.

لا تستهدف حزمة تطوير البرامج (SDK) بلغة C++ من Firebase نظامًا أساسيًا معيّنًا، ولكنها تتطلّب إعدادات مكتبة خاصة بالنظام الأساسي.

Android

  1. في ملف gradle.properties الخاص بمشروعك، حدِّد موقع حزمة SDK التي تم فك ضغطها:

    systemProp.firebase_cpp_sdk.dir=FULL/PATH/TO/SDK
  2. أضِف المحتوى التالي إلى ملف settings.gradle الخاص بمشروعك:

    def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir')
    
    gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir"
    includeBuild "$firebase_cpp_sdk_dir"
  3. أضِف المحتوى التالي إلى ملف Gradle الخاص بالوحدة (على مستوى التطبيق) (عادةً app/build.gradle)، والذي يتضمّن مصدر الاعتمادية الخاص بمكتبة حزمة تطوير البرامج (SDK) للغة C++ من "إعلانات Google على الأجهزة الجوّالة".

    android.defaultConfig.externalNativeBuild.cmake {
      arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
    }
    
    # Add the dependency for the Google Mobile Ads C++ SDK
    apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
    firebaseCpp.dependencies {
      gma
    }
  4. أضِف المحتوى التالي إلى ملف CMakeLists.txt الخاص بمشروعك.

    # Add Firebase libraries to the target using the function from the SDK.
    add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
    
    # Add the Google Mobile Ads C++ SDK.
    
    # The Firebase C++ library `firebase_app` is required,
    # and it must always be listed last.
    
    set(firebase_libs
      firebase_gma
      firebase_app
    )
    
    target_link_libraries(${target_name} "${firebase_libs}")
  5. يمكنك مزامنة تطبيقك للتأكّد من أنّ جميع التبعيات تتضمّن الإصدارات اللازمة.

اكتملت عملية الإعداد. تم ضبط تطبيق C++ لاستخدام حزمة تطوير البرامج (SDK) للغة C++ من "إعلانات Google على الأجهزة الجوّالة".

iOS

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

  1. احصل على الإصدار 1 من CocoaPods أو إصدار أحدث من خلال تنفيذ ما يلي:

    sudo gem install cocoapods --pre
  2. أضِف حزمة Google Mobile Ads من حزمة تطوير البرامج (SDK) التي تم فك ضغطها.

    1. أنشِئ Podfile في حال عدم توفّره:

      cd YOUR_APP_DIRECTORY
      pod init
    2. أضِف مجموعة الإعلانات المتسلسلة لحزمة C++ SDK لإعلانات Google على الأجهزة الجوّالة إلى ملف Podfile:

      pod 'Google-Mobile-Ads-SDK'
    3. ثبِّت الحزمة، ثم افتح الملف .xcworkspace في Xcode.

      pod install
      open YOUR_APP.xcworkspace
    4. أضِف الأُطر التالية من حزمة تطوير البرامج (SDK) لمنصة Firebase C++ إلى المشروع:

      • xcframeworks/firebase.xcframework
      • xcframeworks/firebase_gma.xcframework

اكتملت عملية الإعداد. تم ضبط تطبيق C++ لاستخدام حزمة تطوير البرامج (SDK) للغة C++ من "إعلانات Google على الأجهزة الجوّالة".

الخطوة 4: إعداد حزمة "SDK لإعلانات Google على الأجهزة الجوّالة"

قبل تحميل الإعلانات، عليك إعداد حزمة تطوير البرامج (SDK) Mobile Ads من خلال استدعاء firebase::gma::Initialize().

يعرض هذا الاستدعاء firebase::Future يكتمل بعد انتهاء عملية التهيئة (أو بعد انتهاء المهلة البالغة 30 ثانية). يجب استدعاء هذه الطريقة مرة واحدة فقط وفي أقرب وقت ممكن، ويفضّل أن يكون ذلك عند تشغيل التطبيق.

في ما يلي مثال على كيفية استدعاء Initialize():

Android

// Initialize the Google Mobile Ads library
firebase::InitResult result;
Future<AdapterInitializationStatus> future =
  firebase::gma::Initialize(jni_env, j_activity, &result);

if (result != kInitResultSuccess) {
  // Initialization immediately failed, most likely due to a missing dependency.
  // Check the device logs for more information.
  return;
}

// Monitor the status of the future.
// See "Use a Future to monitor the completion status of a method call" below.
if (future.status() == firebase::kFutureStatusComplete &&
    future.error() == firebase::gma::kAdErrorCodeNone) {
  // Initialization completed.
} else {
  // Initialization on-going, or an error has occurred.
}

iOS

// Initialize the Google Mobile Ads library.
firebase::InitResult result;
Future<AdapterInitializationStatus> future =
  firebase::gma::Initialize(&result);

if (result != kInitResultSuccess) {
  // Initialization immediately failed, most likely due to a missing dependency.
  // Check the device logs for more information.
  return;
}

// Monitor the status of the future.
// See "Use a Future to monitor the completion status of a method call" below.
if (future.status() == firebase::kFutureStatusComplete &&
    future.error() == firebase::gma::kAdErrorCodeNone) {
  // Initialization completed.
} else {
  // Initialization on-going, or an error has occurred.
}

استخدام Future لمراقبة حالة اكتمال طلب طريقة

توفّر لك Future طريقة لتحديد حالة اكتمال عمليات استدعاء الطريقة غير المتزامنة.

على سبيل المثال، عندما يستدعي تطبيقك firebase::gma::Initialize()، يتم إنشاء firebase::Future جديد وعرضه. يمكن لتطبيقك بعد ذلك إرسال طلبات بحث إلى status() الخاص بـ Future لتحديد وقت اكتمال عملية الإعداد. بعد اكتمال العملية، يمكن لتطبيقك استدعاء result() للحصول على AdapterInitializationStatus الناتج.

تتضمّن الطرق التي تعرض Future طريقة "النتيجة الأخيرة" المقابلة التي يمكن للتطبيقات استخدامها لاسترداد أحدث Future لإجراء معيّن. على سبيل المثال، يحتوي firebase::gma::Initialize() على طريقة مقابلة تُسمى firebase::gma::InitializeLastResult()، وتعرض Future يمكن لتطبيقك استخدامه للتحقّق من حالة آخر طلب تم إرساله إلى firebase::gma::Initialize().

إذا كانت حالة Future هي "مكتملة" ورمز الخطأ هو firebase::gma::kAdErrorCodeNone، يعني ذلك أنّ العملية اكتملت بنجاح.

يمكنك أيضًا تسجيل عمليات معاودة الاتصال ليتم استدعاؤها عند اكتمال Future. في بعض الحالات، سيتم تشغيل دالة الرجوع في سلسلة محادثات مختلفة، لذا تأكَّد من أنّ الرمز البرمجي آمن للاستخدام في سلاسل المحادثات. يستخدم مقتطف الرمز هذا مؤشر دالة لإجراء معاودة الاتصال:

// Registers the OnCompletion callback. user_data is a pointer that is passed verbatim
// to the callback as a void*. This allows you to pass any custom data to the callback
// handler. In this case, the app has no data, so you must pass nullptr.
firebase::gma::InitializeLastResult().OnCompletion(OnCompletionCallback,
  /*user_data=*/nullptr);

// The OnCompletion callback function.
static void OnCompletionCallback(
  const firebase::Future<AdapterInitializationStatus>& future, void* user_data) {
  // Called when the Future is completed for the last call to firebase::gma::Initialize().
  // If the error code is firebase::gma::kAdErrorCodeNone,
  // then the SDK has been successfully initialized.
  if (future.error() == firebase::gma::kAdErrorCodeNone) {
    // success!
  } else {
    // failure.
  }
}

الخطوة 5: اختيار شكل إعلان لتنفيذه في تطبيقك

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

إعلانات مستطيلة تظهر في أعلى شاشة الجهاز أو أسفلها

تبقى إعلانات البانر معروضة على الشاشة أثناء تفاعل المستخدمين مع التطبيق، ويمكن إعادة تحميلها تلقائيًا بعد فترة زمنية محدّدة. إذا كنت جديدًا في مجال الإعلانات على الأجهزة الجوّالة، ستكون هذه الإعلانات خيارًا رائعًا للبدء.

عرض إعلانات البانر

إعلان بيني

إعلانات بملء الشاشة تغطي واجهة التطبيق إلى أن يغلقها المستخدم

يُفضّل استخدام "الإعلانات البينية" عند التوقف مؤقتًا بشكل طبيعي أثناء تنفيذ التطبيق، مثلاً بين مستويات اللعبة أو بعد إكمال مهمة مباشرةً.

عرض الإعلانات البينية

تمت المكافأة

هي إعلانات تكافئ المستخدمين على مشاهدة فيديوهات قصيرة والتفاعل مع إعلانات تشغيل إصدار بسيط من اللعبة ومع الاستطلاعات.

يمكن أن تساعد الإعلانات مقابل مكافأة (أو "الإعلانات المستندة إلى المكافآت") في تحقيق الربح من مستخدمي ألعاب التشغيل المجاني.

عرض الإعلانات مقابل مكافآت

مواضيع أخرى تهمّك

عرض مقاييس المستخدمين وبيانات الإحصاءات

بعد إعداد حزمة Mobile Ads SDK، تبدأ الحزمة تلقائيًا في تسجيل أحداث الإحصاءات وخصائص المستخدم من تطبيقك. ويمكنك الاطّلاع على هذه البيانات بدون إضافة أي رمز إضافي إلى تطبيقك أو عرض أي إعلانات. في ما يلي الأماكن التي يمكنك فيها الاطّلاع على بيانات الإحصاءات هذه:

يُرجى العِلم أنّه لتمثيل مقياسَي متوسط الأرباح من كل مستخدِم ومتوسط الأرباح لكل مستخدِم يدفع رسومًا بشكل أفضل، قد تحتاج إلى تضمين بيانات من حدث مخصّص في &quot;إحصاءات Google&quot; باسم ecommerce_purchase في عملية احتساب الإيرادات لهذين المقياسين (كيفية إجراء ذلك).

(اختياري) استخدام المزيد من ميزات Google Analytics وFirebase

استفِد من المزيد من الفرص والميزات لتحسين تحقيق الربح من التطبيقات وتعزيز تفاعل المستخدمين:

  • إضافة حزمة تطوير البرامج (SDK) لمنصة Firebase واستخدامها في Google Analytics

    لمزيد من المعلومات، يُرجى الاطّلاع على دليل استخدام Google Analytics وFirebase مع تطبيقات AdMob.

  • استخدام منتجات Firebase الأخرى في تطبيقك

    بعد إضافة حزمة تطوير البرامج (SDK) لمنصة Firebase الخاصة بـ Google Analytics، استخدِم منتجات Firebase الأخرى لتحسين الإعلانات في تطبيقك.

    • تتيح لك خدمة Remote Config تغيير سلوك تطبيقك ومظهره بدون الحاجة إلى إصدار تحديث له، وذلك بدون أي تكلفة، ولعدد غير محدود من المستخدمين النشطين يوميًا.

    • تتيح لك أداة A/B Testing اختبار التغييرات التي تجريها على واجهة المستخدم أو الميزات أو حملات التفاعل في تطبيقك لمعرفة ما إذا كانت تؤثّر في مقاييسك الرئيسية (مثل الأرباح والاحتفاظ بالمستخدمين) قبل طرح التغييرات على نطاق واسع.