Android Studio 接入 Adjust - 快速入门

快速入门

添加 SDK 至您的项目

添加下行到您的 build.gradle 文件:

implementation 'com.adjust.sdk:adjust-android:4.28.7'
implementation 'com.android.installreferrer:installreferrer:2.2'

点击同步

添加权限

Adjust SDK 需要下列权限。如果尚未添加,请将权限加入您的 AndroidManifest.xml 文件中:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

Proguard 设置

如果您使用的是 Proguard,请将如下代码行添加至您的 Proguard 文件:

-keep class com.adjust.sdk.**{ *; }
-keep public class com.android.installreferrer.** { *; }

 初始化Adjust

找到您的 Activity 文件 以下我们以 UnityPlayerActivity 为例

//Adjust
import com.adjust.sdk.Adjust;
import com.adjust.sdk.AdjustConfig;

初始化代码

  public static final String ADJUST_TAG = "ADJUST";
  
  //Adjust Init
  public void AdjustInit(){

        String appToken = "{ Your AppToken }";
        String environment = AdjustConfig.ENVIRONMENT_PRODUCTION;      //AdjustConfig.ENVIRONMENT_SANDBOX;  AdjustConfig.ENVIRONMENT_PRODUCTION;
        AdjustConfig config = new AdjustConfig(this, appToken, environment);
        Adjust.onCreate(config);
    }
在 onCreate 方法内调用

AdjustEvent事件方法

 public void AdjustEvent(String event){

        AdjustEvent adjustEvent = new AdjustEvent(event);

        Adjust.trackEvent(adjustEvent);

        Log.d(ADJUST_TAG,event);
  }

到此 Android Studio 里的环境已部署完成 

下面是 C# 代码 如何去调用  AdjustEvent 方法 传递事件

AdjustEvent方法 封装 - 以C#案例

    public void SendEvent(string evt )
    {
 
#if !UNITY_EDITOR
 
        
        var javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        var javaObject = javaClass.GetStatic<AndroidJavaObject>("currentActivity");
        
        javaObject.Call<string>("AdjustEvent", evt );
 
 
#endif
    }

题外话:

我们通过Java的反射原理来获取本来导入class.jar类才能引用到的com.unity3d.player.UnityPlayer包下的currentActivity上下文。同理给unity发消息也是反射原理

反射的开销还是蛮大的  所以 推荐Unity里的所有事件 封装一个接口调用  在AndroidStudio里 做区分   

案例:

这里我们把GA的事件 拆出来 给 Adjust 派发 这样每次事件只需要调用一次 即可

GA的事件 是由 : 组成的        

我们只需要将其中的 event拿到就行 这里用字符串的方法 Split 

优化:

当然 你也可以对 整个事件流做降压处理 在网络差的情况下 效果显著

我这里使用的方法是 一个栈  和 一个定时器 来完成  

原理 是每次 有事件来的时候 不会立即Send 而是会压入栈中  定时器会每隔200ms 进行派发栈中的消息   当然你可以采用队列来实现这一功能

优化:  新事件调用时 检测 在栈元素为空的时候  开启定时器 并 入栈 否则 只是简单的压入栈中

派发时: 检测 栈元素为空的时候 cancel定时器

Guess you like

Origin blog.csdn.net/qq_39162566/article/details/121348764