跳轉至

進階功能提供自訂區段;自訂視圖允許您顯示所需的 HTML 頁面,自訂看板可以顯示自訂公告欄,Spot Banner 和 Direct View 可以在所需位置顯示在 Hive 控制台上註冊的特定橫幅。

自訂視圖

自訂視圖是一個功能,能夠將外部 URL 或輸入內容顯示在遊戲中的網頁視圖中,並配有一個獨立的按鈕。在遊戲中可以使用一個或多個自訂視圖,因此可以在不同情況下以多種方式使用。

註冊

Hive 控制台提供了一個編輯器來創建和組合自定義視圖。您可以通過 Hive 控制台註冊外部鏈接,與設置一般自定義視圖的方式相同。 有關創建和註冊自定義視圖的更多信息,請參見 Hive 控制台促銷

創建

要在 Hive 控制台或外部页面上显示注册的自定义视图,请调用Promotion 类的 showCustomContents() 方法,如以下说明所示。

  • 將 customType 設定為 PromotionCustomType.VIEW 參數。
  • 將 contentsKey 參數設定為 自訂視圖 IDHive 控制台 > 促銷 > 活動設定 > 自訂視圖標籤 > 管理名稱

API 參考: hive.Promotion.showCustomContents

using hive;    
    PromotionCustomType customType = PromotionCustomType.VIEW;    
    String contentsKey = "12345";    

    Promotion.showCustomContents(customType, contentsKey, (ResultAPI result, PromotionEventType viewEventType) => {    
        if (!result.isSuccess()) {    
        return;    
        }    
        // call successful    
        switch (viewEventType) {    
            case OPEN:    
                // Open promotion view    
                break;    
            case CLOSE:    
                // Close promotion view    
                break;    
        }    
});
#include "HivePromotion.h"

EHivePromotionCustomType PromotionCustomType = EHivePromotionCustomType::VIEW;
FString ContentsKey = TEXT("12345");

FHivePromotion::ShowCustomContents(PromotionCustomType, ContentsKey, FHivePromotionViewDelegate::CreateLambda([this](const FHiveResultAPI& Result, const EHivePromotionEventType& PromotionEventType) {

        if (!Result.IsSuccess()) {
                return;
        }

        // API 呼叫成功
        switch (PromotionEventType) {
                case EHivePromotionEventType::OPEN:
                        // 促銷視圖開啟
                        break;
                case EHivePromotionEventType::CLOSE:
                        // 促銷視圖關閉
                        break;
                default:
                        // 其他事件發生
                        break;

        }
}));

API 參考: Promotion::showCustomContents

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    PromotionCustomType customType = PromotionCustomType::VIEW;    
    string contentsKey = "12345";    

    Promotion::showCustomContents(customType, contentsKey, [=](ResultAPI result, PromotionEventType viewEventType) {    
        if (!result.isSuccess()) {    
        return;    
        }    
        // call successful    
        switch (viewEventType) {    
            case OPEN:    
                // Open promotion view    
                break;    
            case CLOSE:    
                // Close promotion view    
                break;    
        }    
});

API 參考: Promotion.showCustomContents

import com.hive.Promotion    
    import com.hive.ResultAPI    
    val promotionCustomType = Promotion.PromotionCustomType.VIEW    
    val contentsKey = "12345"    
    Promotion.showCustomContents(promotionCustomType, contentsKey, object : Promotion.PromotionViewListener {    
         override fun onPromotionView(result: ResultAPI, promotionEventType: Promotion.PromotionViewResultType) {    
             if (!result.isSuccess) {    
                 return    
             }    
             // call successful    
             when (promotionEventType) {    
                 Promotion.PromotionViewResultType.OPENED -> {    
                    // Open promotion view    
                 }    
                 Promotion.PromotionViewResultType.CLOSED -> {    
                    // Close promotion view    
                 }    
             }    
         }    
})

API 參考: Promotion.INSTANCE.showCustomContents

import com.hive.Promotion;    
    import com.hive.ResultAPI;    
    Promotion.PromotionCustomType promotionCustomType = Promotion.PromotionCustomType.VIEW;    
    String contentsKey = "12345";    
    Promotion.INSTANCE.showCustomContents(promotionCustomType, contentsKey, (result, viewResultType) -> {    
         if (!result.isSuccess()) {    
             return;    
         }    
         // call successful    
         switch (viewResultType) {    
             case OPENED:    
                 // Open promotion view    
                 break;    
             case CLOSED:    
                 // Close promotion view    
                 break;    
         }    
});

API 參考: PromotionInterface.showCustomContents

import HIVEService    
    let type = PromotionCustomType.view    
    let contentsKey = "12345"    
    PromotionInterface.showCustomContents(type, contents: contentsKey) { result, viewResultType in    
        if !result.isSuccess() {    
        return    
        }    
        // call successful    
        switch viewResultType {    
            case .open:    
            // Open promotion view    
            case .close:    
            // Close promotion view    
        }    
}

API 參考: HivePromotion:showCustomContents

#import <HIVEService/HIVEService-Swift.h>    
    HIVEPromotionCustomType type = HIVEPromotionCustomTypeVIEW;    
    NSString *contentsKey = @"12345";    

    [HIVEPromotion showCustomContents: type contents: contentsKey handler: ^(HIVEResultAPI *result, HIVEPromotionViewResultType viewResultType) {    
        if (![result isSuccess]) {    
        return;    
        }    
        // call successful    
        switch (viewResultType) {    
            case HIVEPromotionViewResultTypeOpen:    
                // Open promotion view    
                break;    
            case HIVEPromotionViewResultTypeClose:    
                // Close promotion view    
                break;    
            }    
}];

自訂面板

與一般的促銷通知不同,自訂公告板可以顯示遊戲內各種用途的公告板列表。

  • 自訂面板的範例

註冊

有關創建和註冊自定義板的更多信息,請參見Hive 控制台促銷指南

創建

要顯示自訂面板,請按照以下說明設置參數,然後調用Promotion類的showCustomContents()方法。

  • 將 customType 設為 PromotionCustomType.BOARD 參數。
  • Hive 控制台 > 推廣 > 自訂看板 中將 contentsKey 參數設為 看板鍵

以下是顯示自定義面板的示例代碼。

API 參考: hive.Promotion.showCustomContents

using hive;    
    PromotionCustomType customType = PromotionCustomType.BOARD;    
    String contentsKey = "12345";    

    Promotion.showCustomContents(customType, contentsKey, (ResultAPI result, PromotionEventType viewEventType) => {    
        if (!result.isSuccess()) {    
        return;    
        }    
        // call successful    
        switch (viewEventType) {    
            case OPEN:    
                // Open promotion view    
                break;    
            case CLOSE:    
                // Close promotion view    
                break;    
        }    
});
#include "HivePromotion.h"

EHivePromotionCustomType PromotionCustomType = EHivePromotionCustomType::BOARD;
FString ContentsKey = TEXT("12345");

FHivePromotion::ShowCustomContents(PromotionCustomType, ContentsKey, FHivePromotionViewDelegate::CreateLambda([this](const FHiveResultAPI& Result, const EHivePromotionEventType& PromotionEventType) {

        if (!Result.IsSuccess()) {
                return;
        }

        // API 呼叫成功 
        switch (PromotionEventType) {
                case EHivePromotionEventType::OPEN:
                        // 開啟促銷視圖   
                        break;
                case EHivePromotionEventType::CLOSE:
                        // 關閉促銷視圖 
                        break;
                default:
                        // 其他事件發生
                        break;

        }
}));

API 參考: Promotion::showCustomContents

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    PromotionCustomType customType = PromotionCustomType::BOARD;    
    string contentsKey = "12345";    

    Promotion::showCustomContents(customType, contentsKey, [=](ResultAPI result, PromotionEventType viewEventType) {    
        if (!result.isSuccess()) {    
        return;    
        }    
        // call successfull  
        switch (viewEventType) {    
            case OPEN:    
                // Open promotion view    
                break;    
            case CLOSE:    
                // Close promotion view    
                break;    
        }    
});

API 參考: Promotion.showCustomContents

import com.hive.Promotion    
    import com.hive.ResultAPI    
    val promotionCustomType = Promotion.PromotionCustomType.BOARD    
    val contentsKey = "12345"    
    Promotion.showCustomContents(promotionCustomType, contentsKey, object : Promotion.PromotionViewListener {    
         override fun onPromotionView(result: ResultAPI, promotionEventType: Promotion.PromotionViewResultType) {    
             if (!result.isSuccess) {    
                 return    
             }    
             // call successful    
             when (promotionEventType) {    
                 Promotion.PromotionViewResultType.OPENED -> {    
                     // Open promotion view    
                 }    
                 Promotion.PromotionViewResultType.CLOSED -> {    
                     // Close promotion view    
                 }    
             }    
         }    
})

API 參考: com.hive.Promotion.showCustomContents

import com.hive.Promotion;    
    import com.hive.ResultAPI;    
    Promotion.PromotionCustomType promotionCustomType = Promotion.PromotionCustomType.BOARD;    
    String content_key = "12345";    
    Promotion.INSTANCE.showCustomContents(promotionCustomType, content_key, (result, viewResultType) -> {    
         if (!result.isSuccess()) {    
             return;    
         }    
         // call successful    
         switch (viewResultType) {    
             case OPENED:    
                 // Open promotion view    
                 break;    
             case CLOSED:    
                 // Close promotion view    
                 break;    
         }    
});

API 參考: PromotionInterface.showCustomContents

import HIVEService    
    let type = PromotionCustomType.board    
    let contentsKey = "12345"    
    PromotionInterface.showCustomContents(type, contents: contentsKey) { result, viewResultType in    
        if !result.isSuccess() {    
        return    
        }    
        // call successful    
        switch viewResultType {    
            case .open:    
                // Open promotion view    
            case .close:    
                // Close promotion view    
        }    
}

API 參考: HivePromotion:showCustomContents

#import <HIVEService/HIVEService-Swift.h>    
    HIVEPromotionCustomType type = HIVEPromotionCustomTypeBOARD;    
    NSString *contentsKey = @"12345";    

    [HIVEPromotion showCustomContents: type contents: contentsKey handler: ^(HIVEResultAPI *result, HIVEPromotionViewResultType viewResultType) {    
        if (![result isSuccess]) {    
        return;    
        }    
        // call successful    
        switch (viewResultType) {    
            case HIVEPromotionViewResultTypeOpen:    
                // Open promotion view    
                break;    
            case HIVEPromotionViewResultTypeClose:    
                // Close promotion view    
                break;    
                }    
}];

置頂橫幅

Spot Banner 允許您在遊戲中的所需位置或時機顯示插頁式橫幅。您可以在 Hive 控制台 > 推廣 > 活動設置 > Spot Banner 上註冊插頁式橫幅。

要顯示 Spot Banner,請按照以下說明設置參數,然後調用Promotion類的showCustomContents()方法。

  • 將 customType 設置為 PromotionCustomType.SPOT 參數。
  • 將 contentsKey 參數設置為 Spot Banner IDHive 控制台 > 推廣 > 活動設置 > Spot Banner 標籤 > 管理名稱。此功能在 SDK v4 的遊戲上可用

以下是創建 Spot Banner 的示例代碼。

API 參考: hive.Promotion.showCustomContents

using hive;    
    PromotionCustomType customType = PromotionCustomType.SPOT;    
    String contentsKey = "12345";    

    Promotion.showCustomContents(customType, contentsKey, (ResultAPI result, PromotionEventType viewEventType) => {    
        if (!result.isSuccess()) {    
        return;    
        }    
        // call successful    
        switch (viewEventType) {    
            case OPEN:    
                // Open promotion view    
                break;    
            case CLOSE:    
                // Close promotion view    
                break;    
        }    
});
#include "HivePromotion.h"

EHivePromotionCustomType PromotionCustomType = EHivePromotionCustomType::SPOT;
FString ContentsKey = TEXT("12345");

FHivePromotion::ShowCustomContents(PromotionCustomType, ContentsKey, FHivePromotionViewDelegate::CreateLambda([this](const FHiveResultAPI& Result, const EHivePromotionEventType& PromotionEventType) {

        if (!Result.IsSuccess()) {
                return;
        }

        // API  呼叫成功
        switch (PromotionEventType) {
                case EHivePromotionEventType::OPEN:
                        // 打開促銷視圖
                case EHivePromotionEventType::CLOSE:
                        // 促銷視圖關閉
                        break;
                default:
                        // 關閉促銷視圖
                        break;

        }
}));

API 參考: Promotion::showCustomContents

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    PromotionCustomType customType = PromotionCustomType::SPOT;    
    string contentsKey = "12345";    

    Promotion::showCustomContents(customType, contentsKey, [=](ResultAPI result, PromotionEventType viewEventType) {    
        if (!result.isSuccess()) {    
        return;    
        }    
        // call successful    
        switch (viewEventType) {    
            case OPEN:    
                // Open promotion view    
                break;    
            case CLOSE:    
                // Close promotion view    
                break;    
        }    
});

API 參考: Promotion.showCustomContents

import com.hive.Promotion    
    import com.hive.ResultAPI    
    val promotionCustomType = Promotion.PromotionCustomType.SPOT    
    val contentsKey = "12345"    
    Promotion.showCustomContents(promotionCustomType, contentsKey, object : Promotion.PromotionViewListener {    
         override fun onPromotionView(result: ResultAPI, promotionEventType: Promotion.PromotionViewResultType) {    
             if (!result.isSuccess) {    
                 return    
             }    
             // call successful    
             when (promotionEventType) {    
                 Promotion.PromotionViewResultType.OPENED -> {    
                     // Open promotion view    
                 }    
                 Promotion.PromotionViewResultType.CLOSED -> {    
                     // Close promotion view    
                 }    
             }    
         }    
})

API 參考: com.hive.Promotion.showCustomContents

import com.hive.Promotion;    
    import com.hive.ResultAPI;    
    Promotion.PromotionCustomType promotionCustomType = Promotion.PromotionCustomType.SPOT;    
    String content_key = "12345";    
    Promotion.INSTANCE.showCustomContents(promotionCustomType, content_key, (result, viewResultType) -> {    
         if (!result.isSuccess()) {    
             return;    
         }    
         // call successful    
         switch (viewResultType) {    
             case OPENED:    
                 // Open promotion view    
                 break;    
             case CLOSED:    
                 // Close promotion view    
                 break;    
         }    
});

API 參考: PromotionInterface.showCustomContents

import HIVEService    
    let type = PromotionCustomType.spot    
    let contentsKey = "12345"    
    PromotionInterface.showCustomContents(type, contents: contentsKey) { result, viewResultType in    
        if !result.isSuccess() {    
        return    
        }    
    // call successful    
        switch viewResultType {    
            case .open:    
                // Open promotion view    
            case .close:    
                // Close promotion view    
            }    
}

API 參考: HivePromotion:showCustomContents

#import <HIVEService/HIVEService-Swift.h>    
    HIVEPromotionCustomType type = HIVEPromotionCustomTypeSPOT;    
    NSString *contentsKey = @"12345";    

    [HIVEPromotion showCustomContents: type contents: contentsKey handler: ^(HIVEResultAPI *result, HIVEPromotionViewResultType viewResultType) {    
        if (![result isSuccess]) {    
        return;    
        }    
        // call successful    
        switch (viewResultType) {    
            case HIVEPromotionViewResultTypeOpen:    
                // Open promotion view    
                break;    
            case HIVEPromotionViewResultTypeClose:    
                // Close promotion view    
                break;    
            }    
}];

[su_divider text="⇡ Go to top" divider_color="#65737e" link_color="#65737e" size="1"]

直接視圖

直接視圖是一個功能,可以從遊戲中調用在 Hive 控制台上註冊的活動編號並直接顯示。當您在遊戲中調用在 Hive 控制台中註冊的活動 ID 時,對應的內容將作為框架或全屏顯示。 從 Hive SDK 4.16.0 開始,您可以根據在 Hive 控制台的 促銷 > 活動設置 中設置的曝光類型以全屏或框架類型顯示。

  • 全螢幕類型

  • 框架類型

要顯示直接視圖,請按照以下說明設置參數,然後在Promotion類中調用showCustomContents()方法。

  • 將 customType 設置為 PromotionCustomType.DIRECT 參數。 將 contentsKey 參數設置為 活動編號Hive 控制台 > 推廣 > 活動設置 > 普通橫幅標籤*。

以下是創建直接視圖的示例代碼。

API 參考: hive.Promotion.showCustomContents

using hive;    
    PromotionCustomType customType = PromotionCustomType.DIRECT;    
    String contentsKey = "12345";    

    Promotion.showCustomContents(customType, contentsKey, (ResultAPI result, PromotionEventType viewEventType) => {    
        if (!result.isSuccess()) {    
        return;    
        }    
        // call success   
        switch (viewEventType) {    
            case OPEN:    
                // Open promotion view    
                break;    
            case CLOSE:    
                // Close promotion view    
                break;    
        }    
});
#include "HivePromotion.h"

EHivePromotionCustomType PromotionCustomType = EHivePromotionCustomType::DIRECT;
FString ContentsKey = TEXT("12345");

FHivePromotion::ShowCustomContents(PromotionCustomType, ContentsKey, FHivePromotionViewDelegate::CreateLambda([this](const FHiveResultAPI& Result, const EHivePromotionEventType& PromotionEventType) {

        if (!Result.IsSuccess()) {
                return;
        }

        // API 呼叫成功
        switch (PromotionEventType) {
                case EHivePromotionEventType::OPEN:
                        // 開啟促銷視圖 
                        break;
                case EHivePromotionEventType::CLOSE:
                        // 關閉促銷視圖
                        break;
                default:
                        // 其他事件發生
                        break;

        }
}));

API 參考: Promotion::showCustomContents

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    PromotionCustomType customType = PromotionCustomType::DIRECT;    
    string contentsKey = "12345";    

    Promotion::showCustomContents(customType, contentsKey, [=](ResultAPI result, PromotionEventType viewEventType) {    
        if (!result.isSuccess()) {    
        return;    
        }    
        // call successful    
        switch (viewEventType) {    
            case OPEN:    
                // Open promotion view    
                break;    
            case CLOSE:    
                // Close promotion view    
                break;    
        }    
});

API 參考: Promotion.showCustomContents

import com.hive.Promotion    
    import com.hive.ResultAPI    
    val promotionCustomType = Promotion.PromotionCustomType.DIRECT    
    val contentsKey = "12345"    
    Promotion.showCustomContents(promotionCustomType, contentsKey, object : Promotion.PromotionViewListener {    
         override fun onPromotionView(result: ResultAPI, promotionEventType: Promotion.PromotionViewResultType) {    
             if (!result.isSuccess) {    
                 return    
             }    
             // call successful    
             when (promotionEventType) {    
                 Promotion.PromotionViewResultType.OPENED -> {    
                     // Open promotion view    
                 }    
                 Promotion.PromotionViewResultType.CLOSED -> {    
                     // Close promotion view    
                 }    
             }    
         }    
})

API 參考: com.hive.Promotion.showCustomContents

import com.hive.Promotion;    
    import com.hive.ResultAPI;    
    Promotion.PromotionCustomType promotionCustomType = Promotion.PromotionCustomType.DIRECT;    
    String content_key = "12345";    
    Promotion.INSTANCE.showCustomContents(promotionCustomType, content_key, (result, viewResultType) -> {    
         if (!result.isSuccess()) {    
             return;    
         }    
         // call successful    
         switch (viewResultType) {    
             case OPENED:    
                 // Open promotion view    
                 break;    
             case CLOSED:    
                 // Close promotion view    
                 break;    
         }    
});

API 參考: PromotionInterface.showCustomContents

import HIVEService    
    let type = PromotionCustomType.direct    
    let contentsKey = "12345"    
    PromotionInterface.showCustomContents(type, contents : contentsKey) {    
        result,    
        viewResultType in    
        if !result.isSuccess() {    
            return    
        }    
        // call successful    
        switch viewResultType {    
            case.open:    
                // Open promotion view    
            case.close:    
                // Close promotion view    
        }    
}

API 參考: HivePromotion:showCustomContents

#import <HIVEService /HIVEService-Swift.h>    
    HIVEPromotionCustomType type = HIVEPromotionCustomTypeDIRECT;    
    NSString *contentsKey = @"12345";    
    [HIVEPromotion showCustomContents: type contents: contentsKey handler: ^(HIVEResultAPI *result,    
    HIVEPromotionViewResultType viewResultType) {    
        if (![result isSuccess]) {    
        return;    
    }    
        // call successful    
        switch (viewResultType) {    
            case HIVEPromotionViewResultTypeOpen:    
                // Open promotion view    
                break;    
            case HIVEPromotionViewResultTypeClose:    
                // Close promotion view    
                break;    
        }    
}];

實作您自己的橫幅

Hive SDK 提供了通过 showPromotion 方法将所需的活动作为横幅展示的功能。然而,您可能希望展示一个 Hive SDK 未提供的横幅(滚动横幅),或者您可能希望根据自己的需要自定义并展示 Hive SDK 提供的横幅。 要实现您自己的横幅,您需要遵循以下步骤。

  • 註冊要在 Hive 控制台中實施和顯示的橫幅的資訊(橫幅圖片、連結等)。
  • 調用 Hive SDK 的 getBannerInfo() 以從 Hive 伺服器獲取實施橫幅所需的資訊。
  • 根據接收到的資訊,實施橫幅並在遊戲中顯示它。
Note

Hive SDK 提供了實現橫幅所需的信息,使您可以自定義所有橫幅並直接在遊戲中顯示它們。

滾動橫幅

滾動橫幅是一種內容不斷流動的橫幅。要展示滾動橫幅,遊戲工作室必須自行實現並展示它們。

獲取橫幅資訊

getBannerInfo 是一個函數,用於獲取在遊戲工作室希望直接實現橫幅時所需的資訊,以便以所需的標準顯示橫幅。當此 API 從 Hive 伺服器獲取配置橫幅的數據時,您的遊戲可以使用這些數據以您想要的方式顯示橫幅。要調用此 API,必須初始化身份驗證 v1 或身份驗證 v4。如果未初始化,則可能會在接收數據時發生問題。

Note

您可以將點擊橫幅時收到的 pid(整數)值轉換為 contentsKey(字符串),並將其作為參數傳遞給 Promotion 類的 showCustomContents() 方法,以將其作為 直接視圖 形式顯示。

API 請求範例

API 參考: hive .Promotion.getBannerInfo

using hive;    
    /*    
    ALL,    
    EVENT,    
    NOTICE,    
    CROSS (跨横幅)    
    */    
    PromotionCampaignType campaignType = PromotionCampaignType.EVENT;    
    /*    
    SMALL (小横幅),    
    GREAT (大横幅),    
    ROLLING (滚动横幅)    
    */    
    PromotionBannerType bannerType = PromotionBannerType.ROLLING;    
    Promotion.getBannerInfo(campaignType, bannerType, (ResultAPI result, List bannerInfoList) => {    
        if (result.isSuccess()) {    
        // 调用成功    
        }    
    });    
    // 横幅类型和活动类型也可以通过字符串而不是枚举来调用。    
    /*    
    "all" (所有),    
    "event" (事件),    
    "notice" (通知),    
    "cross" (跨大横幅)    
    */    
    String campaignType = "event";    
    /*    
    "small" (小横幅),    
    "great" (大横幅),    
    "rolling" (滚动横幅)    
    */    
    String bannerType = "rolling";    
    Promotion.getBannerInfoString(campaignType, bannerType, (ResultAPI result, List bannerInfoList) => {    
        if (result.isSuccess()) {    
        // 调用成功    
        }    
});

```c++

include "HivePromotion.h"

/*
"所有" (all),
"事件" (event),
"通知" (notice),
"跨越" (Cross Great Banner)
*/
EHivePromotionCampaignType CampaignType = EHivePromotionCampaignType::EVENT;

/*    
"小型" (band banner),    
"大型" (great banner),    
"滾動" (rolling banner)    
*/

EHivePromotionBannerType BannerType = EHivePromotionBannerType::ROLLING;

FHivePromotion::GetBannerInfo(CampaignType, BannerType, FHivePromotionOnBannerInfoDelegate::CreateLambda(this { if (Result.IsSuccess()) { // call success } }));

// 橫幅類型和活動類型也可以通過字符串而不是枚舉來調用。
/*
"all" (全部),
"event" (事件),
"notice" (通知),
"cross" (跨越大橫幅)
/
FString CampaignType = TEXT("event"); /

"small" (小橫幅),
"great" (大橫幅),
"rolling" (滾動橫幅)
*/ FString BannerType = TEXT("rolling");

FHivePromotion::GetBannerInfoString(CampaignType, BannerType, FHivePromotionOnBannerInfoDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FHivePromotionBannerInfo>& PromotionBannerInfoList) {
        if (Result.IsSuccess()) {
                // API call success
        }
}));
```

API 參考: Promotion ::getBannerInfo

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    /*    
    ALL,    
    EVENT,    
    NOTICE,    
    CROSS (Cross Banner)    
    */    
    PromotionCampaignType campaignType = PromotionCampaignType::EVENT;    
    /*    
    SMALL (band banner),    
    GREAT (Great Banner),    
    ROLLING (rolling banner)    
    */    
    PromotionBannerType bannerType = PromotionBannerType::ROLLING;    

    Promotion::getBannerInfo(campaignType, bannerType, [=](ResultAPI result, vector bannerInfos) {    
         if (result.isSuccess()) {    
             // call successful    
         }    
    });    

    // 橫幅類型和活動類型也可以通過字符串而不是枚舉來調用。    
    /*    
    "all" (所有),    
    "event" (事件),    
    "notice" (通知),    
    "cross" (跨越大橫幅)    
    */    
    string campaignType = "event";    
    /*    
    "small" (小橫幅),    
    "great" (大橫幅),    
    "rolling" (滾動橫幅)    
    */    
    string bannerType = "rolling";    

    Promotion::getBannerInfoString(campaignType, bannerType, [=](ResultAPI result, vector bannerInfos) {    
         if (result.isSuccess()) {    
             // call successful    
         }    
});

API 參考: Promotion.getBannerInfo

import com.hive.Promotion    
    import com.hive.ResultAPI    
    /*    
         ALL,    
         EVENT,    
         NOTICE,    
         CROSS (Cross Banner)    
    */    
    val campaignType = Promotion.PromotionCampaignType.EVENT    
    /*    
         SMALL (band banner),    
         GREAT (Great Banner),    
         ROLLING (rolling banner)    
    */    
    val bannerType = Promotion    
        .PromotionBannerType    
        .ROLLING    
        Promotion    
        .getBannerInfo(    
            campaignType,    
            bannerType,    
            object : Promotion.PromotionBannerInfoListener {    
                override fun onReceiveInfo(    
                    result : ResultAPI,    
                    bannerInfoList : ArrayList <Promotion.PromotionBanner>?    
                ) {    
                    if (result.isSuccess) {    
                        // call successful    
                    }    
                }    
            }    
        )    
    // Banner type and campaign type can also be called through strings instead of    
    // enumeration.    
    /*    
         "all" (all),    
         "event" (event),    
         "notice" (notice),    
         "cross" (Cross Great Banner)    
    */    
    val campaignType = "event"    
    /*    
         "small" (band banner),    
         "great" (great banner),    
         "rolling" (rolling banner)    
    */    
    val bannerType = "rolling"    
    Promotion.getBannerInfoString(    
        campaignType,    
        bannerType,    
        object : Promotion.PromotionBannerInfoListener {    
            override fun onReceiveInfo(    
                result : ResultAPI,    
                bannerInfoList : ArrayList <Promotion.PromotionBanner>?    
            ) {    
                if (result.isSuccess) {    
                    // call successful    
                }    
            }    
        }    
)

API 參考: Promotion .INSTANCE.getBannerInfo

import com.hive.Promotion;    
    import com.hive.ResultAPI;    
    /*    
         ALL,    
         EVENT,    
         NOTICE,    
         CROSS (Cross Banner)    
    */    
    Promotion.PromotionCampaignType campaignType = Promotion.PromotionCampaignType.EVENT;    
    /*    
         SMALL (band banner),    
         GREAT (Great Banner),    
         ROLLING (rolling banner)    
    */    
    Promotion.PromotionBannerType bannerType = Promotion.PromotionBannerType.ROLLING;    
    Promotion.INSTANCE.getBannerInfo(campaignType, bannerType, (result, bannerInfoList) -> {    
         if(result.isSuccess()) {    
             // call successful    
         }    
    });    
    // Banner type and campaign type can also be called through strings instead of enumeration.    
    /*    
         "all" (all),    
         "event" (event),    
         "notice" (notice),    
         "cross" (Cross Great Banner)    
    */    
    String campaignType = "event";    
    /*    
         "small" (band banner),    
         "great" (great banner),    
         "rolling" (rolling banner)    
    */    
    String bannerType = "rolling";    
    Promotion.INSTANCE.getBannerInfo(campaignType, bannerType, (result, bannerInfoList) -> {    
         if(result.isSuccess()) {    
             // call successful    
         }    
});

API 參考: PromotionInterface.getBannerInfo

import HIVEService    
    /*    
    all (all),    
    event(event),    
    notice,    
    cross (cross banner)    
    */    
    let campaignType = PromotionCampaignType.event    
    /*    
    small (band banner),    
    great(great banner),    
    rolling(rolling banner)    
    */    
    let bannerType = PromotionBannerType.rolling    

    PromotionInterface.getBannerInfo(campaignType, bannerType: bannerType) { result, bannerInfoList in {    
         if result.isSuccess() {    
             // call successful    
         }    
    }    

    // 橫幅類型和活動類型也可以通過字符串而不是枚舉來調用。    
    /*    
    "all" (全部),    
    "event" (事件),    
    "notice" (通知),    
    "cross" (跨越大橫幅)    
    */    
    let campaignType = "event"    
    /*    
    "small" (小橫幅),    
    "great" (大橫幅),    
    "rolling" (滾動橫幅)    
    */    
    let bannerType = "rolling"    

    PromotionInterface.getBannerInfoString(campaignType, bannerString: bannerType) { result, bannerInfoList in {    
         if result.isSuccess() {    
             // API call successful    
         }    
}

API 參考: HIVEPromotion getBannerInfo

#import <HIVEService/HIVEService-Swift.h>    
    /*    
    HIVEPromotionCampaignTypeAll (全部);    
    HIVEPromotionCampaignTypeEvent(事件);    
    HIVEPromotionCampaignTypeNotice(通知);    
    HIVEPromotionCampaignTypeCross (交叉横幅)    
    */    
    HIVEPromotionCampaignType campaignType = HIVEPromotionCampaignTypeEvent;    
    /*    
    HIVEPromotionBannerTypeSmall (小横幅),    
    HIVEPromotionBannerTypeGreat(大横幅),    
    HIVEPromotionBannerTypeRolling    
    */    
    HIVEPromotionBannerType bannerType = kHIVEPromotionBannerTypeRolling;    

    [HIVEPromotion getBannerInfo: campaignType bannerType: bannerType handler: ^(HIVEResultAPI *result, NSArray *bannerInfos) {    
         if ([result isSuccess]) {    
             // call successful    
         }    
    }];    

    // 橫幅類型和活動類型也可以通過字符串而不是枚舉來調用。    
    /*    
    "all" (全部),    
    "event" (事件),    
    "notice" (通知),    
    "cross" (跨越大橫幅)    
    */    
    NSString *campaignType = @"event";    
    /*    
    "small" (小橫幅),    
    "great" (大橫幅),    
    "rolling" (滾動橫幅)    
    */    
    NSString *bannerType = @"rolling";    

    [HIVEPromotion getBannerInfoString: campaignType, bannerString: bannerType, handler: ^(HIVEResultAPI *result, NSArray<HIVEPromotionBanner *> *bannerInfos) {    
         if ([result isSuccess]) {    
             // call successful    
         }    
}];

API 回應:PromotionBannerInfo

在API響應中,實現橫幅所需的橫幅信息位於PromotionBannerInfo對象(數組)中。詳細信息請參見下表。

字段名稱 類型 描述
pid 整數 推廣活動 ID
imageUrl 字串 活動橫幅的圖片 URL
linkUrl 字串 當用戶點擊活動橫幅時打開的 URL
displayStartDate 字串 活動的開始時間
displayEndDate 字串 活動的結束時間
utcStartDate 整數 活動的開始時間 (Unix 時間戳)
utcEndDate 整數 活動的結束時間 (Unix 時間戳)
typeLink 字串 當用戶點擊活動橫幅時打開頁面的類型。註冊活動時選擇。 * webview: 打開內部鏈接 * webbrowser: 打開外部鏈接 * market: 打開市場 (應用商店) 頁面 * notice: 打開通知頁面 * text: 打開促銷文本通知 * none: 停留在當前頁面
typeBanner 字串 活動橫幅的類型 * great: 插頁橫幅 * small: 普通橫幅 * rolling: 滾動橫幅
typeCampaign 字串 推廣的活動類型 * all: 所有 * event: 活動 * notice: 通知 * cross: 跨插頁橫幅
interworkData 字串 包含 API 和參數的 JSON 數據,用於將用戶移動到遊戲中的特定位置。這些數據為字串格式。例如,如果用戶點擊自定義的事件滾動橫幅,您可以將該用戶引導到特定事件項目的購買畫面。

活動數據搜尋

Hive SDK 提供了一個功能,可以搜索在 Hive 控制台上註冊的活動數據。當您直接在遊戲中顯示註冊的活動內容而不是使用促銷視圖時,此功能非常有用。 以下活動類型可供搜索:自定義視圖、自定義板、廣告橫幅和直接視圖。Promotion 類的 showCustomContents() 方法可以解釋這四種類型。

資料表單

Hive SDK 返回促銷資訊,使用 PromotionViewInfo 物件陣列,因為廣告橫幅可以包含多個橫幅,例如插頁式廣告。即使自訂視圖、自訂版面和直接視圖包含單一形式,Hive 仍然會以陣列型別返回所有活動的資訊。

以下表格是PromotionViewInfo物件的組成。

名稱 類型 描述
url 字串 要由 WebView 加載的頁面 URL
postString 字串 加載 WebView 所需的 POST 字串

資料搜尋

要搜索在 Hive 控制台上注册的活动数据,请将促销的唯一 ID 设置为调用 Promotion 类的 getViewInfo() 方法的第一个参数。然后,返回接收活动数据的回调方法。 以下是请求唯一 ID 为 310000 的活动的示例代码。Android 和 iOS 的示例包含直接在 WebView 上显示来自 Hive SDK 的数据的代码。

API 參考: hive.Promotion.getViewInfo

using hive;    
    PromotionCustomType customType = PromotionCustomType.VIEW;    
    String contentsKey = "123456";    
    Promotion.getViewInfo(customType, contentsKey, (ResultAPI result, List promotionViewInfoList) => {    
        if (result.isSuccess()) {    
        // call successful    
        }    
});
#include "HivePromotion.h"

EHivePromotionCustomType PromotionCustomType = EHivePromotionCustomType::VIEW;
FString ContentsKey = TEXT("123456");


FHivePromotion::GetViewInfo(PromotionCustomType,
                                                        ContentsKey,
                                                        FHivePromotionOnViewInfoDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FHivePromotionViewInfo>& PromotionViewInfoList) {
        if (Result.IsSuccess()) {
                // API call success
        }                                                                
}));

API 參考: Promotion::getViewInfo

#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std;    
    using namespace hive;    
    PromotionCustomType customType = PromotionCustomType::VIEW;    
    string contentsKey = "123456";    
    Promotion::getViewInfo(    
        customType,    
        contentsKey,    
        [=](ResultAPI result, vector promotionViewInfo) {    
            if (result.isSuccess()) {    
                // call successful    
            }    
        }    
);

API 參考: Promotion.getViewInfo

import com.hive.Promotion    
    import com.hive.ResultAPI    
    val customType = Promotion.PromotionCustomType.VIEW    
    val contentsKey = "123456"    
    Promotion.getViewInfo(customType, contentsKey, object : Promotion.PromotionViewInfoListener {    
         override fun onReceiveInfo(result: ResultAPI, viewInfo: ArrayList<Promotion.PromotionViewInfo>?) {    
             if (result.isSuccess) {    
                 // call successful    
             }    
         }    
})

API 參考: com.hive.Promotion.getViewInfo

import com.hive.Promotion;    
    import com.hive.ResultAPI;    
    Promotion.PromotionCustomType promotionCustomType = Promotion.PromotionCustomType.VIEW;    
    String contentsKey = "123456";    
    Promotion.INSTANCE.getViewInfo(promotionCustomType, contentsKey, (result, viewInfo) -> {    
         if (result.isSuccess()) {    
             // call successful    
         }    
});

API 參考: PromotionInterface.getViewInfo

import HIVEService    
    let promotionType = PromotionCustomType.view    
    let contentsKey = "123456"    
    PromotionInterface.getViewInfo(promotionType, contents : contentsKey) {    
        result,    
        infos in    
        if result.isSuccess() {    
            // call successful    
        }    
}

API 參考: HIVEPromotion:getViewInfo

#import <HIVEService/HIVEService-Swift.h>    
    HIVEPromotionCustomType promotionType = HIVEPromotionCustomTypeVIEW;    
    NSString *contentsKey = @"123456";    

    [HIVEPromotion getViewInfo: promotionType contents: contentsKey handler: ^(HIVEResultAPI *result, NSArray<HIVEPromotionViewInfo *> *infos) {    
         if ([result isSuccess]) {    
             // call successful    
         }    
}];

發送額外信息到促銷伺服器

這裡的附加資訊是由您的遊戲公司定義的自訂數據。遊戲公司可以將附加資訊轉發到推廣伺服器,並根據遊戲公司與 Com2uS 平台之間的合作關係用於各種服務。例如,您可以在 additionalInfo 中定義您遊戲的玩家角色等級資訊,如下所示。

{
     "account_id": 1000338,
     "account_name": "test_account",
     "player_level": 50
}

在使用 setAdditionalInfo 方法將上述 additionalInfo 發送到推廣伺服器後,請與 Com2uS 平台合作以了解實施細節。例如,當顯示特定事件頁面(直接視圖自定義視圖 等)時,可以為擁有等級高於 50 的遊戲角色的用戶顯示一個金色邊框的事件橫幅。 您還可以將其用作功能,通過在 additionalInfo 中輸入活動編號來將禮品盒圖像添加到新聞橫幅。

以下是一个传递 additionalInfo 的示例代码。

API 參考: hive.Promotion.setAdditionalInfo

using hive;    
    // 根據 Unity 套件中的 JSON 物件版本進行字符串轉義處理(必須包含反斜杠)    
    // 在 Hive SDK 4.16.2 下    
    string additionalInfo = "{\\\"myData\\\":\\\"123\\\"}";    
    // Hive SDK 4.16.2 或更高版本    
    string additionalInfo = "{\"myData\":\"123\"};    
Promotion.setAdditionalInfo(additionalInfo)
#include "HivePromotion.h"

FString 附加信息 = TEXT(\"myData\":\"123\");
FHivePromotion::SetAdditionalInfo(附加信息);

API 參考: Promotion::setAdditionalInfo

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    string additionalInfo = "{\"myData\":\"123\"};    

Promotion::setAdditionalInfo(additionalInfo);

API 參考: Promotion.setAdditionalInfo

import com.hive.Promotion    
    val additionalInfo = "{\"myData\":\"123\"}"    
Promotion.setAdditionalInfo(additionalInfo)

API 參考: Promotion .INSTANCE.setAdditionalInfo

import com.hive.Promotion;    
    String additionalInfo = "{\"myData\":\"123\"}";    
Promotion.INSTANCE.setAdditionalInfo(additionalInfo);

API 參考: PromotionInterface .setAdditionalInfo

import HIVEService    
    let additionalInfo = "{\"myData\":\"123\"}"    
PromotionInterface.setAdditionalInfo(additionalInfo)

API 參考: HIVEPromotion::setAdditionalInfo

#import <HIVEService/HIVEService-Swift.h>    
    NSString *additionalInfo = @"{\"myData\":\"123\"}";    
[HIVEPromotion setAdditionalInfo: additionalInfo];

附加信息可用于所有 Hive SDK 促销功能。因此,在实现任何促销功能之前,我们建议您在定义附加信息及其使用方式后,首先调用 setAdditionalInfo

無標題的事件顯示

您可以在从插页横幅、Spot Banner、新闻页面或直接视图链接的事件页面上删除 Hive 标题栏。要在没有 Hive 标题栏的情况下显示事件页面,请在调用 showCustomContents() 方法之前调用 Promotion 类的 setAdditionalInfo 方法,将标题字段设置为 Off。您可以通过整理 additionalInfo 并将其发送到 Hive 服务器来从公开页面中删除 Hive 标题栏,具体如下所述。

以下是釋放標題欄的示例代碼。

API 參考: hive.Promotion.setAdditionalInfo

using hive;    
    //在 Hive SDK 4.16.2 下    
    string additionalInfo = "{\\\"header\\\":\\\"off\\\"}";    
    //  Hive SDK 4.16.2 或更高版本    
    string additionalInfo = "{\"header\":\"off\"}";    

Promotion.setAdditionalInfo(additionalInfo)
#include "HivePromotion.h"

FString AdditionalInfo = TEXT("{\"header\":\"off\"}");
FHivePromotion::SetAdditionalInfo(AdditionalInfo);

API 參考: Promotion::setAdditionalInfo

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    string additionalInfo = "{\"header\":\"off\"}";    

Promotion::setAdditionalInfo(additionalInfo);

API 參考: Promotion.setAdditionalInfo

import com.hive.Promotion    
    val additionalInfo = "{\"header\":\"off\"}"    
Promotion.setAdditionalInfo(additionalInfo)

API 參考: Promotion.INSTANCE.setAdditionalInfo

import com.hive.Promotion;    
    String additionalInfo = "{\"header\":\"off\"}";    
Promotion.INSTANCE.setAdditionalInfo(additionalInfo);

API 參考: PromotionInterface .setAdditionalInfo

import HIVEService    
    let additionalInfo = "{\"header\":\"off\"}"    
PromotionInterface.setAdditionalInfo(additionalInfo)

API 參考: HIVEPromotion setAdditionalInfo

#import <HIVEService/HIVEService-Swift.h>    
    NSString *additionalInfo = @"{\"header\":\"off\"}";    

[HIVEPromotion setAdditionalInfo: additionalInfo];

在促銷中播放視頻片段

在您的遊戲推廣中顯示視頻片段,使用 Hive SDK v4.7.0 及更高版本。如果用戶點擊播放鏈接,則會顯示全屏視頻。為此,請確保編碼在播放視頻之前將音量降低,並在播放後將音量提高的功能。

  • 顯示視頻片段前後的狀態會發送到實現促銷的 API 處理程序。StartPlayback、FinishPlayback 被發送到 PromotionViewResultType;而 kPromotionStartPlayback、kPromotionFinishPlayback 則發送到結果 API 代碼的部分。
    • WebKit.framework 和 libz.tbd 是新增到 iOS Xcode 的框架。

以下是控制遊戲音量以在促銷頁面上播放視頻片段的示例代碼。

API 參考: onPromotionView

using hive;    
    public void onPromotionViewCB(    
        ResultAPI result,    
        PromotionEventType viewEventType    
    ) {    
        if (!result.isSuccess()) {    
            return;    
        }    
        // call successful    
        switch (viewEventType) {    
            case OPEN:    
                // Open promotion view    
                break;    
            case CLOSE:    
                // Close promotion view    
                break;    
            case START_PLAYBACK:    
                // TODO: Mute game sound    
                break;    
            case FINISH_PLAYBACK:    
                // TODO: Resume game sound    
                break;    
        }    
}
auto PromotionViewDelegate = FHivePromotionViewDelegate::CreateLambda([this](const FHiveResultAPI& Result, const EHivePromotionEventType& PromotionEventType) {
        if (!Result.IsSuccess()) {
                return;
        }

        // API 呼叫成功
        switch (PromotionEventType) {
                case EHivePromotionEventType::OPEN:
                        // 開啟促銷視圖
                        break;
                case EHivePromotionEventType::CLOSE:
                        // 關閉促銷視圖
                        break;
                case EHivePromotionEventType::START_PLAYBACK:
                        // TODO: 靜音遊戲聲音
                        break;
                case EHivePromotionEventType::FINISH_PLAYBACK:
                        // TODO: 恢復遊戲聲音
                        break;
                default:
                        // 恢復遊戲聲音
                        break;
        }
});

API 參考: onPromotionView

#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std;    
    using namespace hive;    
    void PromotionTest::onPromotionView(    
        ResultAPI result,    
        PromotionEventType viewEventType    
    ) {    
        if (!result.isSuccess()) {    
            return;    
        }    
        // call successful    
        switch (viewEventType) {    
            case OPEN:    
                // Open promotion view    
                break;    
            case CLOSE:    
                // Close promotion view    
                break;    
            case START_PLAYBACK:    
                // TODO: Mute game sound    
                break;    
            case FINISH_PLAYBACK:    
                // TODO: Resume game sound    
                break;    
        }    
}

API 參考: onPromotionView

import com.hive.Promotion    
    import com.hive.ResultAPI    
    val listener = object: Promotion.PromotionViewListener {    
         override fun onPromotionView(result: ResultAPI, promotionEventType: Promotion.PromotionViewResultType) {    
             if (!result.isSuccess) {    
                 return    
             }    
             // call successful    
             when (promotionEventType) {    
                 Promotion.PromotionViewResultType.OPENED -> {    
                     // Open promotion view    
                 }    
                 Promotion.PromotionViewResultType.CLOSED -> {    
                     // Close promotion view    
                 }    
                 Promotion.PromotionViewResultType.START_PLAYBACK -> {    
                     // TODO: Mute game sound    
                 }    
                 Promotion.PromotionViewResultType.FINISH_PLAYBACK -> {    
                     // TODO: Resume game sound    
                 }    
                 else -> {}    
             }    
         }    
}

API 參考: Promotion .PromotionViewListener

import com.hive.Promotion;    
    import com.hive.ResultAPI;    
    Promotion.PromotionViewListener listener = (result, promotionEventType) -> {    
         if (!result.isSuccess()) {    
             return;    
         }    
         // call successful    
         switch (promotionEventType) {    
             case OPENED:    
                 // Open promotion view    
                 break;    
             case CLOSED:    
                 // Close promotion view    
                 break;    
             case START_PLAYBACK:    
                 // TODO: Mute game sound    
                 break;    
             case FINISH_PLAYBACK:    
                 // TODO: Resume game sound    
                 break;    
             default:    
                 break;    
         }    
};

API 參考: PromotionViewHandler

import HIVEService    
    let handler = {    
        (result : ResultAPI, viewResultType : PromotionViewResultType) in if !result.isSuccess() {    
            return    
        }    
        // call successful    
        switch viewResultType {    
            case.open:    
                // Open promotion view    
            case.close:    
                // Close promotion view    
            case.startPlayBack:    
                // TODO: Mute game sound    
            case.finishPlayBack:    
                // TODO: Resume game sound    
        }    
}

API 參考: HIVEPromotionViewHandler

#import <HIVEService/HIVEService-Swift.h>    
    HIVEPromotionViewHandler handler = ^(HIVEResultAPI* result, HIVEPromotionViewResultType viewResultType) {    
         if (![result isSuccess]) {    
    return;    
    }    
    // call successful    
    switch (viewResultType) {    
             case HIVEPromotionViewResultTypeOpen:    
    // Open promotion view    
                 break;    
             case HIVEPromotionViewResultTypeClose:    
    // Close promotion view    
                 break;    
             case HIVEPromotionViewResultTypeStartPlayback:    
    // TODO: Mute game sound    
                 break;    
             case HIVEPromotionViewResultTypeFinishPlayback:    
    // TODO: Resume game sound    
                 break;    
             }    
         }    
};