من الخادم إلى الخادم: استكشاف أخطاء دمج عروض الأسعار وإصلاحها

الخدمة الوسيطة الداخلية ليست متوفرة للعامة

عروض الأسعار الداخلية مع Audience Network متاحة حاليًا في الإصدار التجريبي المغلق وليست متوفرة للعامة. سنقدم المزيد من التحديثات إذا تغير هذا الأمر.

كبديل، يمكنك الوصول إلى عروض أسعار Audience Network من خلال إحدى منصات الخدمات الوسيطة التي تجمعنا معها شراكة.

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

المتطلبات الأساسية

الأقسام

استخدام cURL لطلبات تصحيح أخطاء عروض الأسعار

رموز أخطاء HTTP والحلول في طلب عروض الأسعار

استكشاف أخطاء عدم وجود عروض أسعار وإصلاحها

استخدام cURL لطلبات تصحيح أخطاء عروض الأسعار

لطلب تصحيح أخطاء عروض الأسعار، استخدم أمر cURL، والذي يسمح لك بإرسال طلب عروض الأسعار واستلام استجابة عروض الأسعار في الوحدة الطرفية.

الخطوة الأولى. حمولة بيانات JSON للإعلان الخلالي في طلب عرض الأسعار

  • استبدال YOUR_PLACEMENT_ID بمعرف الاستبدال
  • استبدال YOUR_BUSINESS_ID بمعرف النشاط التجاري
  • استبدال YOUR_DEVICE_ID بمعرف الجهاز
  • استبدال YOUR_BIDDER_TOKENبرمز مقدم عرض الأسعار الذي تم إنشاؤه من مجموعة Audience Network SDK
  • استبدل YOUR_PLATFORM_ID بمعرف منصة شريك الخدمة الوسيطة (معرف تطبيق فيسبوك).
  • في حالة الرغبة في إجراء الاختبار بتنسيق إعلاني مختلف، يُرجى الرجوع إلى التنسيقات الإعلانية المدعومة.
  • حفظ حمولة بيانات JSON أدناه كـ bid_request.json
{
"id": "vwxfKskkMobzQQ1e7M70",
"imp": [
{
"id": "FB Ad Impression",
"tagid": "YOUR_PLACEMENT_ID",
"instl": 1,
"banner": {
"h": 0,
"w": 0,
"linearity": 0
}
}
],
"app": {
"publisher": {
"id": "YOUR_BUSINESS_ID"
}
},
"device": {
"ua": "Dalvik\/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build\/OSM1.180201.000)",
"ifa": "YOUR_DEVICE_ID",
"dnt": 0,
"ip": "125.123.255.123"
},
"user": {
"buyeruid": "YOUR_BIDDER_TOKEN"
},
"regs": {
"coppa": 0
},
"at": 1,
"tmax": 500,
"test": 1,
"ext": {
"platformid": "YOUR_PLATFORM_ID"
}
}

الخطوة الثانية. إرسال طلب عرض الأسعار من خلال أمر cURL

  • فتح Terminal
  • الانتقال إلى الدليل الذي تم فيه حفظ bid_request.json بواسطة cd ~/{FILE_PATH}
curl -X POST -H "Content-Type: application/json" -d @bid_request.json https://an.facebook.com/placementbid.ortb

الخطوة الثالثة. التحقق من استجابة عرض الأسعار في حال كان طلب عرض الأسعار صالحًا

{
"id": "Auction ID",
"seatbid": [
{
"bid": [
{
"id": "Bid Response ID",
"impid": "FB Ad Impression",
"price": 99.99,
"adm": "{\"type\":\"ID\",\"bid_id\":\"BID ID\",\"placement_id\":\"Placement ID\",\"resolved_placement_id\":\"Resolved Placement ID\",\"sdk_version\":\"SDK Version\",\"device_id\":\"Device ID\",\"template\":102,\"payload\":null}",
"nurl": "https://www.facebook.com/audiencenetwork/nurl/?partner=partner_id&app=app_id&placement=placement_id&auction=auction_id&impression=impression_id&request=request_id&bid=bid_id&ortb_loss_code=0&clearing_price=${AUCTION_PRICE}",
"lurl": "https://www.facebook.com/audiencenetwork/nurl/?partner=partner_id&app=app_id&placement=placement_id&auction=auction_id&impression=impression_id&request=request_id&bid=bid_id&ortb_loss_code=${AUCTION_LOSS}&clearing_price=${AUCTION_PRICE}"
}
]
}
],
"bidid": "Bid ID",
"cur": "USD"
}

الخطوة الرابعة. اطلع على x-fb-an-errors في عناوين استجابة HTTP عندما لا تستلم استجابة أعلى من عرض الأسعار.

أرسل أمر cURL لعرض عناوين استجابة HTTP.

url -X POST -H "Content-Type: application/json" -v @bid_request.json https://an.facebook.com/placementbid.ortb
...
> Content-Type: application/json
>
* Connection state changed (MAX_CONCURRENT_STREAMS updated)!
< HTTP/2 400
< x-fb-an-request-id: fb_an_request_id
...
< x-fb-an-errors: Value cannot be null: value given: null
...

يُرجى الرجوع إلى وصف خطأ HTTP والحلول في طلب عرض الأسعار لإصلاح طلب عرض الأسعار.

وصف خطأ HTTP والحلول في طلب عرض الأسعار

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

استجابة 400: أخطاء المعلمة غير الصالحة

رسالة الخطأ الوصف الحل

رمز مقدم عرض الأسعار غير صالح في user.buyeruid

رمز مقدم عرض الأسعار في user.buyeruid غير صالح.

كيفية إنشاء رمز مقدم عرض الأسعار:

  • Android - BidderTokenProvider.getBidderToken(context);

  • iOS — [FBAdSettings bidderToken];

يجب أن يكون ipaddress عنوان IP صالح

في كائن device لحمولة بيانات طلب عرض الأسعار، يجب توفير عنوان IP صالح لـ ip(v4) أو حقل ipv6.

الأمثلة الصحيحة:

  • ip(v4): 255.255.255.0

  • ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334

أمثلة غير الصحيحة: (لا تقم باقتطاع عنوان ip)

  • ip(v4): 255.255.255

  • ipv6: 2001:0db8:85a3:0000:0000:8a2e

placementids الصالحة مطلوبة

في حقل imp.tagid، يجب توفير معرف موضع Audience Network صالح.

يُرجى العثور على معرف الموضع في مدير الأعمال. اختر إدارة الخصائص وابحث عن معرف الموضع ضمن المساحة الإعلانية لمنصة Android أو iOS.

لم يتم تعيين معرف الناشر في طلب التطبيق.

لم يتم تعيين حقل app.publisher.id في الطلب.

يُرجى العثور معرف الناشر في إعدادات مدير الأعمال. يمكنك اختيار التطبيقات في القائمة اليمنى والعثور على معرف التطبيق كمعرف الناشر

يجب أن تنتمي كل placementids إلى appid ذاته

كما تشير الرسالة، يجب أن تنتمي كل معرفات موضع Audience Network في طلب عرض الأسعار إلى معرف التطبيق ذاته.

يُرجى التحقق مما إذا كانت كل معرفات الموضع في طلب عرض الأسعار تنتمي إلى معرف التطبيق ذاته من مدير الأعمال. اختر "إدارة الخصائص" وابحث عن معرفات الموضع ضمن المساحة الإعلانية لمنصة Android أو iOS.

لا تحتوي القيمة على حقل الشكل غير القابل للإبطال وغير الاختياري

لا يحتوي طلب عرض الأسعار على القيم المطلوبة.

القيم المطلوبة:

  1. id

  2. imp، imp.tagid، imp.id

  3. app.publisher، app.publisher.id

  4. device

  5. ext، ext.platformid

  6. at -- قيمة الإعداد (1، 2) مطلوبة

adformats مطلوبة، يجب أن يكون عدد adformats وplacementids متماثلاً

يُرجى توفير adformats غير فارغة وصالحة.

التنسيقات الإعلانية المدعومة:

  • التنسيق الأصلي: {'id': ${AUCTION_ID}, "native": { "h": -1, "w": -1 }, 'tagid': ${PLACEMENT_ID}}

  • تنسيق البانر الأصلي: {'id': ${AUCTION_ID}, "native": { "h": -1, "w": -1 }, 'tagid': ${PLACEMENT_ID}}

  • تنسيق الإعلان الخلالي: {'id': ${AUCTION_ID}, "banner": { "h": 0, "w": 0 }, 'tagid': ${PLACEMENT_ID}, 'instl': 1}

  • تنسيق الفيديو بمكافأة: {'id': ${AUCTION_ID}, "video": { "h": 0, "w": 0, 'ext': { 'videotype': 'rewarded' } }, 'tagid': ${PLACEMENT_ID}}

  • تنسيق البانر - الطول 50: {'id': ${AUCTION_ID}, "banner": { "h": 50, "w": -1 }, 'tagid': ${PLACEMENT_ID}}

  • تنسيق البانر - الطول 250: {'id': ${AUCTION_ID}, "banner": { "h": 250, "w": -1 }, 'tagid': ${PLACEMENT_ID}}

  • تنسيق الفيديو المضمن داخل البث: {'id': ${AUCTION_ID}, "video": { "h": 0, "w": 0, 'linearity': 1 }, 'tagid': ${PLACEMENT_ID}}

يُرجى التحقق من التنسيقات الإعلانية المدعومة لمزيد من المعلومات.

تعتبر كائنات البانر والإعلان الأصلي وكائنات الفيديو حصرية ولكن يلزم وجود واحد منها

بالنسبة إلى adformats أعلاه، توجد كائنات مختلفة: native وbanner وvideo. تتطلب نقطة النهاية واحد من الكائنات الثلاثة هذه، ولكن يُرجى مراعاة أنها تستبعد بعضها بعضًا.

يُرجى الرجوع إلى حلول التنسيقات الإعلانية المدعومة أعلاه.

استجابة 400: الأخطاء غير المصرح بها

رسالة الخطأ الوصف الحل

لا يوجد تطبيق مطابق للنطاق ومعرف النشاط التجاري

في حالة استخدام معرف النشاط التجاري في حقل app.publisher.id، يتعذر على الواجهة الخلفية لدينا العثور على التطبيق من خلال الدليل والنشاط التجاري.

إذا استمر ظهور هذا الخطأ، فيرجى استخدام معرف التطبيق في الحقل app.publisher.id.

التطبيق غير مصرح به لعروض أسعار التطبيق

معرف التطبيق في app.publisher.id ليس ضمن قائمة السماح لعروض الأسعار، أو أن التطبيق في انتظار المراجعة.

يُرجى التواصل معنا لإضافة التطبيق إلى قائمة السماح أو انتظار الموافقة على التطبيق.

المنصة غير مصرح لها بالحصول على عروض أسعار التطبيق

معرف المنصة في ext.platformid ليس موجودًا في قائمة سماح عروض الأسعار. يُرجى التأكد من وجود معرف التطبيق في قائمة السماح وأن التطبيق ليس في انتظار المراجعة.

الحلول:

  1. إذا كنت ناشرًا، فإن معرف التطبيق هو نفسه معرف المنصة.

  2. إذا كنت شريكًا، فسيضع الناشر قيم مختلفة في ext.platformid (معرف تطبيق الشريك) وapp.publisher.id. (معرف تطبيق الناشر)

يُرجى التواصل معنا لإضافة التطبيق إلى قائمة السماح أو انتظار الموافقة على التطبيق.

خطأ غير متوقع

الأسباب:

  1. تقييد التطبيق/المستخدم.

  2. تم رفض التطبيق.

  3. أداة التثبيت غير موثوق بها.

  4. طلب احتيالي.

الحلول:

  1. يُرجى إعادة تحميل الإعلان بشكل أقل تكرارًا.

  2. يُرجى التواصل معنا للتحقق من حالة التطبيق.

  3. يُرجى التأكد من تثبيت التطبيق من متجر تطبيقات موثوق به.

  4. يُرجى التواصل معنا إذا استمر عرض هذا الخطأ.

استجابة 204: رسالة الخطأ فارغة

رسالة الخطأ الوصف الحل

الحقل فارغ في عنوان الخطأ لـ x-fb-an-errors من استجابة عرض الأسعار

الأسباب:

  1. بالنسبة إلى dnt: 1 -- do-not-track، لن يعرض فيسبوك الأسعار.

  2. imp.instl مفقود لتنسيق الإعلان الخلالي.

  3. قرر فيسبوك عدم المشاركة في المزاد.

الحلول:

  1. يجب على المستخدم تشغيل تتبع الإعلانات في الجهاز وبعدها يجب على العميل إدخال dnt: 0 (do-not-track) في طلب عرض الأسعار، ثم سيعرض فيسبوك الأسعار.

  2. يُرجى التأكد من وجود حقل imp.instl يتضمن القيمة 1 لعرض أسعار الإعلان الخلالي.

إذا استمرت استجابة 204، فيُرجى التواصل معنا.

استكشاف أخطاء عدم وجود عرض أسعار وإصلاحها

  • تأكد من الحصول على عنوان HTTP x-fb-an-errors وتسجيله للمساعدة في فهم سبب الخطأ.
  • تأكد من تثبيت تطبيق فيسبوك على الجهاز الذي يتم تشغيل التطبيق عليه وتسجيل الدخول إلى فيسبوك باستخدام حساب المستخدم الفعلي. تُعد حسابات مستخدمي فيسبوك الزائفة أو الاختبارية انتهاكًا لسياسة فيسبوك وسيتم تعطيلها.
  • تأكد من الحصول على رمز عرض الأسعار من مجموعة Audience Network SDK عن طريق استدعاء com.facebook.ads.BidderTokenProvider.getBidderToken() في Android و[FBAdSettings bidderToken] في iOS وإرسال السلسلة التي تم إرجاعها إلى الحقل buyeruid لطلب عرض الأسعار.
  • تأكد من إرسال معرف الجهاز الصحيح إلى الحقل ifa في طلب عرض الأسعار (Android -- AdvertisingIdClient.getAdvertisingIdInfo(context).getId()، iOS -- [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]).
  • تأكد من عدم تمكين do-not-track(dnt) في الجهاز، ثم أدخل dnt: 0 do-not-track في طلب عروض الأسعار.