通过在Android Studio工程build.gradle配置脚本中添加maven线上依赖,导入最新版本统计SDK。
在工程build.gradle配置脚本中allprojects段中添加统计SDK maven仓库地址。
如果你的项目 Gradle 配置是在 7.0 以下,需要在 build.gradle 文件中加入:
allprojects {
repositories {
maven {
url = "http://coding.nineton.cn/api/v4/projects/404/packages/maven"
allowInsecureProtocol true
credentials(HttpHeaderCredentials.class) {
name = "Private-Token"
value = "glpat-sZXKypAo5hSYFm9wp5Fy"
}
authentication {
header(HttpHeaderAuthentication.class)
}
}
google()
jcenter()
mavenCentral()
maven { url "https://jitpack.io" }
}
}
如果你的 Gradle 配置是 7.0 及以上,可能需要在 settings.gradle 文件中加入:
Groovy
dependencyResolutionManagement {
repositories {
maven {
url = "http://coding.nineton.cn/api/v4/projects/404/packages/maven"
allowInsecureProtocol true
credentials(HttpHeaderCredentials.class) {
name = "Private-Token"
value = "glpat-sZXKypAo5hSYFm9wp5Fy"
}
authentication {
header(HttpHeaderAuthentication.class)
}
}
google()
jcenter()
mavenCentral()
maven { url "https://jitpack.io" }
}
}
Kotlin
dependencyResolutionManagement {
repositories {
maven("http://coding.nineton.cn/api/v4/projects/404/packages/maven") {
isAllowInsecureProtocol = true
credentials(HttpHeaderCredentials::class) {
name = "Private-Token"
value = "glpat-sZXKypAo5hSYFm9wp5Fy"
}
authentication {
create("header")
}
}
google()
jcenter()
mavenCentral()
maven("https://jitpack.io")
}
}
在工程App 对应build.gradle配置脚本dependencies段中添加统计SDK库:
dependencies {
implementation("com.smart.analytics.sdk:SmartAnalytics:2.1.3")
}
在用户阅读您的《隐私政策》并取得用户授权之后,才调用正式初始化函数SmartAnalytics.init()初始化统计SDK,此时SDK才会真正采集设备信息并上报数据。反之,如果用户不同意《隐私政策》授权,则不能调用SmartAnalytics.init()初始化函数。 一旦App获取到《隐私政策》的用户授权,后续的App冷启动,开发者应该保证在Application.onCreate函数中调用初始化函数SmartAnalytics.init()。
val initConfig = AnalyticsInitConfig(
appId = "您申请的appid",
appKey = "您申请的appkey",
channel = ChannelConfig.BAIDU, // 渠道枚举
enableOAID = false, // SDK是否采集OAID,关闭OAID采集示例
// 配置自定义OAID获取逻辑,默认不配置;若配置,则SDK自身不会有采集OAID的行为,会调用这个Callback获取
customOaidCallback = {"自定义OAID获取"},
// 配置自定义Android_id获取逻辑,默认不配置;若配置,则SDK自身不会有采集android_id的行为,会调用这个Callback获取
customAndroidIdCallback = {"自定义Android_ID获取"}
)
val isSuc = SmartAnalytics.init(initConfig)
可通过SmartAnalytics.setDebug((boolean)接口控制统计SDK LOG的输出。 默认情况下 SDK运行调试日志关闭, 需要用户手动打开。注意: App正式上线前请关闭SDK运行调试日志, 避免无关Log输出。
如果您的应用使用了代码混淆,请添加如下配置,以避免统计SDK被错误混淆导致SDK不可用。
# oaid混淆配置
# sdk
-keep class com.bun.miitmdid.** { *; }
-keep interface com.bun.supplier.** { *; }
-keep class androidx.core.**{*;}
# asus
-keep class com.asus.msa.SupplementaryDID.** { *; }
-keep class com.asus.msa.sdid.** { *; }
# freeme
-keep class com.android.creator.** { *; }
-keep class com.android.msasdk.** { *; }
# huawei
-keep class com.huawei.hms.** {*;}
-keep interface com.huawei.hms.** {*;}
# lenovo
-keep class com.zui.deviceidservice.** { *; }
-keep class com.zui.opendeviceidlibrary.** { *; }
# meizu
-keep class com.meizu.flyme.openidsdk.** { *; }
# nubia
-keep class com.bun.miitmdid.provider.nubia.NubiaIdentityImpl
# oppo
-keep class com.heytap.openid.** { *; }
# samsung
-keep class com.samsung.android.deviceidservice.** { *; }
# vivo
-keep class com.vivo.identifier.** { *; }
# xiaomi
-keep class com.bun.miitmdid.provider.xiaomi.IdentifierManager
# zte
-keep class com.bun.lib.** { *; }
# coolpad
-keep class com.coolpad.deviceidsupport.** { *; }
# EEBBK
#None
# honor
-keep class com.hihonor.** {*; }
# oaid混淆配置结束
# 中台sdk
-keep class com.smart.analytics.sdk.** {*; }
data class AnalyticsInitConfig (
/**
* appid, 必须
*/
val appId: String,
/**
* appkey, 必须
*/
val appKey: String,
/**
* 渠道枚举, 必须
*/
val channel: ChannelConfig,
/**
* 登录用户id, 可选
*/
var userId: String? = null,
/**
* 登录用户是否vip, >0: 是, 0: 不是, 可选
*/
var isVip: Int? = null,
/**
* 自定义渠道名称,当[channel]为[ChannelConfig.OTHER]时使用, 可选
*/
var customChannel: String? = null,
/**
* 接口地址, 国内可选,海外必须
*/
var baseUrl: String? = null,
/**
* 是否后台上报
*/
var isBackstageReport: Boolean = false,
/**
* 是否拦截获取应用列表方法
*/
var isInterceptAppList: Boolean = true,
/**
* SDK是否采集OAID,默认为true
*/
var enableOAID: Boolean = true,
/**
* 配置自定义OAID获取逻辑,默认不配置;若配置,则SDK自身不会有采集OAID的行为,会调用这个Callback获取
*/
var customOaidCallback: ()->String = { "" },
/**
* 配置自定义Android_id获取逻辑,默认不配置;若配置,则SDK自身不会有采集android_id的行为,会调用这个Callback获取
*/
var customAndroidIdCallback: ()->String = { "" }
)