inveno

inveno的公共类库


网络请求-network

<h3>1、添加依赖</h3> <pre><code>implementation 'com.inveno.library:network-java:1.6.5-SNAPSHOT' //注意,新版本的框架将加密框架剥离了,所以需要单独引用 implementation 'com.inveno.library:encrypt:1.0.1-SNAPSHOT' //加密框架 //如果自己已实现oaid的获取,则不需要依赖,若依赖了,则需要在assets文件夹下放入supplierconfig.json文件和对应的证书文件 implementation 'com.inveno.library:oaid:1.0.1-SNAPSHOT'</code></pre> <h3>2、在app的builde.grable文件下添加配置</h3> <pre><code>android { defaultConfig { //省略其他... ndk { // 添加项目所需CPU类型的最小集 abiFilters "armeabi-v7a" //, "armeabi","x86" } multiDexEnabled true } }</code></pre> <h3>3、混淆</h3> <pre><code>#inveno请求参数加密start -dontwarn android.content.** -keep class android.content.**{ *;} -dontwarn com.inveno.network.** -keep class com.inveno.network.**{ *;} -dontwarn com.inveno.network.http.** -keep class com.inveno.network.http.**{ *;} -dontwarn com.inveno.network.resp.** -keep class com.inveno.network.resp.**{ *;} -dontwarn com.inveno.encrypt.** -keep class com.inveno.encrypt.**{ *;} -dontwarn java.lang.String -keep class java.lang.String{ *;} #inveno请求参数加密end #oaid混淆-----start # sdk -keep class com.bun.miitmdid.** { *; } # 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.ads.identifier.** { *; } #-keep class com.uodis.opendevice.aidl.** { *; } # 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.** { *; } #oaid混淆-------------end</code></pre> <h3>4、在applicaiton类里初始化</h3> <pre><code>class APP :Application() { override fun onCreate() { super.onCreate() val httpBuilder = InvenoHttp.Builder() httpBuilder.connectTimeout = 3000 httpBuilder.readTimeout = 3000 httpBuilder.writeTimeout = 3000 httpBuilder.isDebug = true //连接的是否是测试环境 httpBuilder.logEnable = true //是否查看请求日志,过滤关键字OkHttp httpBuilder.checkProxy = true //是否检测代理,默认为true httpBuilder.middle_ground = 1 //0: 没接入中台 1: 接入中台 httpBuilder.channel = "inveno" //渠道号 httpBuilder.inviteCode = "" //邀请码 httpBuilder.oaidCertFile = "" //oaid安全联盟发布的证书,放在assets文件夹下,不依赖oaid则无须添加 httpBuilder.encryptType = InvenoEncryptType.TYPE_ONE //使用第几个tk密钥进行加密 //InvenoEncryptType.TYPE_ONE = "acy7lsgrrni6sj5ofn4i7khck6gih8a5" //InvenoEncryptType.TYPE_TWO = "nkrholrfp97go57f3ukjpyjcou47h0yt" //InvenoEncryptType.TYPE_THREE = "093a964e515d2732067cb247ae101494" //如果没有添加oaid依赖,则需要自己实现oaid的获取逻辑,否则会闪退 //httpBuilder.oaidProxy = object : InvenoOaidProxy{ // override fun getOaid(): String { // return "*****" // } //} //如果添加了oaid依赖,则在异步获取到oaid时,会回调以下方法 //httpBuilder.oaidCallBack = object : InvenoOaidCallBack{ // override fun onOaid(oaid: String?) { // //do something... // } //} //初始化 InvenoHttp.build(this,httpBuilder) } }</code></pre> <h3>5、使用</h3> <blockquote> <p>如需使用带加载弹窗的请求, 将InvenoHttpHelper替换成InvenoHttpHelperWithProgress即可</p> </blockquote> <pre><code>//上报事件(仅用作统计,须登录成功后调用) InvenoHttpHelper.requestPostEvent("事件id","事件名称") //上报自定义事件 InvenoHttpHelper.requestPostActiveEvent() //上报激活事件 InvenoHttpHelper.requestPostKeyEvent() //上报关键事件 InvenoHttpHelper.requestPostOpenApp() //上报打开app事件 //通用post请求,get请求同理 val url = "/diamond/v1/user/login" //相对请求路径,须以“/”开头 //val url = "https://diamond.inveno.com/diamond/v1/user/login" //或者绝对路径 //无参请求,注意,泛型T需要传入接口正常响应的解析类,否则无法正常解析 InvenoHttpHelper.post(url,object: InvenoApiCallBack&lt;T&gt;() { //或者get请求:InvenoHttpHelper.get() override fun onSuccess(t: T?) {} override fun onApiFail(code: Int, desc: String?) {} }) //有传参请求 val params = hashMapOf&lt;String,Any&gt;() params["key1"] = "value1" params["key2"] = "value2" //注意,泛型T需要传入接口正常响应的解析类,否则无法正常解析 InvenoHttpHelper.post(url,params,object: InvenoApiCallBack&lt;T&gt;() { override fun onSuccess(t: T?) {} override fun onApiFail(code: Int, desc: String?) {} }) //无账号登录 val userInfo = InvenoUserManager.restoreUser() //先从本地缓存恢复用户数据 //InvenoUserManager.clearUser() 退出账号需要清除用户数据 if (userInfo == null) { //如果本地没有缓存数据,则再执行登录请求 InvenoHttpHelper.requestLogin() { it: InvenoUser.User? -&gt; if(it == null){ //请求出错 return@requestLogin } } } //上报激励视频 val ecpm = ...//通过广告框架获取 InvenoHttpHelper.requestSeeAd(ecpm) //带ecpm //上报插屏视屏 val ecpm = ...//通过广告框架获取 val eventType = ...// 1:展示 3:点击 InvenoHttpHelperWithProgress.requestSeeTableAd(ecpm,eventType) //绑定微信 //以下数据通过友盟框架的UMShareHepler.requestWXUserInfo()方法获取 val openId = "" //必填参数 val nick = "" //可选参数 val headUrl = "" //可选参数 InvenoHttpHelper.requestBindWechat(openId,nick,headUrl) { it: Any? -&gt; } //提现 val mid = "" //通过提现列表获取 InvenoHttpHelper.requestWithDraw(mid) { it: InvenoWithDrawResult? -&gt; } //获取提现列表 InvenoHttpHelper.requestWithDrawList { it: InvenoWithDrawListResult? -&gt; val ingotList = it?.ingot //元宝提现列表 val coinList = it?.coin //红包提现列表 } //获取当前积分 val scoreType = "" //积分类型 InvenoHttpHelper.requestIntegral(scoreType) { it: Int? -&gt; //it:相应积分数量 } //上报每日登录 InvenoHttpHelper.reqeustEveryLogin { it: Int? -&gt; //it:连续登录天数 } //通过ecpm获取积分奖励 val ecpm = ... //通过视频sdk获取 InvenoHttpHelper.requestIntegralByEcpm(ecpm){ it:Map&lt;String,Int&gt;? -&gt; val hbqType = "hbq" //注意,项目对应的红包券积分类型,不同项目不一样 val ybType = "yb" //注意,项目对应的元宝券积分类型,不同项目不一样 val hbq = it?.get(hbqType) ?: 0 //可能为null,null则取0 val yb = it?.get(ybType) ?: 0 //可能为null,null则取0 } //上报行为给自己服务器 val eventDesc = "行为描述" val eventValue = 1 //行为值,默认1即可 val eventType = 1 //行为类型,1:快手激活 143:快手关键行为 0:头条激活 25:头条关键行为 InvenoHttpHelper.requestPostEvent(eventDesc,eventValue,eventType) //快手上报 InvenoHttpHelper.requestPostTTEvent(eventDesc,eventValue,eventType) //头条上报 //获取版本更新数据 InvenoHttpHelper.requestCheckUpdate { it: InvenoCheckUpdateResult? -&gt; //do something.... } //获取提现控制配置 InvenoHttpHelperWithProgress.requestWithDrawControlConfig { it:Boolean? -&gt; it?.let { if(it){ //允许提现 }else{ //不允许提现 } } }</code></pre> <h3>6、根据后台配置,动态上报关键行为</h3> <p>1)在application里初始化</p> <pre><code>class APP :Application() { override fun onCreate() { super.onCreate() //... InvenoKeyEventManager.init(this) } }</code></pre> <p>2)设置关键行为触发上报的回调</p> <pre><code>InvenoKeyEventManager.setOnPostKeyEventListener { it: Int -&gt; //当满足上报关键行为的时机时,会回调该方法,且只回调一次,此时需要手动上报关键行为 //因为每个项目上报关键行为的业务可能都不一样,所以需要自己定义关键行为的上报 //it=1快手上报,=2头条上报,=3多牛上报 }</code></pre> <p>3)请求后台关键行为的配置</p> <pre><code>//配置会因为包名、渠道号的不同而不同 var channel = "渠道号" InvenoHttpHelper.requestKeyEventData(channel) { it: InvenoKeyEventConfigResult? -&gt; //空方法即可 }</code></pre> <p>4)以下方法请在对应地方调用</p> <pre><code>//InvenoKeyEventManager内部会根据插屏、激励、全屏的关闭次数、 //提现和提现点击的次数、当前游戏角色的等级、关卡以及roi的值来判断是否要上报关键行为 //所以需要在各个对应的地方执行以下方法 var roi = ecpm / 1000 //roi一般为对应广告的ecpm除以1000,按产品的意思来定,如果不走roi,则设置为0即可 InvenoKeyEventManager.onTableClose(roi) //在插屏广告关闭时调用 InvenoKeyEventManager.onRewardVideoClose(roi) //在激励视频关闭时调用 InvenoKeyEventManager.onFullVideoClose(roi) //在全屏视频关闭时调用 InvenoKeyEventManager.onWithDraw() //在提现成功时调用 InvenoKeyEventManager.onWithDrawClick() //在提现点击时调用 var playerLevel = 11 InvenoKeyEventManager.setPlayerLevel(playerLevel) //更新用户等级 var level = 3 InvenoKeyEventManager.setLevel(level) //更新关卡</code></pre> <h3>更新日志</h3> <h6>1.4.0</h6> <p>添加检测代理功能</p> <h6>1.3.5</h6> <p>剔除微信sdk</p> <h6>1.2.2</h6> <p>添加自定义api方法</p> <h6>1.2.0</h6> <p>头部添加Authorization(jwt)</p> <h6>1.1.9</h6> <p>添加关键行为动态配置管理类InvenoKeyEventManager</p> <h6>1.1.7</h6> <p>添加通用get请求 InvenoHttpHelper.get()</p> <h6>1.1.6</h6> <p>添加通用post请求 InvenoHttpHelper.post()</p> <h6>1.1.5</h6> <p>添加第三个tk密钥</p> <h6>1.1.4</h6> <p>添加更新接口 添加oaid获取回调</p> <h6>1.1.2</h6> <p>添加头条上报接口</p> <h6>1.1.1</h6> <p>优化日志输出</p> <h6>1.1.0</h6> <p>添加上报行为接口</p> <h6>1.0.9</h6> <p>剥离微信sdk,改成可选依赖</p> <h6>1.0.8</h6> <p>整合微信sdk</p>

页面列表

ITEM_HTML