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

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

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

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

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

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

لتجربة عرض تصميمات الإعلانات بالتناوب باستخدام مساحة التخزين المشتركة، تأكَّد من استخدام الإصدار 104.0.5086.0 من Chrome أو إصدار أحدث. تفعيل جميع واجهات برمجة تطبيقات الخصوصية في عرض الإعلانات ضمن "chrome://settings/adPrivacy"

يمكنك أيضًا تفعيل "مساحة التخزين المشتركة" باستخدام العلامة --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 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 sharedStorage.get('creative-rotation-index');
        index = parseInt(currentIndex, 10);
        const nextIndex = (index + 1) % urls.length;

        await 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 للحصول على تقرير ملخّص لمدى وصولك.
  • قياس الخصائص الديمغرافية: غالبًا ما يرغب منتجو المحتوى في فهم الخصائص الديمغرافية جمهورك. يمكنك استخدام مساحة التخزين المشتركة لتسجيل البيانات الديموغرافية للمستخدمين في والسياق الذي تظهر فيه، مثل موقع الطرف الأول، واستخدام البيانات لإعداد تقارير عنها في العديد من المواقع الإلكترونية الأخرى، مثل المحتوى المضمَّن.
  • قياس مرات الظهور بالآلاف: يتم وصفها أحيانًا باسم "التكرار الفعال"، غالبًا ما يكون هناك حد أدنى قبل أن يتعرف المستخدم على محتوى معين أو يتذكره (غالبًا في سياق مشاهدات الإعلان). يمكنك استخدام مساحة التخزين المشتركة لإنشاء التقارير من المستخدمين الفريدين الذين شاهدوا جزءًا من المحتوى ألف مرة على الأقل.

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

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