首頁>科技>

豹趣小遊戲SDK 是協助APP商業變現的第三方SDK,目前已經有400多家媒體接入,top100媒體已經有20家媒體接入。

商業模式上,類似新聞sdk,小說sdk,視訊sdk等,通過廣告變現,然後進行分成。

和其他不同的是:流水走接入方。

詳細的技術接入文件如下,開發+測試時長1天:

## **1 SDK接入準備**

* 開發者提供APP的包名,用於申請GameSdkID和域名,確保遊戲的安全性。

* 開發者提供APP DAU的量級,通過量級,判斷所需伺服器的資源,比如:**百萬級,千萬級**;

* APP方自行接入穿山甲SDK,並在穿山甲後臺申請如下廣告id:

**以下廣告除“激勵視訊廣告”為必要廣告,其餘為可選廣告;如為提高產品體驗,不需要某類廣告,程式碼裡不設定廣告id即可不顯示廣告。

詳細廣告說明可閱讀《測試必讀和廣告說明.docx》**

```

1. 遊戲內--開屏廣告:原生模板渲染,尺寸比例:1:1;

2. 遊戲內--激勵視訊廣告:豎屏,無需獎勵;

3. 遊戲內--關卡類遊戲插屏場景:全屏視訊廣告:豎屏;

4. 遊戲內--關卡類遊戲插屏場景:插屏廣告:原生模板渲染,尺寸比例:2:3;

5. 遊戲內--遊戲底部:Banner廣告(暫時停用):原生,模板渲染,尺寸:600*150;

8. 遊戲列表--插屏廣告:原生,模板渲染,尺寸比例:1:1,遊戲中心以tab方式存在的不能使用,只展示1次。

```

## **2 使用**

1、 初始化

2、 遊戲遊客賬號

3、 介面顯示

### **2.1 初始化**

以上為初始化需要使用的程式碼,可以直接在 Demo 裡找到並複製使用。

這個方法建議在 Application@onCreate() 時呼叫,對於存在多個程序的應用,為避免資料異常,請務必保證這個方法只執行在其中一個程序(通常是主程序)。

```

/*

** app :Application例項

** cmGameAdInfo : 廣告id資訊

** IImageLoader: 自定義ImageLoader(實現程式碼,可以參考Demo)

** isDebug : 是否debug模式

*/

initCmGameSdk(app: Application, cmGameAdInfo: CmGameAdInfo, imageLoader: IImageLoader,isDebug: Boolean)

```

核心程式碼示例:

```

// 下面的GameSdkID和Host必須替換成小遊戲官方分配的

CmGameAppInfo cmGameAppInfo = new CmGameAppInfo();

cmGameAppInfo.setAppId("demo"); // 申請的GameSdkID

cmGameAppInfo.setAppHost("https://xyx-sdk-svc.cmcm.com"); // 申請的遊戲host地址

// 設定遊戲的廣告id

CmGameAppInfo.TTInfo ttInfo = new CmGameAppInfo.TTInfo();

ttInfo.setGameListFeedId("901121737"); // 遊戲列表,資訊流廣告,自渲染

ttInfo.setGameListExpressFeedId("901121253"); // 遊戲列表,資訊流廣告,模板渲染

ttInfo.setRewardVideoId("901121365"); // 激勵視訊

ttInfo.setFullVideoId("901121375"); // 全屏視訊,插屏場景下展示

ttInfo.setExpressInteractionId("901121133"); // 插屏廣告,模板渲染,插屏場景下展示

ttInfo.setExpressBannerId("901121159"); // Banner廣告,模板渲染,尺寸:600*150

ttInfo.setGameEndFeedAdId("901121737"); // 遊戲推薦彈框底部廣告,資訊流廣告,自渲染

ttInfo.setGameEndExpressFeedAdId("901121253"); // 遊戲推薦彈框底部廣告,資訊流廣告,模板渲染

// 遊戲列表展示時顯示,插屏廣告,模板渲染1:1

// 遊戲以tab形式的入口不要使用

ttInfo.setGamelistExpressInteractionId("901121536");

// 遊戲載入時展示,下面廣告2選1

// 插屏廣告-原生-自渲染-大圖

// 在2019-7-17後,穿山甲只針對部分媒體開放申請,如後臺無法申請到這個廣告位,則無需呼叫程式碼

ttInfo.setLoadingNativeId("901121435");

// 此廣告申請,所有媒體都可申請,遊戲載入時展示,插屏廣告1:1,模板渲染

ttInfo.setGameLoad_EXADId("901121536");

cmGameAppInfo.setTtInfo(ttInfo);

CmGameSdk.INSTANCE.initCmGameSdk(this,

cmGameAppInfo,

new com.cmcm.gamemoney_sdk.CmGameImageLoader(),

BuildConfig.DEBUG);

```

遊戲列表載入實現

```

// CmGameImageLoader 用於遊戲介面的圖片載入,可由合作方自己實現

// 下面的版本是由Glide實現的,load和into為必須實現方法,其他方法因為版本原因可靈活變通

public class CmGameImageLoader implements IImageLoader {

@Override

public void loadImage(Context context, String imageUrl, ImageView imageView, int defRsid) {

Glide.with(context)

.load(imageUrl)

.placeholder(defRsid)

.error(defRsid)

.diskCacheStrategy(DiskCacheStrategy.SOURCE)

.into(new GlideDrawableImageViewTarget(imageView));

// 建議加上placeHolder方法,否則新安裝啟動會出現閃現的情況,新版本沒有placeHolder的可以這麼寫

// RequestOptions requestOptions = new RequestOptions();

// requestOptions.placeholder(defRsid);

// Glide.with(context).load(imageUrl).apply(requestOptions).into(imageView);

}

```

setGameListFeedId 遊戲列表資訊流廣告,設定後所有廣告預設展示,如想自定義可以參考如下設定:

```

CmGameAppInfo.GameListAdInfo gameListAdInfo = new CmGameAppInfo.GameListAdInfo();

// 設定熱門推薦:預設為true,true:展示;false:不展示

gameListAdInfo.setHotGameListAdShow(true);

// 設定最新上新:預設為true,true:展示;false:不展示

gameListAdInfo.setNewGameListAdShow(true);

// 設定更多好玩:預設為true,true:展示;false:不展示

gameListAdInfo.setMoreGameListAdShow(true);

// 設定更多好玩廣告展示間隔行數:預設為間隔4行展示一個廣告

gameListAdInfo.setMoreGameListAdInternal(4);

cmGameAppInfo.setGameListAdInfo(gameListAdInfo);

```

### **2.2 遊戲遊客賬號**

如下方法,用於獲取最新遊戲資訊和生成遊戲遊客賬號,生成遊客賬號後,才能成功進入遊戲。

呼叫時機:自定義遊戲介面或者呼叫單獨遊戲,需要進入遊戲前,呼叫此方法。

使用sdk提供的預設遊戲列表,是不需要呼叫此方法,內部已經封裝呼叫。

此方法多次呼叫,不影響,但不能在後臺程序呼叫。

```

CmGameSdk.initCmGameAccount()

```

### **2.3 介面展現**

遊戲列表頁邊距,文字大小和顏色等,均可通過下面的佈局來調整。

**注意事項:

1. GameView內部含有recyclerview,外部需要巢狀<font color=#FF0000>LinearLayout</font>(高度wrap_content),同時為了巢狀滑動需要再外嵌<font color=#FF0000>NestedScrollView</font>**

```

<?xml version="1.0" encoding="utf-8"?>

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:background="#cccccc"

android:orientation="vertical"

tools:context=".Main2Activity">

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:descendantFocusability="blocksDescendants"

android:orientation="vertical">

<com.cmcm.cmgame.GameView

android:id="@+id/gameView"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingLeft="5dp"

android:paddingRight="5dp"

android:paddingTop="5dp"

android:layout_marginLeft="6dp"

android:layout_marginTop="5dp"

android:layout_marginRight="6dp"

android:layout_marginBottom="15dp"

app:cmgame_category_title_text_color="#FF222222"

app:cmgame_category_title_text_size="15sp"

app:cmgame_view_background="@drawable/bg_game_classify_view" />

</LinearLayout>

</android.support.v4.widget.NestedScrollView>

```

2. 在遊戲列表的頁面中需要例項化GameView,並呼叫GameView.inflate填充遊戲資料,具體程式碼如下:

```

// 把預設遊戲中心view新增進媒體指定介面

GameView gameTabsClassifyView = (GameView) findViewById(R.id.gameView);

gameTabsClassifyView.inflate(this);

```

執行結果:

最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 聯想真香旗艦,跌至“良心價”,驍龍855+8G運存+液冷