استخدِم "مساحة تخزين مشترَكة" لتحديد تصميم الإعلان الذي يظهر للمستخدم على جميع المواقع الإلكترونية.
Shared Storage API هي اقتراح "مساحة اختبار" للخصوصية لمساحة تخزين عامة على مستوى المواقع الإلكترونية، وهي تتيح العديد من حالات الاستخدام المحتملة. ومن الأمثلة على ذلك ميزة "تبديل تصميمات الإعلانات"، وهي متاحة للاختبار في الإصدار 104.0.5086.0 من Chrome والإصدارات الأحدث.
من خلال ميزة "تبديل تصميمات الإعلانات"، يمكنك تخزين البيانات، مثل رقم تعريف تصميم الإعلان وعدد المشاهدات وتفاعل المستخدِم، لتحديد تصميمات الإعلانات التي يراها المستخدِمون على مختلف المواقع الإلكترونية.
يمكنك تشغيل إحدى وحدات عمل "مساحة التخزين المشتركة" لاختيار عنوان URL من قائمة مقدَّمة، استنادًا إلى البيانات المخزّنة، ثم عرض تصميم الإعلان هذا في إطار محدود. ويمكن استخدام هذه الميزة لاختيار إعلانات جديدة أو محتوى آخر.
تجربة العرض بالتناوب لتصميم الإعلان
لتجربة ميزة "تبديل تصميمات الإعلانات" باستخدام ميزة "مساحة التخزين المشتركة"، تأكَّد من استخدام الإصدار 104.0.5086.0 من Chrome أو إصدار أحدث. فعِّل جميع واجهات برمجة التطبيقات المتعلّقة بالخصوصية في عرض الإعلانات ضمن chrome://settings/adPrivacy
.
يمكنك أيضًا تفعيل ميزة "مساحة التخزين المشتركة" باستخدام العلامة --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames
في سطر الأوامر.
تجربة عيّنات الرموز البرمجية
قد يريد المعلِن أو صانع المحتوى تطبيق استراتيجيات مختلفة على حملة، وتبديل المحتوى أو تصميمات الإعلانات لزيادة الفعالية. يمكن استخدام مساحة التخزين المشتركة لتنفيذ استراتيجيات مختلفة للتناوب، مثل التناوب التسلسلي والتناوب الموزّع بالتساوي، على مستوى مواقع إلكترونية مختلفة.
في هذا المثال:
- تم تضمين
creative-rotation.js
في إطار. يحدِّد هذا النص البرمجي الإعلانات الأكثر أهمية ( الوزن)، ويطلب من وحدات العمل تحديد المحتوى الذي يجب عرضه. creative-rotation-worklet.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('creative-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();
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.
- تبديل تصميمات الإعلان: يمكنك تخزين البيانات، مثل رقم تعريف تصميم الإعلان وأعداد المشاهدات وتفاعل المستخدِم، لتحديد تصميمات الإعلانات التي يراها المستخدِمون على المواقع الإلكترونية المختلفة.
- اختبار أ/ب: يمكنك تعيين مستخدم إلى مجموعة تجريبية، ثم تخزين هذه المجموعة في "مساحة التخزين المشتركة" للوصول إليها على مستوى الموقع الإلكتروني.
- تجارب المستخدمين المخصّصة: يمكنك مشاركة محتوى مخصّص وطلبات اتّخاذ إجراء استنادًا إلى حالة تسجيل المستخدم أو حالات المستخدم الأخرى.
إنشاء تقارير موجزة
جمع المعلومات باستخدام "مساحة التخزين المشتركة" وإنشاء تقرير ملخّص مجمّع ومزدحم بوابة الإخراج لحالات الاستخدام هذه هي Private Aggregation API.
- قياس مدى الوصول الفريد: يريد العديد من صنّاع المحتوى والمعلنين معرفة عدد الأشخاص الفرديين الذين شاهدوا المحتوى الخاص بهم. استخدِم ميزة "مساحة التخزين المشتركة" لتسجيل المرة الأولى التي رأى فيها أحد المستخدِمين إعلانك أو الفيديو المضمّن أو النشر، ومنع تكرار احتساب هذا المستخدِم نفسه على مواقع إلكترونية مختلفة. يمكنك بعد ذلك استخدام Private Aggregation API لعرض تقرير تلخيصي لمستوى وصولك إلى الجمهور.
- قياس الخصائص الديمغرافية: غالبًا ما يريد صنّاع المحتوى فهم الخصائص الديمغرافية لجمهورهم. يمكنك استخدام "مساحة التخزين المشتركة" لتسجيل البيانات الديمغرافية للمستخدمين في سياق يتوفر فيه هذا النوع من البيانات، مثل موقعك الإلكتروني التابع للطرف الأول، واستخدام تقارير ملفّقة لإعداد تقارير عن هذه البيانات على العديد من المواقع الإلكترونية الأخرى، مثل المحتوى المضمّن.
- قياس عدد مرّات الظهور التي تزيد عن 1,000: يُشار إليه أحيانًا باسم "عدد مرّات الظهور الفعّالة"، وغالبًا ما يكون هناك حدّ أدنى لعدد المرّات المشاهدة قبل أن يتعرّف المستخدِم على محتوى معيّن أو يتذكره (غالبًا في سياق مشاهدات الإعلانات). يمكنك استخدام "مساحة التخزين المشتركة" لإنشاء تقارير عن المستخدمين الفرديين الذين شاهدوا محتوى معيّنًا عددًا من المرات لا يقل عن K.
التفاعل مع الملاحظات ومشاركتها
يُرجى العِلم أنّ اقتراح Shared Storage API قيد المناقشة والتطوير بشكل نشط، وبالتالي يخضع للتغيير.
يسرّنا معرفة رأيك بشأن Shared Storage API.
- العرض: راجِع العرض التفصيلي.
- المناقشة: يمكنك الانضمام إلى المناقشة الجارية لطرح الأسئلة ومشاركة الإحصاءات.
الاطّلاع على آخر الأخبار
- القائمة البريدية: يمكنك الاشتراك في قائمتنا البريدية لتلقّي آخر الأخبار والإشعارات المتعلّقة بواجهة برمجة التطبيقات Shared Storage API.
هل أنت بحاجة إلى مساعدة؟
- دعم المطوّرين: يمكنك التواصل مع مطوّرين آخرين والحصول على إجابات عن أسئلتك في مستودع دعم المطوّرين في "مبادرة حماية الخصوصية".