تتيح لك واجهة API الإعلانات الأصلية إنشاء تجربة مخصصة للإعلانات التي تعرضها داخل تطبيقك. عند استخدام واجهة API الإعلانات الأصلية، بدلاً من الحصول على إعلان جاهز للعرض، ستتلقى مجموعة من خصائص الإعلان تضم على سبيل المثال عنوانًا وصورة ودعوة لاتخاذ إجراء، وسيلزمك استخدامها لإنشاء طريقة عرض مخصصة يظهر بها الإعلان.
يرجى الرجوع إلى دليل الإعلانات الأصلية عند تصميم الإعلانات الأصلية في تطبيقك.
لنبدأ تنفيذ موضع الإعلان الأصلي التالي. سيلزمك إنشاء طرق العرض التالية في الإعلان الأصلي.
طريقة العرض #1: أيقونة المعلنطريقة العرض #2: عنوان الإعلانطريقة العرض #3: التسمية "مُموَّل"طريقة العرض #4: اختيار المعلن | طريقة العرض #5: عرض وسائط الإعلانطريقة العرض #6: سياق التواصل الاجتماعيطريقة العرض #7: نص الإعلانطريقة العرض #8: زر دعوة لاتخاذ إجراء بالإعلان |
احرص على قراءة دليل بدء استخدام Audience Network ودليل بدء استخدام iOS حتى يمكنك المتابعة.
عند تصميم الإعلانات الأصلية وإعلانات البانر، يجب التأكد من اتباع إرشادات تخطيط iOS لتقديم تجربة مثالية للمستخدم.
Main.storyboard
. أضف عنصر UIView إلى عنصر العرض الرئيسي وقم بتسميته ليكون adUIView
. adIconImageView
(FBMediaView), adTitleLabel
(UILabel)، adCoverMediaView
(FBMediaView)، adSocialContext
(UILabel)، adCallToActionButton
(UIButton)، adOptionsView
(FBAdOptionsView)، adBodyLabel
(UILabel)، sponsoredLabel
(UILabel) ضمن adUIView
كما هو موضح في الصورة أدناه. ViewController.m
(ViewController.swift
إذا كنت تستخدم Swift)، ثم اسحب adUIView
داخل الكائن ViewController. يمكنك تسميته adUIView
. بعد ذلك، ستحتاج إلى تنفيذ الإجراء نفسه مع adIconImageView
وadTitleLabel
وadCoverMediaView
وadSocialContext
وadCallToActionButton
وadOptionsView
وadBodyLabel
وsponsoredLabel
.الخطوة التالية بعد إنشاء كل عناصر واجهة المستخدم لعرض الإعلانات الأصلية هي تحميل الإعلانات الأصلية وربط عناصر المحتوى بعناصر واجهة المستخدم.
ViewController
يتوافق مع بروتوكول FBNativeAdDelegate
، وأضف متغير المثيل FBNativeAd
import UIKit
import FBAudienceNetwork
class ViewController: UIViewController, FBNativeAdDelegate {
private var nativeAd: FBNativeAd?
}
viewDidLoad
، أضف سطور الرمز التالية لتحميل محتوى الإعلان الأصلي
override func viewDidLoad() {
super.viewDidLoad()
let nativeAd = FBNativeAd(placementID: "YOUR_PLACEMENT_ID")
nativeAd.delegate = self
nativeAd.loadAd()
}
المعرف الذي يظهر في YOUR_PLACEMENT_ID
هو معرف مؤقت لأغراض الاختبار فقط.
إذا كنت تستخدم هذا المعرف المؤقت في رمز مباشر، فلن يتلقى المستخدمون إعلانات (ستصلهم رسالة خطأ بلا محتوى). يجب العودة هنا بعد الاختبار واستبدال هذا المعرف المؤقت بمعرف موضع مباشر.
لمعرفة كيفية إنشاء معرف موضع مباشر، ارجع إلى إعداد شبكة الجمهور
ViewController
لتنفيذ أسلوب التفويض nativeAdDidLoad
func nativeAdDidLoad(_ nativeAd: FBNativeAd) {
// 1. If there is an existing valid native ad, unregister the view
if let previousNativeAd = self.nativeAd, previousNativeAd.isAdValid {
previousNativeAd.unregisterView()
}
// 2. Retain a reference to the native ad object
self.nativeAd = nativeAd
// 3. Register what views will be tappable and what the delegate is to notify when a registered view is tapped
// Here only the call-to-action button and the media view are tappable, and the delegate is the view controller
nativeAd.registerView(
forInteraction: adUIView,
mediaView: adCoverMediaView,
iconView: adIconImageView,
viewController: self,
clickableViews: [adCallToActionButton, adCoverMediaView]
)
// 4. Render the ad content onto the view
adTitleLabel.text = nativeAd.advertiserName
adBodyLabel.text = nativeAd.bodyText
adSocialContextLabel.text = nativeAd.socialContext
sponsoredLabel.text = nativeAd.sponsoredTranslation
adCallToActionButton.setTitle(nativeAd.callToAction, for: .normal)
adOptionsView.nativeAd = nativeAd
}
لتقديم تجربة أفضل للمستخدم والحصول على نتائج أفضل، يجب عليك دائمًا مراعاة التحكم في المساحة القابلة للنقر عليها في إعلانك لتجنب النقرات غير المقصودة. يرجى الرجوع إلى صفحة سياسة مجموعة Audience Network SDK للتعرف على مزيد من التفاصيل حول تنفيذ المساحة البيضاء غير القابلة للنقر.
عند تشغيل الإعلانات في المحاكي، يجب تغيير الإعداد إلى وضع الاختبار لعرض إعلانات اختبارية. لمزيد من المعلومات، يرجى الرجوع إلى كيفية استخدام وضع الاختبار.
في المثال السابق، يظهر محتوى وسائط الإعلان في adCoverMediaView
ونوع الكائن هو FBMediaView
. خلال الخطوة السابقة، أوضحنا كيفية استخدام FBMediaView لتحميل محتوى وسائط من كائن FBNativeAd
محدد. يتم استخدام طريقة العرض هذه كبديل لتحميل صورة الغلاف يدويًا. عند إنشاء FBMediaView
، يمكن تحديد خيارات العرض والارتفاع من خلال تعيين قيود التخطيط التلقائي في storyboard أو يمكن تضمينها في الرمز. مع ذلك، يمكن ألا يتناسب عرض وارتفاع طريقة العرض مع صورة الغلاف الفعلية للإعلان التي يتم تحميلها لاحقًا. لحل هذه المشكلة، يوضح المثال التالي كيفية الحصول على نسبة العرض إلى الارتفاع للمحتوى وتطبيق العرض والارتفاع الطبيعيين:
FBMediaViewDelegate
class ViewController: UIViewController, FBNativeAdDelegate, FBMediaViewDelegate {
...
}
FBMediaView
ليكون وحدة التحكم في طريقة العرض
func nativeAdDidLoad(_ nativeAd: FBNativeAd) {
adCoverMediaView.delegate = self
}
mediaViewDidLoad
في وحدة التحكم في طريقة العرض
func mediaViewDidLoad(_ mediaView: FBMediaView) {
let currentAspect = mediaView.frame.size.width / mediaView.frame.size.height
print(currentAspect)
let actualAspect = mediaView.aspectRatio
print(actualAspect)
}
mediaView.aspectRatio
على إرجاع CGFloat إيجابي، أو 0.0 إذا لم يتم تحميل أي إعلان حاليًا. وتتحول القيمة إلى قيمة صالحة بعد تحميل طريقة عرض الوسائط. هناك طرق مناسبة تساعد في تعيين عرض وارتفاع كائن FBMediaView وتراعي نسبة العرض إلى الارتفاع لمحتوى الوسائط التي تم تحميلها. يمكنك استدعاء applyNaturalWidth
أو applyNaturalHeight
لتحديث عرض أو ارتفاع الكائن FBMediaView
لمراعاة نسبة العرض إلى الارتفاع لمحتوى الوسائط.
اختياريًا، يمكن إضافة الوظائف التالية لمعالجة الحالات التي يكون فيها الإعلان الأصلي مغلقًا أو التي يقوم فيها المستخدم بالنقر عليه
func nativeAdDidClick(_ nativeAd: FBNativeAd) {
print("Native ad was clicked.")
}
func nativeAdDidFinishHandlingClick(_ nativeAd: FBNativeAd) {
print("Native ad did finish click handling.")
}
func nativeAdWillLogImpression(_ nativeAd: FBNativeAd) {
print("Native ad impression is being captured.")
}
إضافة الوظيفة التالية وتنفيذها في وحدة التحكم في طريقة العرض لمعالجة حالات فشل تحميل الإعلان
func nativeAd(_ nativeAd: FBNativeAd, didFailWithError error: Error) {
print("Native ad failed to load with error: \(error.localizedDescription)")
}
let nativeAd = FBNativeAd(placementID: "YOUR_PLACEMENT_ID")
nativeAd.delegate = self
nativeAd.loadAd(withMediaCachePolicy: .none)
func nativeAdDidLoad(_ nativeAd: FBNativeAd) {
...
self.adCoverMediaView.delegate = self
nativeAd.downloadMedia()
self.nativeAd = nativeAd
...
}
registerViewForInteraction
وعرض الإعلان بعد استدعاء mediaViewDidLoad
. يجب تحميل كل الوسائط وعرضها للحصول على مرة ظهور إعلان مؤهلة
func mediaViewDidLoad(_ mediaView: FBMediaView) {
guard let nativeAd = nativeAd else {
return
}
// 1. Register what views will be tappable and what the delegate is to notify when a registered view is tapped
// Here only the call-to-action button and the media view are tappable, and the delegate is the view controller
nativeAd.registerView(
forInteraction: adUIView,
mediaView: mediaView,
iconView: adIconImageView,
viewController: self,
clickableViews: [adCallToActionButton, mediaView]
)
// 2. Render the ad content onto the view
adTitleLabel.text = nativeAd.advertiserName
adBodyLabel.text = nativeAd.bodyText
adSocialContextLabel.text = nativeAd.socialContext
sponsoredLabel.text = nativeAd.sponsoredTranslation
adCallToActionButton.setTitle(nativeAd.callToAction, for: .normal)
adOptionsView.nativeAd = nativeAd
}
NativeAdSample
كجزء من مجموعة SDK ويمكن العثور عليه داخل المجلد FBAudienceNetwork/samples
. قم باستيراد المشروع إلى Xcode وقم بتشغيله على جهاز أو على المحاكي. موارد إضافية |
دليل بدء الاستخدامدليل فني لبدء استخدام Audience Network عينات من الرمزعينات من دمج الإعلانات في Audience Network | الأسئلة المتكررةالأسئلة المتكررة حول Audience Network قالب الإعلانات الأصليةطريقة تعتمد على التشغيل التلقائي بشكل أكبر عند دمج الإعلانات الأصلية |