關(guān)于iOS接入VungleSDK你想知道的都在這

寫在前面

什么是VungleSDK ?VungleSDK一個廣告平臺的SDK。

0、相關(guān)鏈接

VungleSDK管理平臺
VungleSDK相關(guān)文檔

1、工作原理

init SDK -->loading -->play --> remove cache --> loading
簡而言之,就是初始化-->加載緩存廣告視頻-->播放-->清除對應(yīng)播放的緩存視頻-->加載緩存新的廣告視頻
如果網(wǎng)速足夠快的話,在看完一個廣告之前,就已經(jīng)成功緩存好新的廣告,下次播放即可實現(xiàn)0秒等待

2、開始接入

步驟1:添加 Vungle 框架到您的 Xcode 項目

添加 VungleSDK.framework 到您的項目

分為Cocoapods接入手動接入,參考文檔即可正常接入。
這里要說一下關(guān)于手動添加,鏈接一些其他的本地框架,其實*.framework的,新版本的Xcode,都可以不用手動添加了,可以參考我的另一篇文章

添加“ObjC”鏈接器標(biāo)記,如圖:

other link.png

步驟2:刪除 iOS 狀態(tài)欄

作用應(yīng)該在于廣告的全屏正常顯示,在項目的info文件中添加,右鍵點擊該文件-->Open as --> Source code

<key>UIStatusBarTintParameters</key>
    <dict>
        <key>UINavigationBar</key>
        <dict>
            <key>Style</key>
            <string>UIBarStyleDefault</string>
            <key>Translucent</key>
            <false/>
        </dict>
    </dict>

步驟3:添加代碼

注意:調(diào)用初始化的方法,就開始緩存廣告了,有可能初始化還沒成功,就成功緩存,這種情況下,需要先對這個屬性initialized進(jìn)行判斷,否則直接調(diào)用play會不成功

初始化SDK

- (BOOL)startWithAppId:(nonnull NSString *)appID placements:(nonnull NSArray *)placements error:(NSError **)error;

一旦初始化成功,以下回調(diào)會被調(diào)用:

- (void)vungleSDKDidInitialize;

一旦初始化失敗,以下回調(diào)會被調(diào)用:

-(void)vungleSDKFailedToInitializeWithError:(NSError *)error;

注意:

  • appID需要在管理后臺中創(chuàng)建應(yīng)用獲取,placements這是默認(rèn)廣告位,可以有多個,具體需要在管理后臺進(jìn)行配置,拿到placementID放入該數(shù)組。
  • 調(diào)用這個函數(shù),如果appID 和 placements兩個參數(shù)都為nil,會返回FALSE。如果其中一個參數(shù)是nil,或者錯誤,則回調(diào)vungleSDKFailedToInitializeWithError。
  • 一個placementID代表一個廣告位,一個廣告位的廣告,每次打開都是不同的,因為打開后會清除緩存,重新緩存新的廣告。

為廣告位置加載廣告

- (BOOL)loadPlacementWithID:(NSString *)placementID error:(NSError **)error;

注意:

  • loadPlacementWithID返回YES,不代表緩存成功,只能代表加載成功,緩存還是需要一定的時間的。

一旦緩存成功,會回調(diào)這個方法:

- (void)vungleAdPlayabilityUpdate:(BOOL)isAdPlayable placementID:(nullable NSString *)placementID; 

注意

  • 初始化SDK的時候,默認(rèn)是有一個廣告位(placementID)為自動緩存,具體可以在管理后臺進(jìn)行設(shè)置你想要的廣告位為默認(rèn)緩存,也就是說,調(diào)用SDK初始化的方法,還沒回調(diào)成功,有可能該廣告位已經(jīng)緩存廣告成功了。實測是這樣的。

可以通過調(diào)用以下方法,來判斷該廣告位的廣告是否具備可播放的性質(zhì),一旦返回YES,即說明該廣告可播放,進(jìn)而調(diào)用play的函數(shù):

- (BOOL)isAdCachedForPlacementID:(nonnull NSString *)placementID;

播放廣告

一旦確定廣告位置的廣告已準(zhǔn)備好,可使用以下方法來播放廣告:

- (BOOL)playAd:(UIViewController *)controller options:(nullable NSDictionary *)options placementID:(nullable NSString *)placementID error:( NSError *__autoreleasing _Nullable *_Nullable)error;

開始播放 和 結(jié)束播放,都有對應(yīng)的回調(diào),如下:

- (void)vungleWillShowAdForPlacementID:(nullable NSString *)placementID;
- (void)vungleWillCloseAdWithViewInfo:(VungleViewInfo *)info placementID:(NSString *)placementID;

Flex Feed 廣告

非全屏廣告,具體請參考文檔。

我的接入

我的接入思路,以及遇到的問題

1、因為我做的是SDK,現(xiàn)在在我的SDK項目中,接入VungleSDK,等于說,我暴露出去的,分為兩個函數(shù),接入我的SDK,需要開APP啟動的時候先調(diào)用第一個函數(shù),然后具體在播放的時機(jī),再調(diào)用第二個函數(shù)。如下:

//初始化并開始緩存
-(void)startCacheAdvertisingSuccess:(EventBlock)initSuccessBlock
                            failure:(EventBlock)initFailureBlock;
//開始播放
-(void)showAdvertisingWithCloseTipsTitle:(NSString*)closeTipsTitle
                        closeTipsContent:(NSString*)closeTipsContent
                               startPlay:(EventBlock)startPlayBlock
                                 endPlay:(EventBlock)endPlayBlock
                             playFailure:(FailureBlock)playFailureBlock;

2、由于SDK緩存全看網(wǎng)速,在必要的時候,需要我手動遍歷,未cache的則調(diào)用loading,并做一些等待提示,緩存成功,需要直接播放。如果是自動緩存,則只有開發(fā)者調(diào)用時才播放。

-(void)loadAllPlacement{
    WEAKSELF;
    [self.placementIDsArray enumerateObjectsUsingBlock:^(NSString *placementID, NSUInteger idx, BOOL * _Nonnull stop) {
        //已經(jīng)緩存的,不再緩存
        if (![self.sdk isAdCachedForPlacementID:placementID]) {
            NSError *error = nil;
            [weakSelf.sdk loadPlacementWithID:placementID error:&error];
        }
    }];
}
//獲取已緩存的廣告位
-(NSArray*)alreadyCachedPlacement:(NSArray*)allArr{
    __block NSMutableArray *arr = [NSMutableArray array];
    [allArr enumerateObjectsUsingBlock:^(NSString  *placementID, NSUInteger idx, BOOL * _Nonnull stop) {
        if ([self.sdk isAdCachedForPlacementID:placementID]) {
            [arr addObject:placementID];
        }
    }];
    return arr;
}

遇到的問題

在管理后臺新增一個應(yīng)用后,添加一個廣告位,只有一個廣告的時候,該廣告位為自動緩存的廣告位。
寫好自己的demo之后,使用了VungleSDK官方的文檔中提供的appID 和 placements,發(fā)現(xiàn)我的demo能夠正常播放廣告,可是使用了自己管理后臺的,就不能正常播放廣告,要么沒播放完就停止播放并且黑屏,要么點擊廣告關(guān)閉按鈕后黑屏。由此我猜想是:該廣告位對應(yīng)的測試狀態(tài)下的廣告有問題,不能正常緩存。

解決問題

于是,找了他們官方的文檔半天(大概是這個位置),才找到一個支持郵箱(monetize@vungle.com),于是有了以下對話:

我發(fā)郵件尋求幫助:


郵件1.png

技術(shù)支持的回復(fù):(注意:這里說是一般需要30分鐘才生效?。?/p>

郵件2.png

我的建議:


郵件3.png

技術(shù)支持的回復(fù):


郵件4.png

小結(jié)

有趣,VungleSDK很少人用?反正基本找不到相關(guān)的接入教程,相關(guān)官方文檔也沒有人評論,而官方文檔又沒有提示這個測試廣告有問題的幺蛾子!還好官方的工作人員郵件倒是回復(fù)的很快,因此結(jié)合文檔,堅定自己的判斷,就解決問題了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容