接入tradplus

This commit is contained in:
yuqian 2025-12-17 17:23:01 +08:00
parent e69d866fe6
commit 339e17d415
13 changed files with 241 additions and 61 deletions

View File

@ -6,6 +6,8 @@ plugins {
alias(libs.plugins.kotlin.android)
id("kotlin-kapt")
id("kotlin-parcelize")
id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
}
android {
@ -18,8 +20,8 @@ android {
applicationId = "com.design.mischiefgo"
minSdk = 26
targetSdk = 36
versionCode = 1
versionName = "1.0"
versionCode = 2
versionName = "2.0"
setProperty(
"archivesBaseName",
"Mischief_Go_V" + versionName + "_${versionCode}$timeStamp"
@ -68,4 +70,92 @@ dependencies {
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.2")
implementation("androidx.activity:activity-ktx:1.10.1")
implementation("com.google.android.flexbox:flexbox:3.0.0")
implementation(files("libs/TradPlusLibrary_11_25_15_02-release.aar"))
implementation(files("libs/UpLoadLibrary_12_03_15_13-release.aar"))
implementation("com.squareup.okhttp3:okhttp:4.12.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
implementation ("com.google.android.gms:play-services-ads-identifier:18.0.1")
// TradPlus
implementation("com.tradplusad:tradplus:14.5.0.1")
//noinspection GradleCompatible
implementation("androidx.legacy:legacy-support-v4:1.0.0")
implementation("androidx.appcompat:appcompat:1.3.0-alpha02")
// Meta
implementation("com.facebook.android:audience-network-sdk:6.20.0")
implementation("com.tradplusad:tradplus-facebook:1.14.5.0.1")
// Applovin
implementation("com.applovin:applovin-sdk:13.3.1")
implementation("com.tradplusad:tradplus-applovin:9.14.5.0.1")
implementation("com.google.android.gms:play-services-ads-identifier:18.2.0")
// Ironsource
implementation("com.ironsource.sdk:mediationsdk:8.10.0")
implementation("com.tradplusad:tradplus-ironsource:10.14.5.0.1")
implementation("com.google.android.gms:play-services-appset:16.0.0")
implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
implementation("com.google.android.gms:play-services-basement:17.5.0")
// Adcolony
implementation("com.adcolony:sdk:4.8.0")
implementation("com.tradplusad:tradplus-adcolony:4.14.5.0.1")
implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
// Pangle
implementation("com.tradplusad:tradplus-pangle:19.14.5.0.1")
implementation("com.pangle.global:pag-sdk:7.3.0.3")
// UnityAds
implementation("com.tradplusad:tradplus-unity:5.14.5.0.1")
implementation("com.unity3d.ads:unity-ads:4.15.1")
// Chartboost
implementation("com.tradplusad:tradplus-chartboostx:15.14.5.0.1")
implementation("com.chartboost:chartboost-sdk:9.8.3")
implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
implementation("com.google.android.gms:play-services-base:17.4.0")
// Inmobi
implementation("com.tradplusad:tradplus-inmobix:23.14.5.0.1")
implementation("com.inmobi.monetization:inmobi-ads-kotlin:10.8.3")
implementation("androidx.core:core-ktx:1.5.0")
implementation("com.inmobi.omsdk:inmobi-omsdk:1.5.2.0")
// Fyber
implementation("com.fyber:marketplace-sdk:8.3.7")
implementation("com.tradplusad:tradplus-fyber:24.14.5.0.1")
implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
implementation("com.google.android.gms:play-services-base:17.4.0")
// Start.io
implementation("com.startapp:inapp-sdk:5.2.3")
implementation("com.tradplusad:tradplus-startapp:28.14.5.0.1")
// Mintegral
implementation("com.tradplusad:tradplus-mintegralx_overseas:18.14.5.0.1")
implementation("androidx.recyclerview:recyclerview:1.1.0")
implementation("com.mbridge.msdk.oversea:mbridge_android_sdk:16.9.71")
// Liftoff
implementation("com.tradplusad:tradplus-vunglex:7.14.5.0.1")
implementation("com.vungle:vungle-ads:7.5.0")
// Yandex
implementation("com.yandex.android:mobileads:7.13.0") {
exclude(group = "com.caverock", module = "androidsvg-aar")
}
implementation("com.tradplusad:tradplus-yandex:50.14.6.10.1")
// Bigo
implementation("com.bigossp:bigo-ads:5.4.0")
implementation("com.tradplusad:tradplus-bigo:57.14.5.0.1")
// Cross Promotion
implementation("com.tradplusad:tradplus-crosspromotion:27.14.5.0.1")
// TP Exchange
// 请注意保持与主包版本同步更新
implementation("com.google.code.gson:gson:2.8.6")
implementation("com.tradplusad:tp_exchange:40.14.5.0.1")
// Google UMP
implementation ("com.google.android.ump:user-messaging-platform:3.2.0")
// TradPlus Tools
// implementation 'com.tradplusad:tradplus-tool:1.1.4'
//firebase
implementation(platform("com.google.firebase:firebase-bom:33.7.0"))
implementation("com.google.firebase:firebase-crashlytics")
implementation("com.google.firebase:firebase-analytics")
implementation("com.google.firebase:firebase-config")
}

29
app/google-services.json Normal file
View File

@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "817124504854",
"project_id": "mischiefgo",
"storage_bucket": "mischiefgo.firebasestorage.app"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:817124504854:android:a00b4ebfe9a372c0270c37",
"android_client_info": {
"package_name": "com.design.mischiefgo"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyAbRiYbKs7g-TOxgQYZENO7LszpbRMmBpw"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

Binary file not shown.

Binary file not shown.

View File

@ -19,6 +19,8 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:networkSecurityConfig="@xml/net"
tools:replace="android:networkSecurityConfig"
android:supportsRtl="true"
android:theme="@style/Theme.MischiefGo">
<activity

View File

@ -6,6 +6,8 @@ import android.util.Log
import com.design.mischiefgo.entity.AppDataBase
import com.design.mischiefgo.entity.Usual
import com.design.mischiefgo.ut.CommonUtil
import com.up.uploadlibrary.UpLoadManager
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@ -17,10 +19,15 @@ class NewApp : Application() {
lateinit var app: NewApp
lateinit var typeface: Typeface
var usuals: List<Usual>? = null
const val TAG = "MischiefGo"
}
override fun onCreate() {
super.onCreate()
UpLoadManager.init(this, TAG) { _, _ ->
// 处理逻辑
Log.d(TAG, "upload success")
}
app = this
CoroutineScope(Dispatchers.IO).launch {
initializeDatabase()

View File

@ -5,6 +5,8 @@ import android.os.Bundle
import android.os.CountDownTimer
import android.os.Handler
import androidx.appcompat.app.AppCompatActivity
import com.ad.tradpluslibrary.TPAdManager
import com.design.mischiefgo.NewApp
import com.design.mischiefgo.databinding.ActivityAdShowBinding
import com.design.mischiefgo.ut.EvenTopUtils
@ -12,6 +14,7 @@ class AdShowActivity : AppCompatActivity() {
private lateinit var binding : ActivityAdShowBinding
private var handler: Handler = Handler()
private var countDownTimer: CountDownTimer? = null
private var time=14000L
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -19,24 +22,35 @@ class AdShowActivity : AppCompatActivity() {
EvenTopUtils.setLightStatusBar(this.window, true)
binding = ActivityAdShowBinding.inflate(layoutInflater)
setContentView(binding.root)
handler.postDelayed({
val intent= Intent(
this@AdShowActivity,
NavigationActivity::class.java
)
startActivity(intent)
finish()
}, 4000)
countDownTimer = object : CountDownTimer(4000, 100) {
override fun onTick(millisUntilFinished: Long) {
val progress = ((4000 - millisUntilFinished) / 4000f * 100).toInt()
binding.loadingPb.progress = progress
}
override fun onFinish() {
TPAdManager.init(
this@AdShowActivity,
NewApp.TAG,
"17EDDAE88015DE3BF7D6D4E436B18111",
"F9C9551815F75E1944178419F1517C12",
"61BF5E6CA907277EBA5EFC3AFC429012",
"85C9DD1C2A714986A3627007150E9312"
) {
null
}
countDownTimer = TPAdManager.showWelcomeAd(
this@AdShowActivity,
time,
{ aLong ->
val progressPercentage = (100 * aLong) / time
val percentage = 100 - progressPercentage
binding.loadingPb.progress = percentage.toInt()
},
{
binding.loadingPb.progress = 100
val intent= Intent(
this@AdShowActivity,
NavigationActivity::class.java
)
startActivity(intent)
finish()
}
}.start()
)
countDownTimer?.start()
}
override fun onDestroy() {

View File

@ -5,6 +5,7 @@ import android.os.Bundle
import android.os.Handler
import android.os.SystemClock
import androidx.appcompat.app.AppCompatActivity
import com.ad.tradpluslibrary.TPAdManager.showTPAD
import com.design.mischiefgo.R
import com.design.mischiefgo.databinding.ActivityListenSoundBinding
import com.design.mischiefgo.ut.StartPlayUtil
@ -28,12 +29,12 @@ class ListenSoundActivity : AppCompatActivity() {
setContentView(binding!!.root)
record = StartPlayUtil(this)
binding!!.audioTime.setText(R.string.time_init)
showTPAD(this){}
initClick()
}
private fun initClick() {
binding!!.back.setOnClickListener { finish() }
binding!!.back.setOnClickListener { showTPAD(this){finish()} }
binding!!.imMic.setOnClickListener {
binding!!.imMic.isSelected = !binding!!.imMic.isSelected
binding!!.audioTint.text=getString(R.string.click_to_finish)

View File

@ -20,6 +20,7 @@ import java.io.File
import java.io.FileOutputStream
import java.io.IOException
import androidx.core.net.toUri
import com.ad.tradpluslibrary.TPAdManager.showTPAD
import com.design.mischiefgo.databinding.ActivitySaveToLocalBinding
import com.design.mischiefgo.ut.EvenTopUtils
@ -135,40 +136,43 @@ class SaveToLocalActivity : AppCompatActivity() {
}
binding.save.setOnClickListener {
val name = binding.saveEdit.text.toString().trim()
viewModel.checkSaveStatus(name, callback = { isSave ->
runOnUiThread {
// 1. 先检查Activity是否即将销毁避免在已销毁的Activity上操作
if (isFinishing || isDestroyed) {
return@runOnUiThread
}
if (TextUtils.isEmpty(name)) {
Toast.makeText(
this@SaveToLocalActivity,
getString(R.string.save_tip), // 空名称提示
Toast.LENGTH_SHORT
).show()
return@runOnUiThread
}
showTPAD(this){
val name = binding.saveEdit.text.toString().trim()
viewModel.checkSaveStatus(name, callback = { isSave ->
runOnUiThread {
// 1. 先检查Activity是否即将销毁避免在已销毁的Activity上操作
if (isFinishing || isDestroyed) {
return@runOnUiThread
}
if (TextUtils.isEmpty(name)) {
Toast.makeText(
this@SaveToLocalActivity,
getString(R.string.save_tip), // 空名称提示
Toast.LENGTH_SHORT
).show()
return@runOnUiThread
}
if (isSave) {
binding.saveEdit.setText("")
Toast.makeText(
this@SaveToLocalActivity, // 使用显式的 this@ActivityName
getString(R.string.name_hint), // 名称已存在提示
Toast.LENGTH_SHORT
).show()
} else {
saveData(name)
Toast.makeText(
this@SaveToLocalActivity,
getString(R.string.save_tips), // 保存成功提示
Toast.LENGTH_SHORT
).show()
finish()
if (isSave) {
binding.saveEdit.setText("")
Toast.makeText(
this@SaveToLocalActivity, // 使用显式的 this@ActivityName
getString(R.string.name_hint), // 名称已存在提示
Toast.LENGTH_SHORT
).show()
} else {
saveData(name)
Toast.makeText(
this@SaveToLocalActivity,
getString(R.string.save_tips), // 保存成功提示
Toast.LENGTH_SHORT
).show()
finish()
}
}
}
})
})
}
}
}

View File

@ -3,6 +3,7 @@ package com.design.mischiefgo.ui
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager
import com.ad.tradpluslibrary.TPAdManager.showTPAD
import com.design.mischiefgo.ut.RandomAdapter
import com.design.mischiefgo.entity.Usual
import com.bumptech.glide.Glide
@ -29,6 +30,7 @@ class TypeInActivity : AppCompatActivity() {
}
private fun initView() {
showTPAD(this) { null }
Glide.with(this)
.load(data.convert)
.apply(RequestOptions.circleCropTransform())
@ -38,6 +40,6 @@ class TypeInActivity : AppCompatActivity() {
binding.recyclerView.adapter = adapter
binding.recyclerView.layoutManager = GridLayoutManager(this, 3)
adapter.setList(data.infolist)
binding.back.setOnClickListener { finish() }
binding.back.setOnClickListener {showTPAD(this) { finish() } }
}
}

View File

@ -15,6 +15,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.ad.tradpluslibrary.TPAdManager.showTPAD
import com.design.mischiefgo.ut.CommonUtil
import com.design.mischiefgo.R
import com.design.mischiefgo.ut.RandomAdapter
@ -52,6 +53,7 @@ class UseSoundActivity : AppCompatActivity(), OnMoreClickListener,
setContentView(binding.root)
viewModel = ViewModelProvider(this)[MainViewModel::class.java]
popView = ChooseTimeFragment(this, this)
showTPAD(this){}
initView()
initAudio()
initClick()
@ -95,18 +97,21 @@ class UseSoundActivity : AppCompatActivity(), OnMoreClickListener,
}
//弹出倒计时
binding.imTimer.setOnClickListener {
popView.showTop(binding.imTimer)
showTPAD(this){
popView.showTop(binding.imTimer)
}
}
//like
binding.imLike.setOnClickListener {
val isSelected = binding.imLike.isSelected
if(isSelected){
viewModel.updateLikeStatus(data.name,false)
}else{
viewModel.updateLikeStatus(data.name,true)
showTPAD(this){
val isSelected = binding.imLike.isSelected
if(isSelected){
viewModel.updateLikeStatus(data.name,false)
}else{
viewModel.updateLikeStatus(data.name,true)
}
binding.imLike.isSelected = !isSelected
}
binding.imLike.isSelected = !isSelected
}
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config xmlns:tools="http://schemas.android.com/tools">
<domain-config cleartextTrafficPermitted="true">
<domain tools:ignore="NetworkSecurityConfig">mobile-server.lux-ad.com</domain>
</domain-config>
</network-security-config>

View File

@ -16,6 +16,26 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
//------------------------- TradPlus
// Ironsource
maven { url = uri("https://android-sdk.is.com/") }
// Pangle
maven {
url = uri("https://artifact.bytedance.com/repository/pangle")
}
// Chartboost
maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") }
maven {
name = "Chartboost Mediations maven repo"
url = uri("https://cboost.jfrog.io/artifactory/chartboost-mediation")
}
// Mintegral
//Launch GP market application Android X Version
//If you fail to pull the code using gradle, add the maven warehouse configuration to the project root build.gradle file
maven {
url =
uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea")
}
}
}