unity集成openinstall流程
目的
1、Unity集成openinstall sdk?
最近在使用一個叫openinstall的SDK,通過它實現免填邀請碼的功能,集成到unity游戲開發中。對App安裝流程的優化,尤其是免填寫邀請碼安裝,App推廣的有獎邀請活動更大程度的達到推廣爆炸式的效果。
在分享鏈接自定義各種動態參數(如推廣渠道號,邀請碼,游戲房間號,用戶id等等)。通過在分享鏈接url中附帶app邀請人的用戶id,就可達到免填邀請碼的效果;或者app通過在url中附帶游戲房間號實現直達游戲房間也可建立上下級關系;unity開發中免不了邀請用戶獲得獎勵;新老用戶直達游戲場景;從各種瀏覽器一鍵拉起游戲場景等等;
那么如何在unity集成openinstall呢?話不多說,上圖吧~ 哈哈
2、注冊/登錄openinstall開發者平臺http://developer.openinstall.io/并創建應用
先在AndroidStudio中工作
新建工程
只需要注意,AndroidStudio(以下簡稱AS)中新建項目的包名和Unity發布安卓時候設置的包名要一致。
2.導入jar包
將Unity路徑下的接口classes.jar導入到AS的libs目錄下,然后sync一下項目。接口包所在地:(E:\ProgramFiles\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar) 復制代碼同樣的,到openinstall官網去下載openinstall_vx.x.x.jar放到AS的libs目錄下,sync一下項目
3.編寫MainActivity代碼
編寫MainActivity繼承自UnityPlayerActivity
public class MainActivityextends UnityPlayerActivity {//1、注意修改集成的類,改成UnityPlayerActivity
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.activity_main); //2、去掉這一行OpenInstall.getWakeUp(getIntent(), wakeUpAdapter);//獲取喚醒參數getInstall();//個性化安裝} 復制代碼@Override
protected void onNewIntent(Intent intent) {super.onNewIntent(intent);// 此處要調用,否則App在后臺運行時,會無法截獲OpenInstall.getWakeUp(getIntent(), wakeUpAdapter);} 復制代碼@Override
protected void onDestroy() {super.onDestroy();wakeUpAdapter =null;}/*** 在APP需要個性化安裝參數時(由web網頁中傳遞過來的,如邀請碼、游戲房間號等自定義參數)* 調用OpenInstall.getInstall方法,在回調中獲取參數(可重復獲取)* 適用于免填邀請碼安裝,自動加好友,渠道統計等安裝來源追蹤的解決方案*/ private void getInstall() {final SharedPreferences sp = getSharedPreferences("unitydemo", MODE_PRIVATE);boolean isInstall = sp.getBoolean("unityFirst", true);//是否需要多次調用getInstall獲取參數Log.d("openinstall", "getInstall");//獲取OpenInstall數據,去掉外層的if判斷就可以重復多次調用,推薦每次需要的時候調用,而不是自己保存數據if (isInstall) {OpenInstall.getInstall(new AppInstallListener() {@Overridepublic void onInstallFinish(AppData appData, Error error) {Log.d("OpenInstall ", "InstallFinish");if (error == null) {//根據自己的業務處理返回的數據// 此處保存到本地,方便給unity調用sp.edit().putString("unityinstall", appData.toString()).apply();//使用數據后,不想再調用,將unityFirst設置為falsesp.edit().putBoolean("unityFirst", false).apply();Toast.makeText(MainActivity.this, "getInstall:" + appData.toString(), Toast.LENGTH_SHORT).show();Log.d("getInstall:", "" + appData.toString());} else {Log.e("MainActivity", "errorMsg : " + error.toString());}}});} } 復制代碼AppWakeUpAdapter wakeUpAdapter = new AppWakeUpAdapter() { @Override public void onWakeUp(final AppData appData) { //獲取渠道數據 String channelCode = appData.getChannel(); //獲取綁定數據 String bindData = appData.getData(); Log.d("OpenInstall", "getWakeUp : wakeupData = " + appData.toString());
//根據自己的業務處理返回的數據// 此處保存到本地,方便給unity調用final SharedPreferences sp = getSharedPreferences("unitydemo", MODE_PRIVATE);sp.edit().putString("unitywakeup", appData.toString()).apply();} }; 復制代碼/** * 添加一個方法用于給unity調用 */ public String ShowWakeup() { final SharedPreferences sp = getSharedPreferences("unitydemo", MODE_PRIVATE); return sp.getString("unitywakeup", null); }
public String ShowInstall() {final SharedPreferences sp = getSharedPreferences("unitydemo", MODE_PRIVATE);return sp.getString("unityinstall", null); }public void reportRegister() {/*如需統計每個渠道的注冊量(對評估渠道質量很重要),可根據自身的業務規則,在確保用戶完成app注冊的情況下,調用OpenInstall.reportRegister()上報注冊量。*/OpenInstall.reportRegister();Log.d("Openinstall ", "success");} 復制代碼4.自定義Application類 APP繼承Application并初始化
在AndroidManifest.xml中添加權限聲明,設置AppKey,配置scheme
配置AndroidManifest.xml 在AndroidManifest.xml中的application標簽中添加 android:name=".App"指定自定義的Application類,以便程序啟動的時候初始化自定義Application類,而不是系統默認的Application類
自定義APP 6. 修改build.gradle
修改build.gradle 7.生產arr包
Build->Build APK成功會在app\build\outputs\aar目錄下出現一個app-debug.aar包(此處是debug包),然后用解壓軟件打開這個包,刪掉libs下的classes.jar(沒錯,就是之前重unity中拷過來的) 因為unity打包時會重新把自帶的classes.jar打進去,如果不刪掉它會打包報錯,沖突然后這就是最終需要的aar包,把aar包解壓縮,看到classes.jar(此處的classes.jar是項目build出來的,不等同于AS中libs文件中的classes.jar),把aar包下的classes.jar和AndroidManifest.xml都放在一個地方等待在unity中使用
成功導出arr包并解壓出classes.jar
Unity中調用
Unity新建一個工程,設置jdk,安卓的SDK。
設置SDK,JDK 然后在Assets目錄下新建我們需要的目錄,Assets\Plugins\Android,并把AndroidManifest.xml放到里面。
導入AndroidManifest.xml
然后在Assets目錄下新建我們需要的目錄,Assets\Plugins\Android\libs,并把aar包下的classes.jar和openinstall_vx.x.x.jar放到里面。
放置jar Unity調用android方法
新建腳本AndroidNative.cs調用android方法(反射機制獲取android方法)
根據自己的業務需求調用方法,如
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic("currentActivity"); string data =jo.Call("ShowWakeup"); 打包上傳安裝包到openinstall后臺測試:
上傳安裝包 上傳apk安裝包后,可先使用openinstall提供的在線測試功能,確保app安裝后能正確還原輸入的動態參數,能正常的拉起App。
測試 注意:拿到openinstall回調數據后,具體的業務可具體處理!
總結
以上是生活随笔為你收集整理的unity集成openinstall流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的Spring 之旅---Spring
- 下一篇: 响应式微服务 in java 译 十五