Integración EMMA Android SDK en UNITY


Para integrar EMMA Android SDK en tu proyecto UNITY sigue los siguientes pasos.

Paso 1. Plugin TrackEvent

  1. La primera fase del proceso es crear un plugin en Android studio para que tenga la función de trackEvent, para ello lo primero editaremos el gradle de la siguiente forma para que importe las librerías necesarias y para configurar el proyecto como librería y no como app. Por ejemplo:





  2. Revisa el manifest para que quede de la siguiente forma:


  3. A continuación crea una clase singelton con la función trackEvent de la siguiente forma:

  4. Finalmente compila para generar el .JAR

 

 

Paso 2. Estructura de carpetas y manifest

  1. Ahora dentro de unity hay que crear la siguiente ruta de carpetas /Plugins/Android (en el caso que no exista) y importar el plugin creado anteriormente, un .jar de eMMaSDK.




  2. Después hay que crear un manifest dentro de la carpeta con el siguiente codigo:

    <?xml version="1.0" encoding="utf-8"?>

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.my.package" android:versionName="1.01" android:versionCode="1" android:installLocation="preferExternal">

    <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />

    <application android:theme="@style/UnityThemeSelector" android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="false" android:isGame="true" android:banner="@drawable/app_banner">

    <activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name" android:screenOrientation="sensorLandscape" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale">

       <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
          <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
       </intent-filter>

       <meta-data android:name="unityplayer.UnityActivity" android:value="true" />

    </activity>

    <
    service android:name="com.google.analytics.tracking.android.CampaignTrackingService" />

    <receiver android:name="com.google.analytics.tracking.android.CampaignTrackingReceiver" android:exported="true">

       <intent-filter>
          <action android:name="com.android.vending.INSTALL_REFERRER" />
       </intent-filter>

    </receiver>

    <!-- Esto es de emma-->

    <receiver android:name="com.emma.android.eMMaReferralReceiver" android:exported="true">

       <intent-filter>
          <
    action android:name="com.android.vending.INSTALL_REFERRER"/>
       </intent-filter>

    </receiver>

    <!-- Fin esto es de emma-->

    </application>

    <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="23" />
    <uses-feature android:glEsVersion="0x00020000" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-feature android:name="android.hardware.touchscreen" android:required="false" /><uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" />
    <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" />

    <
    !-- Esto es de emma-->

    <permission android:name="com.my.package.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="com.my.package.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /><uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <!-- Fin esto es de emma-->

    </manifest>

  3. A continuación crea el siguiente script en unity para poder llamar los trackevents del plugin generado en el paso 1.

    using UnityEngine;
    using System.Collections;

    public class eMMaTracker : MonoBehaviour {

       private AndroidJavaObject aplication;
       private AndroidJavaObject activityContext = null;
       private AndroidJavaObject emmaControllerJava = null;

       public static eMMaTracker instance = null;

       void Awake() {
          if (instance == null) instance = this;
          else if (instance != this) Destroy(gameObject);
          DontDestroyOnLoad(gameObject);
       }

       // Use this for initialization

       void Start() {
       using (AndroidJavaClass activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
          {
             activityContext = activityClass.GetStatic<AndroidJavaObject>("currentActivity");
             aplication = activityContext.Call<AndroidJavaObject>("getApplication");
          }
          using (AndroidJavaClass pluginClass = new AndroidJavaClass("com.bemobile.emmaunity.EmmaController"))
          {
             if (pluginClass != null) {
                emmaControllerJava = pluginClass.CallStatic<AndroidJavaObject>("instance");
             }
          }
         
          GameMuted ();

       } 

  4. Esta funcion es la que hay que llamar en otros scripts de unity para trackear un evento

    private void trackEvent(string eMMaevent) {

       emmaControllerJava.Call("trackEvent", activityContext);
    }

  5. Después hay que añadir el script dentro un gameobject de la scena en la que estamos trabajando para que otros scripts puedan acceder a la funcion trackevent.



  6. Una vez que se han llamado en otros scripts la funcion trackevent se tiene que exportar el proyecto como google android project de la siguiente forma:



Paso 3. Generación del APK

  1.  Elimina el support y el cardview del settings.gradle del proyecto (en el caso de que aparezcan)

  2. En el build.gradle del proyecto tiene que quedar de la siguiente forma:





  3. Después, en la activity UnityPlayerActivity añade lo siguiente:

  1. Eliminar la siguiente linea del manifest  android:debuggable="false" 
  1. Finalmente, hacer la apk

  2. ¡Listo! Tu proyecto ya puede usar EMMA.
¿Tiene más preguntas? Enviar una solicitud

0 Comentarios

Inicie sesión para dejar un comentario.