a面添加观察remoteConfig是否有数据更新。判断进入B面。
This commit is contained in:
parent
9127cf77e1
commit
ae745858fc
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
)
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user