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