عرض تصميمات الإعلانات بالتناوب

استخدِم "مساحة التخزين المشتركة" لتحديد تصميم الإعلان الذي يراه المستخدم على المواقع الإلكترونية.

Shared Storage API هي اقتراح ضمن "مبادرة حماية الخصوصية" مخصّص للاستخدام العام ومساحة التخزين على مواقع إلكترونية متعددة، ويتوافق مع العديد من حالات الاستخدام الممكنة وأحد الأمثلة على ذلك هو عرض تصميمات الإعلانات بالتناوب، والذي يتوفر للاختبار في Chrome 104.0.5086.0 والإصدارات الأحدث.

باستخدام عرض تصميمات الإعلانات بالتناوب، يمكنك تخزين بيانات، مثل رقم تعريف تصميم الإعلان، وعدد المشاهدات، وتفاعل المستخدم، لتحديد تصاميم الإعلانات التي تظهر لمستخدمي تصميمات الإعلانات في المواقع الإلكترونية المختلفة.

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

تجربة عرض تصميمات الإعلانات بالتناوب

لتجربة عرض تصميمات الإعلانات بالتناوب باستخدام "مساحة التخزين المشتركة"، تأكَّد من استخدام الإصدار 104.0.5086.0 من Chrome أو إصدار أحدث. بعد ذلك، فعِّل علامة تجربة واجهات برمجة التطبيقات لإعلانات "مبادرة حماية الخصوصية" على chrome://flags/#privacy-sandbox-ads-apis.

ضبط تجربة واجهات برمجة التطبيقات لإعلانات "مبادرة حماية الخصوصية" على تفعيل لاستخدام واجهات برمجة التطبيقات هذه

يمكنك أيضًا تفعيل "مساحة التخزين المشتركة" باستخدام العلامة --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames في سطر الأوامر.

تجربة عيّنات التعليمات البرمجية

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

في هذا المثال:

  • تم تضمين creative-rotation.js في إطار. يحدّد هذا النص البرمجي الإعلانات الأكثر أهمية ( الأهمية)، ويطلب من العمل المصغّر تحديد المحتوى الذي يجب عرضه.
  • creative-rotation-worklet.js هو عامل التخزين المشترك الذي يحدد التوزيع المرجَّح للمحتوى والمرتجعات التي يجب عرضها.

creative-rotation.js

// Ad config with the URL of the content, a probability weight for rotation, and the clickthrough rate.
const DEMO_CONTENT_CONFIG = [
  {
    url: 'https://your-server.example/contents/content-1.html',
    weight: 0.7,
  },
  {
    url: 'https://your-server.example/contents/content-2.html',
    weight: 0.2,
  },
  {
    url: 'https://your-server.example/contents/content-3.html',
    weight: 0.1,
  },
];

// Set the mode to sequential and set the starting index to 0.
async function seedStorage() {
  await window.sharedStorage.set('content-rotation-mode', 'sequential', {
    ignoreIfPresent: true,
  });

  await window.sharedStorage.set('content-rotation-index', 0, {
    ignoreIfPresent: true,
  });
}

async function injectAd() {
  // Load the worklet module
  await window.sharedStorage.worklet.addModule('content-rotation-worklet.js');

  // Initially set the storage to sequential mode for the demo
  seedStorage();

  // Run the URL selection operation to determine the next content rendered.
  const urls = DEMO_CONTENT_CONFIG.map(({ url }) => ({ url }));
  const fencedFrameConfig = await window.sharedStorage.selectURL('content-rotation', urls, { 
    data: DEMO_CONTENT_CONFIG,
    resolveToConfig: true
  });

  // Render the opaque URL into a fenced frame
  document.getElementById('content-slot').config = fencedFrameConfig;
}

injectAd();

creative-rotation-worklet.js

class SelectURLOperation {
  async run(urls, data) {
    // Read the rotation mode from Shared Storage
    const rotationMode = await this.sharedStorage.get('content-rotation-mode');

    // Generate a random number to be used for rotation
    const randomNumber = Math.random();

    let index;

    switch (rotationMode) {
      /**
       * Sequential rotation
       * - Rotates the contents in order
       * - Example: A -> B -> C -> A ...
       */
      case 'sequential':
        const currentIndex = await this.sharedStorage.get('creative-rotation-index');
        index = parseInt(currentIndex, 10);
        const nextIndex = (index + 1) % urls.length;

        await this.sharedStorage.set('content-rotation-index', nextIndex);
        break;

      /**
       * Weighted rotation
       * - Rotates the contentswith weighted probability
       * - Example: A=70% / B=20% / C=10%
       */
      case 'weighted-distribution':
        
        // Sum the weights cumulatively, and find the first URL where the
        // sum exceeds the random number. The array is sorted in
        // descending order first.
        let weightSum = 0;
        const { url } = data
          .sort((a, b) => b.weight - a.weight)
          .find(({ weight }) => {
            weightSum += weight;
            return weightSum > randomNumber;
          });

        index = urls.indexOf(url);
        break;

      default:
        index = 0;
    }
    return index;
  }
}

register('content-rotation', SelectURLOperation);

حالات الاستخدام

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

اختيار المحتوى

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

  • عرض تصميم الإعلان بالتناوب: يمكنك تخزين البيانات، مثل رقم تعريف تصميم الإعلان وعدد المشاهدات وتفاعل المستخدمين، لتحديد تصاميم الإعلانات التي ستظهر لمستخدِمي المواد الإبداعية في المواقع الإلكترونية المختلفة.
  • اختبار A/B: يمكنك تخصيص مستخدم لمجموعة تجارب، ثم تخزين تلك المجموعة في مساحة تخزين مشتركة للوصول إليها من مواقع إلكترونية مختلفة.
  • تجارب مخصّصة للمستخدِم: يمكنك مشاركة محتوى مخصّص وعبارات الحث على اتّخاذ إجراء استنادًا إلى حالة تسجيل المستخدِم أو حالاته الأخرى.

إنشاء تقارير تلخيصية

جمع المعلومات باستخدام "مساحة التخزين المشتركة" وإنشاء تقرير ملخّص مجمّع صاخب بوابة الإخراج لحالات الاستخدام هذه هي Private Aggregation API.

  • قياس مدى الوصول الفريد: يريد العديد من منتجي المحتوى والمعلنين معرفة عدد المستخدمين الفرديين الذين رأوا المحتوى الخاص بهم. استخدِم "مساحة التخزين المشتركة" لتسجيل المرة الأولى التي يشاهد فيها المستخدم إعلانك أو فيديو مضمّنًا أو جهة نشر، وتمنع الحساب المتكرر لهذا المستخدم نفسه على مواقع إلكترونية مختلفة. يمكنك بعد ذلك استخدام واجهة برمجة التطبيقات Private Aggregation API لإعداد تقرير ملخّص عن مدى وصولك إلى الجمهور.
  • قياس الخصائص الديمغرافية: غالبًا ما يريد منتجو المحتوى فهم الخصائص الديمغرافية للجمهور. يمكنك استخدام "مساحة التخزين المشتركة" لتسجيل البيانات الديمغرافية للمستخدمين في سياق يتوفّر لديك ذلك، مثل الموقع الإلكتروني للطرف الأول، واستخدام التقارير المجمّعة لإعداد تقارير عنها على العديد من المواقع الإلكترونية الأخرى، مثل المحتوى المضمَّن.
  • قياس معدل التكرار بـ K+: في بعض الأحيان، يكون هناك حد أدنى لعدد مرات المشاهدة حتى يتمكن المستخدم من التعرف على محتوى معين أو تذكُّره (غالبًا في سياق مشاهدات الإعلان). يمكنك استخدام مساحة التخزين المشتركة لإنشاء تقارير عن المستخدمين الفريدين الذين شاهدوا محتوى ما لا يقل عن ألف مرة.

التفاعل مع الملاحظات ومشاركتها

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