## 關于SDK文件
```
主要文件有2個:
1、moosnow.conf.js文件為id配置文件(游戲AppId、廣告id),游戲AppId——moosnowAppId必須配置;debug字段填寫所屬游戲平臺;
2、moosnow.platform.sdk.js,代碼文件,主要包括各個平臺的廣告組件顯示隱藏,后臺數據獲取;
3、其他文件皆為提示文件;
```
### 第一步 在游戲開始時調用平臺登陸
```js
moosnow.platform.login(() => {
console.log('登錄成功 ')
})
```
### 第二步 在游戲Loading結束時
```js
moosnow.http.finishLoading();
```
## 游戲版本檢查 目前OPPO平臺需要使用 微信可以不使用
```js
/**
* 檢查當前版本的導出廣告是否開啟
* @param {string} version 版本號 為了兼容舊版本SDK的參數,目前已無作用,SDK會取moosnowConfig 中的version 來判斷
* @param {*} callback
* @returns callback回調函數的參數為boolean,true:打開廣告,false:關閉廣告
*/
moosnow.platform.checkVersion("", (res)=>{
})
```
### 獲取廣告
```js
/**
*
*/
moosnow.ad.getAd((res) => {
console.log('廣告數據 ',res)
})
```
moosnowResult 結構如下圖

目前的廣告僅有indexLeft數據,其他請忽略
## 廣告跳轉
```js
var btn=new Button();
/* 跳轉傳入參數結構
var navigateData={
appid:"",
boxAppid:"",
desc:"",
img:"",
path:"",
title:""
}
*///導出頁 跳轉到 第1個app,這個是示例 , 請根據實際情況填寫
var navigateData=moosnowResult.exportPage[0]
btn.on("click",function(){
//將會跳轉到navigateData.appid 的小app, 注意!!! 不要再使用wx.navigateToMiniProgram
moosnow.platform.navigate2Mini(navigateData,(res)=>{
console.log('跳轉成功 ',res)
},(res)=>{
console.log('跳轉失敗 ',res)
})
})
```
## 微信平臺 上報開始游戲,結束游戲
```js
/**
* 統計開始游戲
* @param level 關卡數 必須是1 || 2 || 1.1 || 12.2 格式
*/
moosnow.http.startGame("1")
/**
* 統計結束游戲
* @param level 關卡數 必須是1 || 2 || 1.1 || 12.2 格式
* @param isWin 是否成功
*/
moosnow.http.endGame("1", true)
```
## 微信平臺 上報視頻廣告數據
```js
/**
* 視頻統計
* @param type 0:視頻點擊 1:視頻觀看完成
* @param info 信息 ex:“領取三倍金幣”
* @param level 關卡數 沒有請填”0”
*/
moosnow.http.videoPoint(0, “領取三倍金幣”, “1”)
```
注意:點擊之后上報一次,type=0,觀看完視頻后應再上報一次,type=1。
## 微信平臺 其他打點
```js
moosnow.http.point('分享三倍')
```
## 獲取所有配置項
```js
moosnow.http.getAllConfig(res => {
console.log('游戲的所有配置數據 ',res)
})
```
### getAllConfig常用參數說明
| 字段名稱 | 開關控制描述 | 是否受地區屏蔽影響 |
| --- | --- |--- |
| exportAutoNavigate | 是否自動喚起跳轉(強導) 0 關閉 1 開啟 | 是 |
| exportBtnNavigate| 導出頁按鈕是否隨機跳轉 | 是 |
| mistouchPosNum | 位移誤觸,一般用于控制UI的移動 | 是 |
| mistouchInterval| 誤觸開啟的間隔,一般用于選關時的誤觸,每幾關來一次 | 是 |
| delayShow | 延遲顯示的時間 單位(秒) ,0 是立即顯示 | 否 |
| isLimitArea | 是否屬于屏蔽地區 1 是 0 不是 | 是 |
| checkBoxProbabilitys | checkbox 誤觸概率 | 是 |
| checkBoxMistouch | 多選框是否開啟誤觸 | 是 |
| nativeAdCloseOpenV | 原生廣告 小型按鈕點擊誤觸廣告的概率 0 是正常關閉 50 是50%概率打開廣告 100 是打開廣告 | 是 |
| showNativeAdV | 多選框是否開啟誤觸 | 是 |
## 獲取誤點次數間隔
```js
/**
* 獲取誤點間隔次數,啟動游戲時調用
* @param callback 回調參數為misTouchNum:int,當misTouchNum=0時關閉誤點,
當misTouchNum=1時,每次都觸發誤點(即當misTouchNum=n(0除外)時,每 隔n次,觸發誤點1次)
*/
var misTouchNum = 0;
moosnow.http.getMisTouchNum((res) => {
misTouchNum = res; //誤點次數間隔
})
```
## 獲取位移次數間隔
```js
/**
* 獲取位移間隔次數,啟動游戲時調用
* @param callback 回調參數為misTouchPosNum :int,當misTouchPosNum =0時關閉位移誤點,
當misTouchPosNum =1時,每次都觸發誤點(即當misTouchPosNum =n(0除外)時,每 隔n次,觸發位移1次)
*/
var misTouchPosNum = 0;
moosnow.http.getMistouchPosNum((res) => {
misTouchPosNum = res; //位移次數間隔
})
```
## 獲取所有配置項
```js
moosnow.http.getAllConfig(res => {
console.log('游戲的所有配置數據 ',res)
})
```
## 顯示平臺banner廣告
```js
//注意事項:豎版游戲在傳入底部居中位置時,位置參數horizontal?請傳moosnow.BANNER_HORIZONTAL.LEFT
/**
??????*?顯示平臺的banner廣告
??????*?@param remoteOn?是否被后臺開關控制?默認?true,誤觸的地方傳?true??普通的地方傳?false
??????*?@param callback?點擊回調
??????*?@param horizontal?banner的位置,默認底部
??????*?@param vertical?banner的位置,默認底部
??????*?@param idIndex?id順序?-1?會隨機
??????*?@param style?自定義樣式
??????*/
moosnow.platform.showBanner(true,(isOpend)=>{
//目前僅支持微信平臺
console.log('用戶是否點擊了banner ',isOpend)
},moosnow.BANNER_HORIZONTAL.CENTER,?moosnow.BANNER_VERTICAL.BOTTOM);
```
## 隱藏平臺banner廣告
```js
moosnow.platform.hideBanner();
```
## 微信平臺 自動刷banner,為了提高曝光量,減少點擊率,防止被封殺
```js
//在進入游戲后,調用一次該方法,該方法會展示banner ,并自動關閉
moosnow.platform.showAutoBanner();
```
## 定時開啟和關閉banner ,跟運營確認是否需要此功能
```js
//開始定時刷新banner 默認20秒, 具體時間由運營人員定
moosnow.platform.showIntervalBanner();
//清除定時任務
moosnow.platform.clearIntervalBanner();
```
## 顯示平臺video廣告
```js
moosnow.platform.showVideo(res => {
switch (res) {
case moosnow.VIDEO_STATUS.NOTEND:
console.log('視頻未觀看完成 ')
break;
case moosnow.VIDEO_STATUS.ERR:
console.log('獲取視頻錯誤 ')
break;
case moosnow.VIDEO_STATUS.END:
console.log('觀看視頻結束 ')
default:
break;
}
})
```
## OPPO,VIVO平臺特有的 原生廣告
展示原生廣告前
```
//會使用 moosnow.conf.js 中的 version ,請將你的版本號告知運營或策劃
moosnow.platform.checkVersion("",(show)=>{
if(show)
{
//顯示原生廣告
}
})
```
## 下面有一個使用案例提供參考
```js
/**
* 需要用戶獲取數據后自己來展示在頁面上
* 注意:不要在頁面初始化的時候調用,OPPO會提示廣告請求太頻繁 ,拿不到數據
*/
moosnow.platform.showNativeAd((row) => {
if (row && row.imgUrlList && row.imgUrlList.length > 0) {
cc.loader.load(row.imgUrlList[0], (err, tex: cc.Texture2D) => {
if (err)
return;
console.log('native img url ', tex.url)
let spriteFrame = new cc.SpriteFrame(tex);
this.logo.spriteFrame = spriteFrame
})
}
});
/**
* 當判斷用戶點擊到廣告時,調用這個函數
*/
moosnow.platform.clickNative();
```
## 原生廣告需要用到的開關
| 字段名 | 描述 |
| --- | --- |
| mx_native_click_switch | 原生廣告誤觸開關,只關系到按鈕文字及點擊邏輯,0 顯示 點擊跳過 1 顯示 點擊查看 |
| mx_jump_switch | 導出誤觸開關 0/1 ( 僅 OPPO ) |

## 字節跳動的視頻錄制
### 開始錄制
```js
moosnow.platform.startRecord(300,(e)=>{
console.log('是否是抖音', e)
});
```
### 視頻精彩剪切(可選)
```js
//記錄精彩的視頻片段,調用時必須是正在錄屏,以調用時的錄屏時刻為基準,指定前 2 秒,后 2 秒為將要裁剪的片段,可以多次調用
moosnow.platform.clipRecord();
```
### 停止錄制
```js
moosnow.platform.stopRecord((res) => {
if (res.videoPath) {
//錄制的視頻路徑
this.videoPath = res.videoPath;
// setTimeout(() => {
// this.shareRecord();
// }, 200);
}
});
```
### 分享錄制的視頻
#### **分享視頻是錄屏必須已經停止**
```js
//這個是默認的分享,如果有特別需求,可以自己調用頭條API
//分享視頻是錄屏必須已經停止
//moosnow.platform.stopRecord((res) => {
// if (res.videoPath) {
// //錄制的視頻路徑
// this.videoPath = res.videoPath;
// moosnow.platform.share({
// channel: moosnow.SHARE_CHANNEL.VIDEO
// }, (res) => {
// console.log('分享結束', res)
// });
// }
//});
/**
* 分享
* @param query 分享參數 { channel:moosnow.SHARE_CHANNEL.LINK }
* SHARE_CHANNEL.LINK, SHARE_CHANNEL.ARTICLE, SHARE_CHANNEL.TOKEN, SHARE_CHANNEL.VIDEO 可選 僅字節跳動有效
* @param callback 分享成功回調參數 = true, 分享失敗回調參數 = false,
* @param shortCall 時間過短時回調 ,err 是具體錯誤信息,目前只在頭條分享錄屏時用到
*/
moosnow.platform.share({
channel: moosnow.SHARE_CHANNEL.VIDEO
}, (res) => {
console.log('分享結束', res)
}, (res) => {
//僅iphone 會有 安卓時間太短會喚起錄像功能
console.log('錄屏時間太短', res)
});
```
## 關于平臺判斷 SDK做了一套平臺判斷的方法,屬于精準判斷
## 在PC調試階段會受 moosnow.conf.js 中的 debug 的影響
```js
let curPlatform = moosnow.getAppPlatform();
//頭條
if (curPlatform == moosnow.APP_PLATFORM.BYTEDANCE)
{
}
//OPPO
if (curPlatform == moosnow.APP_PLATFORM.OPPO||curPlatform == moosnow.APP_PLATFORM.OPPO_ZS)
{
}
//QQ
if (curPlatform == moosnow.APP_PLATFORM.QQ)
{
}
//WX
if (curPlatform == moosnow.APP_PLATFORM.WX)
{
}
```
## QQ平臺 和 頭條平臺 的盒子廣告
```js
/**
* 盒子廣告
* @param callback 關閉回調
* @param remoteOn 被后臺開關控制 一般首頁傳 false 需要誤觸的地方傳true
*/
moosnow.platform.showAppBox((res) => {
//res ==-1 表示后臺沒有開啟功能 res==0 表示用戶主動關閉了盒子
console.log('關閉盒子')
},false);
```
## 手機震動
```js
//短震動
moosnow.platform.vibrateShort()
//長震動
moosnow.platform.vibrateLong()
```
## 看視頻時背景音樂會播放處理 (目前只發現VIVO平臺有此情況)
```js
moosnow.event.addListener(moosnow.PLATFORM_EVENT.ON_PLATFORM_HIDE,?this,?(res)?=>?{
console.log('game?state??ON_PLATFORM_HIDE?',?res)
moosnow.event.sendEventImmediately(EventType.GAME_STATE_PAUSE,?null);
Lite.audio.pauseMusic();
})
moosnow.event.addListener(moosnow.PLATFORM_EVENT.ON_PLATFORM_SHOW,?this,?(res)?=>?{
console.log('game?state??ON_PLATFORM_SHOW?',?res)
moosnow.event.sendEventImmediately(EventType.GAME_STATE_RESUME,?null);
if?(!moosnow.platform.videoPlaying)
Lite.audio.resumeMusic();
??})
```
## OPPO平臺橫幅廣告和九宮格廣告
```js
//九宮格廣告
moosnow.platform.showGamePortalAd();
//橫幅廣告
moosnow.platform.showGameBannerAd();
```
## 手Q平臺積木廣告
```js
/**
??????*?顯示積木廣告
??????*?@param horizontal banner的位置,默認劇中
??????*?@param vertical?banner的位置,默認頂部
??????*?@param orientation 顯示樣式,默認值 1是水平,其他值是豎直
??????*?@param size 顯示數量 默認5個
??????*/
moosnow.platform.showBlock(moosnow.BLOCK_HORIZONTAL.LEFT,?moosnow.BLOCK_VERTICAL.TOP,?2);
//關閉積木廣告
moosnow.platform.hideBlock();