1. 程式人生 > >Unity android 接有米廣告和分享功能

Unity android 接有米廣告和分享功能

有一段時間沒有寫部落格了,最近在研究了有米廣告的接入和分享的功能,準備新增到遊戲當中,過程中遇到些許的問題,所以想分享出來,希望後來者能少走一些彎路!
首先我說說有米廣告吧!
首先你去有米的官網下載最新的sdk,一般來說你下載的SDK裡面會有一個Demo和安裝包還有說明文件,裡面應該會有一個Unity的Demo。然後你新建一個工程,開啟這個Demo,然後執行測試,如果沒有問題,就好了,一般來說,是不會有什麼問題的,畢竟是官方的包。然後最重要的是,你把你需要新增廣告的工程匯出一個包來,然後匯入到你剛剛測試沒有問題的Demo裡面。我的是這樣的這裡寫圖片描述
然後開啟裡面的指令碼YoumiU3dDemo你可以看到各種在Unity3d 下面的呼叫方法,只有你那裡需要用到就寫到哪裡。`using UnityEngine;
using System.Collections;

public class YoumiU3dDemo : MonoBehaviour {

AndroidJavaClass mJc;
AndroidJavaObject mJo;
private int mPoints; 

// 更新積分,這個方法在Android專案中呼叫
void UpdatePoints(string points) {
    this.mPoints = int.Parse(points);
}

void OnGUI(){
    GUILayout.Label("Youmi Unity3d Demo");
    GUILayout.Label("Current Points: "+mPoints);

    // 呼叫Android工程提供的api——展示插屏廣告
    if(GUILayout.Button("Show Spot",GUILayout.Height(100))){
        mJo.Call("showSpot"); 
    }

    // 呼叫Android工程提供的api——展示視訊廣告
    if (GUILayout.Button ("Show Video", GUILayout.Height (100))) {
        mJo.Call("showVideo");
    }

    // 呼叫Android工程提供的api——展示全屏積分牆
    if(GUILayout.Button("Show Offers",GUILayout.Height(100))){
        mJo.Call("showOffers"); 
    }

    // 呼叫Android工程提供的api——展示對話方塊積分牆
    if(GUILayout.Button("Show Offers Dialog",GUILayout.Height(100))){
        mJo.Call("showOffersDialog"); 
    }

    // 呼叫Android工程提供的api——展查詢積分
    if(GUILayout.Button("Query Points",GUILayout.Height(100))){
        this.mPoints=mJo.Call<int>("queryPoints");
    }

    // 呼叫Android工程提供的api——獎勵10積分
    if(GUILayout.Button("Award 10 Points",GUILayout.Height(100))){
        if(mJo.Call<bool>("awardPoints",10)){
            this.mPoints=mJo.Call<int>("queryPoints");  
        }
    }

    // 呼叫Android工程提供的api——消耗5積分
    if(GUILayout.Button("Spend 5 Points",GUILayout.Height(100))){
        if(mJo.Call<bool>("spendPoints",5)){ 
            this.mPoints=mJo.Call<int>("queryPoints"); 
        }
    }                

    if(GUILayout.Button("Exit",GUILayout.Height(100))){
        Application.Quit(); 
    }
}

void Start () {
    mJc=new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    mJo=mJc.GetStatic<AndroidJavaObject>("currentActivity");
    mJo.Call("showBanner");    
}

void Update () {
    if(Input.GetKeyDown(KeyCode.Escape)){
        // 如果開發者使用了插屏廣告,那麼當按返回鍵的時候,邏輯應該如下:
        // 1、如果插屏廣告在展示時,返回鍵應該先關閉正在展示的插屏廣告,在按一次返回鍵才執行開發者自己的邏輯(如:退出應用)
        // 2、如果插屏廣告沒有在展示時,就進行自己的邏輯(如:退出應用等)

        // 當插屏廣告已經消失了,就執行後續邏輯(這裡為退出應用)
        // Android示例專案中定義0為返回鍵
        if (mJo.Call<bool>("closeSpot", 0) == true) {
            Application.Quit(); 
        }
    }
    if(Input.GetKeyDown(KeyCode.Home)){
        // 按Home鍵時,呼叫嘗試關閉插屏廣告的程式碼,開發者可以實現後續邏輯
        // Android示例專案中定義1為Home鍵
        if (mJo.Call<bool>("closeSpot", 1) == true) {

        }
    }
}

}
`比如說我這個按鈕下面需要用到,點選這個按鈕顯示插屏廣告

     AndroidJavaClass mJc;
    AndroidJavaObject mJo;

   mJc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        mJo = mJc.GetStatic<AndroidJavaObject>("currentActivity");
        mJo.Call("showBanner");    

           mJo.Call("closeSpot");//呼叫插屏廣告

需要注意的是你需要開啟有米給的一個Android 工程,修改裡面的引數,然後到處jar包,然後匯入到Unity裡面,才能呼叫上面的方法!下面是Android的工程,這裡寫圖片描述
開啟MinaActicity 的指令碼

`
AdManager.getInstance(this).init("f5e4c5b8d12e622b", "5bf3a64aa4a1afda", false);
這裡填入有米廣告申請的appID 和 appSecret;
有的可能需要修改androidManifest的檔案的配置,這裡應該是修改好的!不需要修改只需要修改指令碼就好。然後匯入jar包匯入Unity當中!然後測試就沒有問題了!注意的是到處包的時候不要資原始檔!就是不要把R檔案打包,如果打包會導致釋出的時候資源衝突!明天說分享的SDK