الإعلانات التي تستهدف الاهتمامات باستخدام Topics API

تقديم ملاحظات

لمحة عن Topics API

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

تستند الإعلانات السياقية فقط إلى الاهتمامات المستمدة من المحتوى الحالي الذي تتم مشاهدته (والإعلان عنه عليه). ومن بين فوائد Topics API أنها تسمح للتطبيقات المفيدة للمستخدم ولكن لا يمكن تحقيق الربح منها بسهولة من خلال الإعلانات السياقية، بعرض إعلانات ملائمة للمستخدم أكثر من أي شيء آخر، مما يساعد على تمويل التطبيقات التي يستخدمها المستخدم.

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

تم تصميم Topics API لدعم حِزم تطوير البرامج (SDK) لعرض الإعلانات التابعة لجهات خارجية والتي تعمل عادةً في عدة تطبيقات. ويأتي هذا الدعم في شكل إبراز بعض الاهتمامات على مستوى التطبيقات والتي ترصدها حِزم SDK عادةً. لا يجب أن يتوقع مطورو التطبيقات الحصول على معلومات إضافية عن مستخدميهم.

المفاهيم الرئيسيّة

  • الموضوع هو موضوع يمكن للإنسان فهمه، وهو جزء من تصنيف "المواضيع".
  • يلاحظ المتصل موضوعًا (تطبيق أو حزمة تطوير برامج (SDK) تابعة لجهة خارجية يتم استخدامها في التطبيق) إذا قدَّم المتصل طلب Topics API من تطبيق مرتبط بهذا الموضوع خلال آخر 3 فترات.
  • الحقبة هي فترة يتم فيها احتساب المواضيع، على سبيل المثال أسبوع واحد.

آلية العمل

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

راجِع دليل المطوِّرين في Topics API للاطّلاع على أمثلة عن الرموز البرمجية التي توضّح كيفية إعداد إمكانية جلب المواضيع للإعلانات التي تستهدِف الاهتمامات. ملاحظة: لم يتم الانتهاء من واجهات برمجة التطبيقات بعد.

يتم اختيار المواضيع من تصنيف مفتوح المصدر محدَّد مسبقًا.

تستخدم المنصة نموذج مصنِّف لاستنتاج المواضيع. سيكون تطبيق Topics API واستخدامه للمصنِّف جزءًا من المشروع المفتوح المصدر لنظام Android، وسيتحسّن أداؤه مع مرور الوقت.

لأغراض التوضيح، يوضّح مثال الرمز التالي استخدام المواضيع لجلب إعلان يستهدف الاهتمامات. إنّ واجهات برمجة التطبيقات المستخدَمة هنا ليست نهائية.

// Initialize the Topics API.
…
topicsFuture = AdvertisingTopicsClient.getTopics();

// Retrieve Topics and use them in Ad request.
Futures.addCallback(
    topicsFuture,
    new FutureCallback<AdvertisingTopicsInfo>() {
        @Override
        public void onSuccess(@Nullable AdvertisingTopicsInfo topicsInfo) {
            // Sanitize Topics result.
            ...
            // Initialize ad request with Topics obtained.
            AdRequest adRequest = AdRequest.initialize(topicsInfo);
        }

        @Override
        public void onFailure(Throwable t) {
            // Handle error.
            ...
        }
});

للحصول على فهم أفضل لطريقة عمل نموذج المصنِّف، يمكنك اختبار طريقة تفاعل بيانات التطبيق المختلفة في النظام باستخدام أداة Android Topics Classifier Colab.

الوصول إلى واجهات Topics API

يجب التسجيل في منصات تكنولوجيا الإعلان للوصول إلى Topics API. لمزيد من المعلومات، يُرجى الاطّلاع على المقالة التسجيل في حساب "مبادرة حماية الخصوصية".

التفاصيل

  • وبعد كل حقبة (على سبيل المثال، مرة واحدة في الأسبوع)، تُحتسَب أهم 5 مواضيع للمستخدِم باستخدام المعلومات المتوفّرة على الجهاز فقط.

    • عند استدعاء Topics API، سيتحقّق النظام الأساسي مما إذا كان قد تم تخصيص موضوع للتطبيق الذي يستدعي واجهة برمجة التطبيقات. إذا لم تكن هناك أي مواضيع معيّنة، سيتم اختيار أحدها على النحو التالي وسيتم تخصيص الموضوع الذي تم اختياره لهذا التطبيق لبقية هذه الحقبة.
      • مع احتمال 95٪، يتم اختيار موضوع عشوائيًا من قائمة أهم 5 مواضيع محسوبة في تلك الفترة.
      • مع احتمال 5%، يتم اختيار الموضوع عشوائيًا من التصنيف.
      • يمكن أن يشير المتصل إلى رغبته في استرداد المواضيع بدون تعديل الحالة من خلال استدعاء getTopics باستخدام المعلَمة shouldRecordObservation = false. وهذا يعني أنه يمكن عرض المواضيع، لكن لن يتم تضمينها في الحساب الأسبوعي للحقبة، ولن يحدّث قائمة المواضيع التي تم ملاحظتها للمتصل.
    • يرجع السبب في أنّ كل تطبيق يحصل على أحد المواضيع المتعددة إلى ضمان اختيار التطبيقات المختلفة لمواضيع مختلفة، ما يجعل من الصعب على التطبيقات الربط المتبادل للمستخدم نفسه.
      • على سبيل المثال، قد يرى التطبيق "أ" الموضوع "T1" للمستخدم، ولكن قد يطّلع التطبيق "ب" على الموضوع "T2". هذا يجعل من الصعب على التطبيقين تحديد أن هذه المعلومات مرتبطة بنفس المستخدم.
  • تعرض Topics API قائمة تضم ما يصل إلى 3 مواضيع، موضوع واحد لكل حقبة من الحقبات الثلاث الماضية.

    • من خلال تقديم ما يصل إلى 3 مواضيع، سيكون للتطبيقات التي نادرًا ما يتم استخدامها مواضيع كافية للعثور على الإعلانات ذات الصلة بها، إلا أنّ التطبيقات المستخدمة بشكل متكرّر ستتعلّم موضوعًا واحدًا جديدًا على الأكثر أسبوعيًا.
    • وتشتمل معلومات الموضوع المعروض على معرّف موضوع (عدد صحيح) يقابل أحد الإدخالات في التصنيف، ونسخة التصنيف، وإصدار نموذج المصنِّف.
    • يمكن فقط للمتصلين الذين لاحظوا أن المستخدم يستخدمون تطبيقًا مرتبطًا بالموضوع المعني خلال آخر 3 حقبات أن يتلقّوا الموضوع.
    • تمثّل جميع المواضيع التي يتم عرضها اهتمامات المستخدم، ويمكنك اختيار أي من هذه المواضيع أو جميعها لتخصيص الإعلانات في طلب الإعلان.
  • بعد تخصيص موضوع للتطبيق الذي يستدعي Topics API، سيحدِّد النظام الأساسي ما إذا كان بإمكان المتصل تلقّي هذا الموضوع أم لا.

    • يمكن فقط للمتصلين الذين لاحظوا تفاعل المستخدمين مع تطبيق مرتبط بالموضوع المعني خلال آخر 3 حقبات أن يتلقوا الموضوع.
    • فإذا لم يستدعي المتصل واجهة برمجة التطبيقات في السابق لهذا المستخدم على أحد التطبيقات عن هذا الموضوع، فلن يتم تضمين الموضوع في القائمة التي تعرضها واجهة برمجة التطبيقات.
    • إذا لم يتلقَّ المتصل أي مواضيع في الفترات الثلاث السابقة، ستعرض Topics API قائمة فارغة.

    على سبيل المثال، لنفترض أنّ المستخدم لديه 7 تطبيقات مثبَّتة على الجهاز: A وB وC وD وE وF وG. لنفترض أنّ تصنيف المواضيع للتطبيق وحِزم تطوير البرامج (SDK) لتكنولوجيا الإعلان في هذه التطبيقات هما على النحو التالي:

    التطبيق تصنيف المواضيع حزمة تطوير البرامج (SDK) لتكنولوجيا الإعلانات
    A T1، T5 ad-sdk1 وad-sdk2
    B T2 حزمة تطوير البرامج (SDK) للإعلان
    C T3 وT6 ad-sdk3 وad-sdk4
    D T1 وT4 حزمة تطوير البرامج (SDK) للإعلان
    E T5 ad-sdk4 وad-sdk5
    F T6 ad-sdk2 وad-sdk3 وad-sdk4
    G T7 حزمة تطوير البرامج (SDK) للإعلان
    • نهاية الأسبوع 1: تُنشئ Topics API أهم 5 مواضيع للمستخدم في هذه الفترة.
    أهم الموضوع المتصلون الذين يمكنهم التعرّف على الموضوع
    T1 ad-sdk1 وad-sdk2
    T2 حزمة تطوير البرامج (SDK) للإعلان
    T3 ad-sdk3 وad-sdk4
    T4 حزمة تطوير البرامج (SDK) للإعلان
    T5 ad-sdk1 وad-sdk2 وad-sdk4 وad-sdk5
    • في الأسبوع الثاني، إذا استدعى المتصل من أي تطبيق واجهة برمجة التطبيقات، ستشمل قائمة المواضيع التي يتم عرضها فقط المواضيع التي يكون المتصل فيها في عمود "المتصلون الذين يمكنهم التعرّف على الموضوع" لذلك الموضوع لذلك التطبيق لهذه الفترة.
    • تبلغ فترة السجل المضمنة في حساب الموضوعات المتاحة لكل متصل 3 فترات (أو 3 أسابيع).
    • ولا يتم استخدام سوى المواضيع المرتبطة بالتطبيقات التي تستدعي Topics API من خلال حِزم SDK الإعلانية. وهذا يعني أنّه إذا كان التطبيق لا يتضمّن أي حِزم تطوير برامج (SDK) لعرض الإعلانات تسمّى Topics API، لن تساهم المواضيع المرتبطة بهذا التطبيق في مجموعة المواضيع التي يمكن أن تصل إليها حِزم SDK الإعلانية.
    • يمكن لأي تطبيق أيضًا إيقاف Topics API بشكل بياني من خلال عناصر XML وبيان جديدة لمنع حِزم SDK لعرض الإعلانات من استخدام واجهة برمجة التطبيقات لهذا التطبيق. ولن تساهم المواضيع المرتبطة بالتطبيقات التي تم إيقافها في احتساب المواضيع الأسبوعية. سيتم تحديث هذا المستند لتضمين تفاصيل التنفيذ ذات الصلة.
  • إذا لم يكن استخدام التطبيق كافيًا لاستنتاج 5 مواضيع، قد ينظر النظام الأساسي في خيارات مثل إنشاء المواضيع المتبقية عشوائيًا.

التصنيف

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

مصنِّف المواضيع

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

  • عند استخدام نموذج المصنِّف للاستنتاج لحساب المواضيع في حقبة معيّنة، تظل مجموعة الإشارات المستخدَمة على الجهاز. قد تتضمّن هذه المجموعة من الإشارات تطبيقات تم تثبيتها أو تم استخدامها مؤخرًا، وقد يتم توسيعها لاحقًا لتشمل إشارات أخرى.
  • سيتم تدريب النماذج الأولية من قبل Google، حيث تتضمن بيانات التدريب تصنيفات من إعداد الإنسان لمعلومات التطبيق المتاحة للجمهور. وسيكون النموذج متاحًا مجانًا للتطبيقات لاختباره لمعرفة المواضيع التي يصنفها التطبيق.
  • يتم تدريب النماذج الأولية على المعلومات المتاحة للجميع عن التطبيقات من مجموعة محدودة من متاجر التطبيقات، مثل "متجر Google Play".
  • من الممكن أن يتم ربط التطبيق بأكثر من موضوع واحد، أو لا يتم تعيين أي موضوعات، أو أنه لا يضيف إلى سجل موضوعات المستخدم. في حال ربط تطبيق ما بأكثر من موضوع واحد في التصنيف، سيقتصر عدد المواضيع المختارة لهذا التطبيق على أهم 3 مواضيع.

عناصر تحكم المستخدم

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

لتسهيل اختبار تجربة المستخدم النهائي، يمكنك أيضًا إطلاق هدف داخل التطبيق لعرض واجهة مستخدم إعدادات Topics على غرار الشكل الذي ستظهر به للمستخدم النهائي. في ما يلي مثال على هذه المكالمة:

//Button that launches settings UI
private Button mSettingsAppButton;
private static final String RB_SETTING_APP_INTENT = "android.adservices.ui.SETTINGS";


//Does setup for button on screen that will launch settings UI to observe Topics
private void registerLaunchSettingsAppButton() {
    mSettingsAppButton.setOnClickListener(
        new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Context context = getApplicationContext();
                Intent activity2Intent = new Intent(RB_SETTING_APP_INTENT);
                activity2Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(activity2Intent);
            }
        });
}

تسجيل منصة لتكنولوجيا الإعلان

للوصول إلى Topics API، على كل منصات تكنولوجيا الإعلان (بما في ذلك منصات Google) إكمال عملية التسجيل.

يمكن لمطوّري التطبيقات تحديد مطوّري تكنولوجيا الإعلان الذين يمكنهم الوصول إلى Topics APIs من خلال تضمين رقم تعريف التسجيل لمطوّر تكنولوجيا الإعلان ضمن بيان التطبيق.

تشفير المواضيع المعروضة

إضافةً إلى ذلك، يُطلب أيضًا من منصات تكنولوجيا الإعلان المسجّلة التي تستدعي Topics API تقديم مفاتيح تشفير لضمان أن تكون المواضيع المعروضة قابلة للقراءة فقط للمتصل.

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

ستطلب "مبادرة حماية الخصوصية" من تكنولوجيا الإعلان التأكّد من توفّر نقطة النهاية التي توفّرها تكنولوجيا الإعلان أثناء عملية التسجيل. لمزيد من التفاصيل حول الإجراءات المطلوبة من قِبل أدوات تكنولوجيا الإعلان الحالية والمُسجَّلة حديثًا، اطّلِع على "دليل المطوّر للتسجيل".

تفاصيل التشفير

مع إطلاق التشفير، ستعمل الطلبات على "GetTopics() " الآن على إنشاء استجابة بقائمة من كائنات EncryptedTopic. وسيؤدي فك تشفير هذه النتائج إلى إنشاء كائن بتنسيق JSON نفسه لكائن الموضوع السابق.

تتيح Topics API تنفيذ هدف واحد لتشفير المفتاح العام المختلط (HPKE). نتوقع أن يستضيف المتصل المسجَّل مفتاحًا عامًا بنظام 32 بت على نقطة نهاية عنوان URL للتشفير العام التي تم تقديمها أثناء التسجيل. من المتوقع أن تكون هذه المفاتيح بترميز Base64.

يحتوي العنصر EncryptedTopic على 3 حقول. يمكن الحصول على قائمة المواضيع التي تم إرجاعها باستخدام المفتاح الخاص المقابل للمفتاح العام.

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