2014年7月8日 星期二

Admob以及Vpon聯播筆記

目標

利用Admob Mediation聯播admob廣告以及vpon廣告

步驟

申請vpon帳號

依照步驟申請即可

加入應用程式

vpon在新增應用程式的時候會詢問App上架後的URL,這個在iTunes Connect裡面新增App之後就可以看到了。
App URL location

申請admob帳號

依照步驟申請即可

加入應用程式

用手動加入應用程式,照步驟完成後選編輯中介服務->新增廣告聯播網->新增事件,接著就會出現這個畫面。
新增vpon聯播
Vpon的wiki裡有對這裡應該填什麼值做說明。
Label可以隨意,Parameter就是你在vpon新增的廣告id。
特別注意Class Name就是Admob Mediation SDK會去呼叫的class名稱,所以VPON admob mediation adapter的class name要跟這裡一樣,不然Admob Mediation SDK會找不到這個class。我遇到的情況是文件上面class名稱是VpadnAdmobCustomAd,但sample裡面是VponAdmobCustomAd。

整合SDK進project

使用cocoapods方式,編輯Podfile,加入兩個pod。

pod "Google-Mobile-Ads-SDK"
pod 'AdMobMediationAdapterVponSDK', :podspec => 'https://raw2.github.com/dearhui/AdMobMediationAdapterVponSDK/master/AdMobMediationAdapterVponSDK.podspec'

這樣就可以不用手動設定一堆麻煩的東西了。

使用SDK注意事項

其實聯播的運作方式就是使用同一個GADBannerView顯示不同廣告商發送的廣告內容。

admob

只要依照google developer的說明下去使用應該沒有什麼大問題,重點就是把GADBannerView顯示出來而已。
如果要讓admob顯示測試廣告,在GADRequest的testDevices加入GAD_SIMULATOR_ID。
記得GADBannerView的adUnitID要填入中介服務的id

- (void)setupAd
{
    // 在螢幕上方建立標準大小的視圖,
    // 可用的 AdSize 常值已在 GADAdSize.h 中解釋。
    self.bannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];

    // 指定廣告單元編號。
    _bannerView.adUnitID = @"Your pub ID";

    // 通知執行階段,將使用者帶往廣告到達網頁後,該恢復哪一個 UIViewController,
    // 並將其加入檢視階層中。
    _bannerView.rootViewController = self;
}
- (void)loadAD 
{
    GADRequest *request = [GADRequest request];
    request.testDevices = @[
        GAD_SIMULATOR_ID
    ];
    // 啟動一般請求,隨著廣告一起載入。
    [_bannerView loadRequest:request];
}

vpon

vpon的廣告會在同一個GADBannerView顯示廣告內容,而且admob mediation SDK會自動呼叫vpon的class,只要admob中介服務有設定好,其他就不用操心。
目前加了AdMobMediationAdapterVponSDK這個pod之後會有 @synthesize of ‘weak’ property is only allowed in ARC or GC mode的問題,所以要在VponAdmobCustomAd.h加一行

@property(nonatomic, assign) id<GADCustomEventBannerDelegate> delegate;

應該就可以編譯成功了。記得pod update之後會自己加進去的東西會被清掉,需重加。

如果要讓vpon顯示測試廣告,需要加入設備的ID,如果沒加在log裡會提示你。
在VponAdmobCustomAd.m裡面

-(NSArray*)getTestIdentifiers
{
    return [NSArray arrayWithObjects:
            // add your test Id
            @"",
            nil];
}

目前vpon SDK的64 bit版本還在beta,所以如果不想編出64bit版本的binary,就要到Target->Build setting->Architecture裡面把arm64去掉。