溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

unity集成openinstall流程

發(fā)布時(shí)間:2020-08-05 05:25:09 來(lái)源:網(wǎng)絡(luò) 閱讀:1652 作者:番茄炒番茄 欄目:游戲開(kāi)發(fā)

目的

1、Unity集成openinstall sdk?

最近在使用一個(gè)叫openinstall的SDK,通過(guò)它實(shí)現(xiàn)免填邀請(qǐng)碼的功能,集成到unity游戲開(kāi)發(fā)中。對(duì)App安裝流程的優(yōu)化,尤其是免填寫邀請(qǐng)碼安裝,App推廣的有獎(jiǎng)邀請(qǐng)活動(dòng)更大程度的達(dá)到推廣爆炸式的效果。

在分享鏈接自定義各種動(dòng)態(tài)參數(shù)(如推廣渠道號(hào),邀請(qǐng)碼,游戲房間號(hào),用戶id等等)。通過(guò)在分享鏈接url中附帶app邀請(qǐng)人的用戶id,就可達(dá)到免填邀請(qǐng)碼的效果;或者app通過(guò)在url中附帶游戲房間號(hào)實(shí)現(xiàn)直達(dá)游戲房間也可建立上下級(jí)關(guān)系;unity開(kāi)發(fā)中免不了邀請(qǐng)用戶獲得獎(jiǎng)勵(lì);新老用戶直達(dá)游戲場(chǎng)景;從各種瀏覽器一鍵拉起游戲場(chǎng)景等等;

那么如何在unity集成openinstall呢?話不多說(shuō),上圖吧~ 哈哈

2、注冊(cè)/登錄openinstall開(kāi)發(fā)者平臺(tái)http://developer.openinstall.io/并創(chuàng)建應(yīng)用

先在AndroidStudio中工作

  1. 新建工程

    只需要注意,AndroidStudio(以下簡(jiǎn)稱AS)中新建項(xiàng)目的包名和Unity發(fā)布安卓時(shí)候設(shè)置的包名要一致。

2.導(dǎo)入jar包

  將Unity路徑下的接口classes.jar導(dǎo)入到AS的libs目錄下,然后sync一下項(xiàng)目。接口包所在地:(E:\ProgramFiles\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar)

unity集成openinstall流程

unity集成openinstall流程

同樣的,到openinstall官網(wǎng)去下載openinstall_vx.x.x.jar放到AS的libs目錄下,sync一下項(xiàng)目
unity集成openinstall流程

unity集成openinstall流程

3.編寫MainActivity代碼

編寫MainActivity繼承自UnityPlayerActivity

import android.content.Intent;  
import android.os.Bundle;  
import android.util.Log;  

import com.fm.openinstall.OpenInstall;  
import com.fm.openinstall.listener.AppInstallListener;  
import com.fm.openinstall.listener.AppWakeUpAdapter;  
import com.fm.openinstall.model.AppData;  
import com.fm.openinstall.model.Error;  
import com.unity3d.player.UnityPlayer;  
import com.unity3d.player.UnityPlayerActivity;  

public class MainActivity extends UnityPlayerActivity {//1、注意修改集成的類,改成UnityPlayerActivity  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        getInstall();//個(gè)性化安裝  
        OpenInstall.getWakeUp(getIntent(), wakeUpAdapter);//獲取喚醒參數(shù)  
    }  

    @Override  
    protected void onNewIntent(Intent intent) {  
        super.onNewIntent(intent);  
        OpenInstall.getWakeUp(intent, wakeUpAdapter);  
    }  

    AppWakeUpAdapter wakeUpAdapter = new AppWakeUpAdapter() {  
        @Override  
        public void onWakeUp(final AppData appData) {  
            //獲取渠道數(shù)據(jù)  
            String channelCode = appData.getChannel();  
            //獲取綁定數(shù)據(jù)  
            String bindData = appData.getData();  
            //回調(diào)數(shù)據(jù) 對(duì)象名稱,腳本方法,返回的數(shù)據(jù)  
            UnityPlayer.UnitySendMessage("Main Camera","wakeup","data="+bindData+";channelCode="+channelCode);  

        }  
    };  

    /** 
     * 在APP需要個(gè)性化安裝參數(shù)時(shí)(由web網(wǎng)頁(yè)中傳遞過(guò)來(lái)的,如邀請(qǐng)碼、游戲房間號(hào)等自定義參數(shù)) 
     * 調(diào)用OpenInstall.getInstall方法,在回調(diào)中獲取參數(shù)(可重復(fù)獲取) 
     * 適用于免填邀請(qǐng)碼安裝,自動(dòng)加好友,渠道統(tǒng)計(jì)等安裝來(lái)源追蹤的解決方案 
     */  
    public void getInstall() {  

        //獲取OpenInstall數(shù)據(jù),去掉外層的if判斷就可以重復(fù)多次調(diào)用,推薦每次需要的時(shí)候調(diào)用,而不是自己保存數(shù)據(jù)  
            OpenInstall.getInstall(new AppInstallListener() {  
                @Override  
                public void onInstallFinish(AppData appData, Error error) {  
                    Log.d("OpenInstall ", "InstallFinish");  
                    if (error == null) {  
                        //根據(jù)自己的業(yè)務(wù)處理返回的數(shù)據(jù)  
                        String data = appData.getData();  
                        String channelCode = appData.getChannel();  
                        //回調(diào)數(shù)據(jù) 對(duì)象名稱,腳本方法,返回的數(shù)據(jù)  
                        UnityPlayer.UnitySendMessage("Main Camera","install","data="+data+";channelCode="+channelCode);  
                    } else {  
                        Log.e("MainActivity", "errorMsg : " + error.toString());  
                    }  
                }  
            });  
    }  

    //數(shù)據(jù)上報(bào)統(tǒng)計(jì)  
    public void reportRegister(){  
        OpenInstall.reportRegister();  
    }  

    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
        wakeUpAdapter = null;  
    }  

}  

4.自定義Application類 APP繼承Application并初始化
unity集成openinstall流程

  1. 修改AndroidManifest.xml
    unity集成openinstall流程

在AndroidManifest.xml中添加權(quán)限聲明,設(shè)置AppKey,配置scheme
unity集成openinstall流程

在AndroidManifest.xml中的application標(biāo)簽中添加 android:name=".App"指定自定義的Application類,以便程序啟動(dòng)的時(shí)候初始化自定義Application類,而不是系統(tǒng)默認(rèn)的Application類

unity集成openinstall流程

  1. 修改build.gradle
    unity集成openinstall流程

7.生產(chǎn)arr包

Build->Build APK成功會(huì)在app\build\outputs\aar目錄下出現(xiàn)一個(gè)app-debug.aar包(此處是debug包),然后用解壓軟件打開(kāi)這個(gè)包,刪掉libs下的classes.jar(沒(méi)錯(cuò),就是之前重unity中拷過(guò)來(lái)的) 因?yàn)閡nity打包時(shí)會(huì)重新把自帶的classes.jar打進(jìn)去,如果不刪掉它會(huì)打包報(bào)錯(cuò),沖突然后這就是最終需要的aar包,把a(bǔ)ar包解壓縮,看到classes.jar(此處的classes.jar是項(xiàng)目build出來(lái)的,不等同于AS中l(wèi)ibs文件中的classes.jar),把a(bǔ)ar包下的classes.jar和AndroidManifest.xml都放在一個(gè)地方等待在unity中使用
unity集成openinstall流程

Unity中調(diào)用

Unity新建一個(gè)工程,設(shè)置jdk,安卓的SDK。

unity集成openinstall流程

最后在Assets目錄下新建我們需要的目錄,Assets\Plugins\Android,并把AndroidManifest.xml放到里面。
unity集成openinstall流程

然后在Assets目錄下新建我們需要的目錄,Assets\Plugins\Android\libs,并把a(bǔ)ar包下的classes.jar和openinstall_vx.x.x.jar放到里面。
unity集成openinstall流程

Unity調(diào)用android方法

在Camera main中新建腳本Main.cs調(diào)用android方法(反射機(jī)制獲取android方法)

根據(jù)自己的業(yè)務(wù)需求調(diào)用方法,如

public class Main : MonoBehaviour {  
    public Text txtWakeup;  
    public Text txtInstall;  

    void Start()  
    {  
        txtWakeup = GameObject.Find("Canvas/txtWakeup").GetComponent<Text>();  
        txtInstall = GameObject.Find("Canvas/txtInstall").GetComponent<Text>();  

        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");  
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");  
        jo.Call("getInstall");  
        //jo.Call("reportRegister"); //上報(bào)注冊(cè)統(tǒng)計(jì)  
        txtWakeup.text = "喚醒參數(shù)";  
        txtInstall.text = "安裝參數(shù)";  
    }  

    //接收Android回調(diào)的數(shù)據(jù) wakeup方法  
    void wakeup(string str)  
    {  
        txtWakeup.text = str;  
    }  

    //接收Android回調(diào)的數(shù)據(jù),install方法  
    void install(string str)  
    {  
        txtInstall.text = str;  
    }  
}  

打包上傳安裝包到openinstall后臺(tái)測(cè)試:
unity集成openinstall流程

上傳apk安裝包后,可先使用openinstall提供的在線測(cè)試功能,確保app安裝后能正確還原輸入的動(dòng)態(tài)參數(shù),能正常的拉起App。
unity集成openinstall流程

注意:拿到openinstall回調(diào)數(shù)據(jù)后,具體的業(yè)務(wù)可具體處理!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI