LovinJoy给您开通产品服务后,会提供一个超级管理员账号,登录https://datatower.ai/ 可以创建项目
登录后,进入项目设置
切换到系统设置,点击创建项目
输入项目名称,如:simple_android
创建成功后可以看到APP_ID
记下APP_ID,初始化SDK会用到
在项目根目录下 build.gradle 文件中添加 mavenCentral
仓库
allprojects {
repositories {
...
mavenCentral()
jcenter()
maven { url 'https://www.jitpack.io' }
}
}
在项目主工程目录下 build.gradle 文件中添加 SDK 依赖
android{
compileSdkVersion 31 //自1.2.44 版本开始,应用编译版本需>=31
}
dependencies {
...
implementation 'com.lovinjoy:datatowerai-core:1.2.50'
}
在Application初始化SDK
//填入上一步申请到的APP_ID
ROIQuery.initSDK(this, "app id")
调用track()方法来自定义一个事件,并自动上报
HashMap<String, Object> properties = new HashMap<>();
properties.put("test_property_3", false);
properties.put("test_property_4", 2.3);
ROIQueryAnalytics.track("test_track", properties);
// or 不传属性
ROIQueryAnalytics.track("test_track");
SDK 内置了一些有关广告相关的行为事件,可供开发者在收到广告SDK回调时,通过调用相关的接口进行上报,用于分析广告相关的信息
插页广告的过程作为演示
/*
* 一次展示Admob插页广告的过程
*/
//广告位,比如这页面是主页
val location = "main"
//Admob 广告单元
val adUnit = "ca-app-pub-3940256099942544/1033173712"
//整个过程的行为系列标识
var seq = ROIQueryAdReport.generateUUID()
//1.Admob 开始加载广告
AdManager.loadInterstitialAd(this, adUnit);
//2.即将展示广告
ROIQueryAdReport.reportToShow(adUnit, AdType.INTERSTITIAL, AdPlatform.ADMOB, location, seq)
//3.展示广告
AdManager.showInterstitialAd(object: OnAdShowCallback(){
override fun onAdShowed(){
//4. 广告展示成功
ROIQueryAdReport.reportShow(adUnit, AdType.INTERSTITIAL, AdPlatform.ADMOB, location,seq)
}
override fun onAdFailedToShow(adError: AdError){
//5. 广告展示失败
ROIQueryAdReport.reportShowFailed(adUnit, AdType.INTERSTITIAL, AdPlatform.ADMOB, location, seq, adError.code, adError.msg)
}
override fun onAdClicked(){
//6. 广告被点击
ROIQueryAdReport.reportClick(adUnit, AdType.INTERSTITIAL, AdPlatform.ADMOB, location, seq)
ROIQueryAdReport.reportConversionByClick(adUnit, AdType.INTERSTITIAL, AdPlatform.ADMOB, location, seq)
}
override fun onAdClosed(){
//7. 广告关闭
ROIQueryAdReport.reportClose(adUnit, AdType.INTERSTITIAL, AdPlatform.ADMOB, location, seq)
}
override fun onAdRevenuePaid(ad: AdInfo){
//8. 广告用户层级展示数据
val value = ad.getValue() //广告的价值
val currency = ad.getCurrency() //货币
val precision = ad.getPrecision() // 精确度
ROIQueryAdReport.reportPaid(adUnit, AdType.INTERSTITIAL, AdPlatform.ADMOB, location, seq, value, currency, precision)
}
})
对于激励广告,会有获得激励回调
override fun onAdRewared(){
ROIQueryAdReport.reportRewared(adUnit, AdType.REWARDED, AdPlatform.ADMOB, location, seq)
ROIQueryAdReport.reportConversionByRewared(adUnit, AdType.REWARDED, AdPlatform.ADMOB, location, seq)
}
由于聚合广告平台展示广告的时候,没有返回具体是哪个广告平台的广告,所以需要在回调中判断,如onAdShowed回调
//聚合广告平台一般会返回广告相关的信息 AdInfo
override fun onAdShowed(ad: AdInfo){
//需自行实现 getAdPlatform() 、getAdUnit()方法
val adPlatform = getAdPlatform(ad)
val adUnit = getAdUnit(ad)
//4. 广告展示成功
ROIQueryAdReport.reportShow(adUnit, AdType.INTERSTITIAL,adPlatform,location, seq)
}
其他回调类似