顯示廣告
隱藏 ✕
看板 KnucklesNote
作者 Knuckles (站長 那克斯)
標題 [Xcode][Swift3] 加入 MoPub 廣告中介服務
時間 2017-05-25 Thu. 02:26:59


====================================

   最後沒辦法安裝成功,以下僅供參考

====================================

[圖]


使用 MoPub 在 ListView 列表中加上原生廣告(Native Ads)


在 MoPub 網站新增廣告單元

在 MoPub 網站 https://www.mopub.com/ 
註冊一個帳號後登入

新增一個 App
[圖]


[圖]


新增一個 Native 的廣告單元
[圖]

這邊我們設定廣告顯示位置為5 (從0開始算,也就是在第6列)

按儲存後,取得 Ad Unit ID
[圖]



在 Xcode 安裝 MoPub SDK

參考 https://github.com/mopub/mopub-ios-sdk/wiki
裡的 Getting Started
使用套件管理程式 CocoaPods 來安裝

CocoaPods 的安裝方法可參考這篇
[Xcode][Swift3] 安裝套件管理工具 CocoaPods - KnucklesNote板 - Disp BBS

在 Podfile 新增這行
  pod 'mopub-ios-sdk'

然後使用終端機在專案目錄執行 pod install
目前安裝的版本為 4.14.0


新增 BridgingHeader

因為 mopub 是用 Objective-C 寫的,要在 Swift 中使用的話,要加上 BridgingHeader

之前沒加過的話,點 command+n 新增檔案,選「Header File」
[圖]

檔案名稱輸入「BridgingHeader」

在專案設定的「Build Settings」,選「All」,
在右邊的搜尋框輸入「bridging」,
在下面出現的 Objective-C Bridging Header 輸入「$(PROJECT_NAME)/BridgingHeader.h」
[圖]


在搜尋框輸入「search path」,
在下面出現的 User Header Search Paths 右邊的值點兩下
在跳出的輸入框新增「Pods」,右邊選「recursive」
[圖]

讓 Xcode 會去 Pods 目錄中尋找 Header 檔案

修改 BridgingHeader.h
在 #define ... 與 #endif 之間加上
#import "MoPubSDK/MoPub-Bridging-Header.h"


加上 MoPub Native Ads

新增一個 NativeAdView.swift 檔
將內容改為
import UIKit

class NativeAdView: UIView, MPNativeAdRendering {

    var titleLabel: UILabel!
    var mainTextLabel: UILabel!
    var callToActionLabel: UILabel!
    var iconImageView: UIImageView!
    var mainImageView: UIImageView!
    private var privacyInformationIconImageView: UIImageView!

    override func layoutSubviews() {
        super.layoutSubviews()
    }

    func nativeMainTextLabel() -> UILabel! {
        return self.mainTextLabel
    }

    func nativeTitleTextLabel() -> UILabel! {
        return self.titleLabel
    }

    func nativeCallToActionTextLabel() -> UILabel! {
        return self.callToActionLabel
    }

    func nativeIconImageView() -> UIImageView! {
        return self.iconImageView
    }

    func nativeMainImageView() -> UIImageView! {
        return self.mainImageView
    }

    func nativePrivacyInformationIconImageView() -> UIImageView! {
        return self.privacyInformationIconImageView
    }
}


修改要加上 NativeAds 的 TableViewController
例如 HotTextViewController.swift

在 class HotTextViewController: 後面加上 MPTableViewAdPlacerDelegate

加上成員變數
    var placer: MPTableViewAdPlacer!

加上成員函數
    func initAdPlacer() {
        let settings: MPStaticNativeAdRendererSettings = MPStaticNativeAdRendererSettings()
        settings.renderingViewClass = NativeAdView.self
        settings.viewSizeHandler = { (maxWidth: CGFloat) -> CGSize in
            return CGSize(width: maxWidth, height: 312.0)
        }

        let config: MPNativeAdRendererConfiguration = MPStaticNativeAdRenderer.rendererConfiguration(with: settings)

        self.placer = MPTableViewAdPlacer(tableView: self.tableView, viewController: self, rendererConfigurations: [config])
        self.placer.delegate = self

        let targeting: MPNativeAdRequestTargeting = MPNativeAdRequestTargeting()
        targeting.desiredAssets = Set([kAdIconImageKey, kAdCTATextKey, kAdTextKey, kAdTitleKey])

        self.placer.loadAds(forAdUnitID: "your_ad_unit_id", targeting: targeting)
    }

在 viewDidLoad() 裡加上
        initAdPlacer()


(未完待續)

--
※ 作者: Knuckles 時間: 2017-05-25 02:26:59
※ 編輯: Knuckles 時間: 2017-09-12 02:01:18
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 322 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇