a面添加观察remoteConfig是否有数据更新。判断进入B面。

This commit is contained in:
ocean 2024-07-15 15:02:11 +08:00
parent 9127cf77e1
commit ae745858fc
5 changed files with 110 additions and 9 deletions

View File

@ -2,9 +2,16 @@ package melody.offline.music.activity
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.LifecycleOwner
import melody.offline.music.http.getAppVersionCode
import melody.offline.music.http.getCountryCode
import melody.offline.music.sp.AppStore
import melody.offline.music.util.LogTag
import org.json.JSONObject
open class BaseActivity : AppCompatActivity() {
open class BaseActivity : AppCompatActivity(), LifecycleOwner {
protected val TAG = LogTag.VO_ACT_LOG
protected val appStore by lazy { AppStore(this) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -13,4 +20,69 @@ open class BaseActivity : AppCompatActivity() {
override fun onStart() {
super.onStart()
}
fun withPermission(): Boolean {
//先判断当前配置的开关是否为true为false的话就直接进入A
val jsonString = appStore.shouldEnterMusicPageJson//得到配置的json
LogTag.LogD(TAG, "BaseActivity withPermission jsonString->${jsonString}")
val json = JSONObject(jsonString)
val versionCode = json.optInt("versionCode")//得到配置的code
val enter = json.optBoolean("enter")//得到配置的开关
val currentVersionCode = getAppVersionCode(this)//得到当前应用的code
//如果配置的code 等于 当前app的code则把配置赋值给shouldEnterMusicPage
if (versionCode.toLong() == currentVersionCode) {
appStore.shouldEnterMusicPage = enter
} else {
appStore.shouldEnterMusicPage = true
}
LogTag.LogD(TAG, "BaseActivity withPermission shouldEnterMusicPage->${appStore.shouldEnterMusicPage}")
if (!appStore.shouldEnterMusicPage) {
return false
}
// 不允许的国家代码
val restrictedCountries = setOf(
// "CN",
"HK",
"TW",
"JP",
"KR",
// "GB",
// "CH",
// "BE",
// "MO",
// "SG"
)
// 检查是否包含当前的国家代码
LogTag.LogD(TAG, "BaseActivity withPermission ipCountryCode->${appStore.ipCountryCode}")
if (appStore.ipCountryCode in restrictedCountries) {
return false
}
// 如果不在受限国家代码中,则继续其他检查
return withIso()
}
private fun withIso(): Boolean {
//460 || 461 China (People's Republic of)
//454 "Hong Kong, China"
//466 "Taiwan, China"
//440 || 441 Japan
//450 Korea (Republic of)
//234 || 235 United Kingdom of Great Britain and Northern Ireland
//228 Switzerland (Confederation of)
//206 Belgium
//455 "Macao, China"
//525 Singapore (Republic of)
val restrictedCountryCodes = setOf(
// "460",
// "461",
"454",
"466",
"440",
"441",
"450",
// "234", "235", "228", "206", "455", "525"
)
val currentCountryCode = getCountryCode(this)
return currentCountryCode !in restrictedCountryCodes
}
}

View File

@ -9,6 +9,7 @@ import android.view.View
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction
import androidx.lifecycle.Observer
import androidx.media3.common.Player
import com.bumptech.glide.Glide
import com.gyf.immersionbar.ktx.immersionBar
@ -20,6 +21,7 @@ import melody.offline.music.databinding.ActivityMainBinding
import melody.offline.music.fragment.HomeFragment
import melody.offline.music.fragment.ImportFragment
import melody.offline.music.media.LocalMediaControllerManager
import melody.offline.music.service.ViewModelMain
import melody.offline.music.util.getAudioDurationFromAssets
@ -34,6 +36,12 @@ class MainActivity : BaseActivity() {
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
initView()
ViewModelMain.dataRemote.observe(this) {
if (withPermission()) {
startActivity(Intent(this, PrimaryActivity::class.java))
finish()
}
}
}
private fun initView() {
@ -127,7 +135,8 @@ class MainActivity : BaseActivity() {
}
updateProgressState()
} else {
LocalMediaControllerManager.setupMedia(this@MainActivity, melody.offline.music.App.currentPlayingAudio!!,
LocalMediaControllerManager.setupMedia(this@MainActivity,
melody.offline.music.App.currentPlayingAudio!!,
object : Player.Listener {
override fun onPlayWhenReadyChanged(
playWhenReady: Boolean,
@ -189,9 +198,10 @@ class MainActivity : BaseActivity() {
binding.apply {
homeImg.setImageResource(
when (index) {
0 ->{
0 -> {
R.drawable.home_select_icon
}
else -> R.drawable.home_unselect_icon
}
)

View File

@ -3,6 +3,7 @@ package melody.offline.music.activity
import android.animation.ValueAnimator
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.os.Bundle
@ -25,6 +26,7 @@ import melody.offline.music.R
import melody.offline.music.bean.Audio
import melody.offline.music.databinding.ActivityPlayDetailsBinding
import melody.offline.music.media.LocalMediaControllerManager
import melody.offline.music.service.ViewModelMain
import melody.offline.music.util.LogTag
import melody.offline.music.util.containsContent
import melody.offline.music.util.convertMillisToMinutesAndSecondsString
@ -54,6 +56,13 @@ class PlayDetailsActivity : BaseActivity() {
Toast.makeText(this, getString(R.string.data_error), Toast.LENGTH_SHORT).show()
}
initView()
ViewModelMain.dataRemote.observe(this) {
if (withPermission()) {
startActivity(Intent(this, PrimaryActivity::class.java))
finish()
}
}
}
private fun initImmersionBar() {

View File

@ -15,6 +15,7 @@ import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue
import com.lol.apex.ok.google.adlibrary.LoLAds
import melody.offline.music.App
import melody.offline.music.BuildConfig
import melody.offline.music.service.ViewModelMain
import melody.offline.music.sp.AppStore
import melody.offline.music.util.LogTag
import java.lang.ref.WeakReference
@ -64,11 +65,12 @@ class RemoteConfig {
override fun onUpdate(configUpdate: ConfigUpdate) {
LogTag.LogD(TAG, "Updated keys: " + configUpdate.updatedKeys)
try {
if (configUpdate.updatedKeys.contains(Constants.KEY_SHOULD_ENTER_MUSIC_JSON)) {
mFirebaseRemoteConfig!!.activate().addOnCompleteListener { task ->
if (task.isSuccessful) {
updateData("onConfigUpdate", mFirebaseRemoteConfig!!.all)
}
// if (configUpdate.updatedKeys.contains(Constants.KEY_SHOULD_ENTER_MUSIC_JSON)) {
//
// }
mFirebaseRemoteConfig!!.activate().addOnCompleteListener { task ->
if (task.isSuccessful) {
updateData("onConfigUpdate", mFirebaseRemoteConfig!!.all)
}
}
} catch (ignore: Exception) {
@ -115,6 +117,7 @@ class RemoteConfig {
if (TextUtils.equals(Constants.KEY_SHOULD_ENTER_MUSIC_JSON, key)) {
val shouldJson = value.asString()
appStore.shouldEnterMusicPageJson = shouldJson
ViewModelMain.updateData(shouldJson)
}
if (TextUtils.equals(Constants.KEY_SHOW_AD_INTERVAL_TIME, key)) {
val t = value.asLong()

View File

@ -1,9 +1,16 @@
package melody.offline.music.service
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.media3.exoplayer.offline.Download
object ViewModelMain : ViewModel() {
var modelDownloadsFlow = MutableLiveData<Map<String, Download>>()
private val _dataRemote = MutableLiveData<String>()
val dataRemote: LiveData<String> get() = _dataRemote
fun updateData(newData: String) {
_dataRemote.value = newData
}
}