API Quảng cáo tự nhiên hỗ trợ bạn tạo trải nghiệm tùy chỉnh cho quảng cáo mà bạn hiển thị trong ứng dụng. Khi sử dụng API Quảng cáo tự nhiên, thay vì nhận được quảng cáo sẵn sàng hiển thị, bạn sẽ nhận được nhóm thuộc tính quảng cáo chẳng hạn như tiêu đề, hình ảnh, nút kêu gọi hành động. Bạn sẽ phải sử dụng các thuộc tính đó để tạo UIView tùy chỉnh nơi hiển thị quảng cáo đó.
Vui lòng tham khảo hướng dẫn về quảng cáo tự nhiên của chúng tôi khi thiết kế quảng cáo tự nhiên trong ứng dụng.
Hãy cùng triển khai vị trí quảng cáo tự nhiên sau đây. Bạn sẽ tạo những chế độ xem sau đây cho quảng cáo tự nhiên của chúng ta.
Chế độ xem 1: biểu tượng nhà quảng cáoChế độ xem 2: tiêu đề quảng cáoChế độ xem 3: nhãn được tài trợChế độ xem 4: lựa chọn nhà quảng cáo | Chế độ xem 5: chế độ xem file phương tiện quảng cáoChế độ xem 6: ngữ cảnh xã hộiChế độ xem 7: nội dung quảng cáoChế độ xem 8: nút kêu gọi hành động của quảng cáo |
Đảm bảo bạn đã hoàn tất hướng dẫn Bắt đầu và Bắt đầu dành cho iOS với Audience Network trước khi tiếp tục.
Khi thiết kế quảng cáo tự nhiên và quảng cáo biểu ngữ, đảm bảo bạn tuân thủ Nguyên tắc về bố cục của iOS để có trải nghiệm người dùng tối ưu.
Main.storyboard
. Thêm một thành phần UIView vào thành phần View chính và đặt tên là adUIView
. adIconImageView
(FBMediaView), adTitleLabel
(UILabel), adCoverMediaView
(FBMediaView), adSocialContext
(UILabel), adCallToActionButton
(UIButton), adOptionsView
(FBAdOptionsView), adBodyLabel
(UILabel), sponsoredLabel
(UILabel) trong adUIView
như hình minh họa dưới đây. ViewController.m
(ViewController.swift
nếu bạn đang sử dụng Swift), rồi kéo adUIView
vào bên trong đối tượng ViewController. Bạn có thể đặt tên chế độ xem này là adUIView
. Sau đó, bạn sẽ cần thực hiện tương tự đối với adIconImageView
, adTitleLabel
, adCoverMediaView
, adSocialContext
, adCallToActionButton
, adOptionsView
, adBodyLabel
, sponsoredLabel
.Bây giờ, bạn đã tạo xong tất cả thành phần giao diện người dùng để hiển thị quảng cáo tự nhiên. Bước tiếp theo là tải quảng cáo tự nhiên và gắn nội dung với các thành phần giao diện người dùng.
ViewController
tuân thủ giao thức FBNativeAdDelegate
và thêm một biến phiên bản FBNativeAd
import UIKit
import FBAudienceNetwork
class ViewController: UIViewController, FBNativeAdDelegate {
private var nativeAd: FBNativeAd?
}
viewDidLoad
, hãy thêm các dòng mã sau để tải nội dung quảng cáo tự nhiên
override func viewDidLoad() {
super.viewDidLoad()
let nativeAd = FBNativeAd(placementID: "YOUR_PLACEMENT_ID")
nativeAd.delegate = self
nativeAd.loadAd()
}
ID hiển thị tại YOUR_PLACEMENT_ID
là ID tạm thời chỉ phục vụ mục đích thử nghiệm.
Nếu bạn sử dụng ID tạm thời này trong mã đang hoạt động, người dùng sẽ không nhận được quảng cáo (người dùng sẽ nhận được lỗi Không điền). Bạn phải quay lại đây sau khi thử nghiệm và thay thế ID tạm thời này bằng ID vị trí quảng cáo đang hoạt động.
Để tìm hiểu cách tạo ID vị trí quảng cáo đang hoạt động, hãy tham khảo phần Thiết lập Audience Network
ViewController
để triển khai phương thức ủy quyền 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
}
Để cải thiện trải nghiệm người dùng và đạt được kết quả tốt hơn, bạn luôn phải cân nhắc kiểm soát khu vực có thể nhấp của quảng cáo để tránh những lượt click do vô tình. Vui lòng tham khảo trang Chính sách của Audience Network SDK để biết thêm chi tiết về việc tuân thủ khoảng trống không thể nhấp.
Khi chạy quảng cáo trong trình mô phỏng, hãy thay đổi cài đặt sang chế độ thử nghiệm để xem quảng cáo thử nghiệm. Vui lòng truy cập Cách sử dụng chế độ thử nghiệm để biết thêm thông tin.
Trong ví dụ ở trên, nội dung file phương tiện của quảng cáo được hiển thị trong adCoverMediaView
và loại đối tượng của quảng cáo là FBMediaView
. Trong bước trước, chúng tôi đã hướng dẫn cách sử dụng FBMediaView để tải nội dung file phương tiện từ đối tượng FBNativeAd
cho trước. Chế độ xem này sẽ thay thế thao tác tải thủ công ảnh bìa. Khi tạo FBMediaView
, bạn có thể xác định chiều rộng và chiều cao của chế độ xem nhờ các hạn chế bố cục tự động được đặt trong bảng chi tiết hoặc có thể mã hóa cứng chiều rộng và chiều cao. Tuy nhiên, chiều rộng và chiều cao của chế độ xem này có thể không vừa với ảnh bìa thực tế của quảng cáo được tải xuống sau đó. Để khắc phục vấn đề này, ví dụ sau đây sẽ hướng dẫn cách lấy tỷ lệ khung hình của nội dung và áp dụng chiều rộng cũng như chiều cao tự nhiên:
FBMediaViewDelegate
class ViewController: UIViewController, FBNativeAdDelegate, FBMediaViewDelegate {
...
}
FBMediaView
làm trình kiểm soát chế độ xem của bạn
func nativeAdDidLoad(_ nativeAd: FBNativeAd) {
adCoverMediaView.delegate = self
}
mediaViewDidLoad
trong trình kiểm soát chế độ xem của bạn
func mediaViewDidLoad(_ mediaView: FBMediaView) {
let currentAspect = mediaView.frame.size.width / mediaView.frame.size.height
print(currentAspect)
let actualAspect = mediaView.aspectRatio
print(actualAspect)
}
mediaView.aspectRatio
trả về CGFloat dương hoặc bằng 0,0 nếu hiện không có quảng cáo nào được tải. Giá trị này hợp lệ sau khi chế độ xem file phương tiện được tải. Có các phương thức thuận tiện giúp đặt chiều rộng và chiều cao của đối tượng FBMediaView phù hợp với tỷ lệ khung hình của nội dung file phương tiện được tải. Bạn có thể gọi applyNaturalWidth
hoặc applyNaturalHeight
để cập nhật chiều rộng hoặc chiều cao của đối tượng FBMediaView
sao cho phù hợp với tỷ lệ khung hình của nội dung file phương tiện.
Nếu muốn, bạn có thể thêm những hàm sau để xử lý các trường hợp quảng cáo tự nhiên bị đóng hoặc khi người dùng nhấp vào quảng cáo đó
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.")
}
Thêm và triển khai hàm sau đây trong trình kiểm soát chế độ xem để xử lý lỗi tải quảng cáo
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
và hiển thị quảng cáo sau lệnh gọi lại mediaViewDidLoad
. Bạn phải tải và hiển thị tất cả file phương tiện để có lượt hiển thị đủ điều kiện
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
khả dụng như một phần của SDK và có thể tìm được trong thư mục FBAudienceNetwork/samples
. Mở dự án có Xcode và chạy trên thiết bị hoặc trình mô phỏng. Thông tin & nguồn lực khác |
Hướng dẫn bắt đầuHướng dẫn kỹ thuật để bắt đầu sử dụng Audience Network Mã mẫuMẫu tích hợp quảng cáo trên Audience Network | Câu hỏi thường gặpCâu hỏi thường gặp về Audience Network Mẫu quảng cáo tự nhiênPhương pháp tiếp cận khách quan hơn khi tích hợp Quảng cáo tự nhiên |