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 android.os.Bundle
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
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?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
@ -13,4 +20,69 @@ open class BaseActivity : AppCompatActivity() {
|
|||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super.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 android.widget.Toast
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentTransaction
|
import androidx.fragment.app.FragmentTransaction
|
||||||
|
import androidx.lifecycle.Observer
|
||||||
import androidx.media3.common.Player
|
import androidx.media3.common.Player
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
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.HomeFragment
|
||||||
import melody.offline.music.fragment.ImportFragment
|
import melody.offline.music.fragment.ImportFragment
|
||||||
import melody.offline.music.media.LocalMediaControllerManager
|
import melody.offline.music.media.LocalMediaControllerManager
|
||||||
|
import melody.offline.music.service.ViewModelMain
|
||||||
import melody.offline.music.util.getAudioDurationFromAssets
|
import melody.offline.music.util.getAudioDurationFromAssets
|
||||||
|
|
||||||
|
|
||||||
@ -34,6 +36,12 @@ class MainActivity : BaseActivity() {
|
|||||||
binding = ActivityMainBinding.inflate(layoutInflater)
|
binding = ActivityMainBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
initView()
|
initView()
|
||||||
|
ViewModelMain.dataRemote.observe(this) {
|
||||||
|
if (withPermission()) {
|
||||||
|
startActivity(Intent(this, PrimaryActivity::class.java))
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initView() {
|
private fun initView() {
|
||||||
@ -127,7 +135,8 @@ class MainActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
updateProgressState()
|
updateProgressState()
|
||||||
} else {
|
} else {
|
||||||
LocalMediaControllerManager.setupMedia(this@MainActivity, melody.offline.music.App.currentPlayingAudio!!,
|
LocalMediaControllerManager.setupMedia(this@MainActivity,
|
||||||
|
melody.offline.music.App.currentPlayingAudio!!,
|
||||||
object : Player.Listener {
|
object : Player.Listener {
|
||||||
override fun onPlayWhenReadyChanged(
|
override fun onPlayWhenReadyChanged(
|
||||||
playWhenReady: Boolean,
|
playWhenReady: Boolean,
|
||||||
@ -189,9 +198,10 @@ class MainActivity : BaseActivity() {
|
|||||||
binding.apply {
|
binding.apply {
|
||||||
homeImg.setImageResource(
|
homeImg.setImageResource(
|
||||||
when (index) {
|
when (index) {
|
||||||
0 ->{
|
0 -> {
|
||||||
R.drawable.home_select_icon
|
R.drawable.home_select_icon
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> R.drawable.home_unselect_icon
|
else -> R.drawable.home_unselect_icon
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package melody.offline.music.activity
|
|||||||
import android.animation.ValueAnimator
|
import android.animation.ValueAnimator
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.graphics.BitmapFactory
|
import android.graphics.BitmapFactory
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
@ -25,6 +26,7 @@ import melody.offline.music.R
|
|||||||
import melody.offline.music.bean.Audio
|
import melody.offline.music.bean.Audio
|
||||||
import melody.offline.music.databinding.ActivityPlayDetailsBinding
|
import melody.offline.music.databinding.ActivityPlayDetailsBinding
|
||||||
import melody.offline.music.media.LocalMediaControllerManager
|
import melody.offline.music.media.LocalMediaControllerManager
|
||||||
|
import melody.offline.music.service.ViewModelMain
|
||||||
import melody.offline.music.util.LogTag
|
import melody.offline.music.util.LogTag
|
||||||
import melody.offline.music.util.containsContent
|
import melody.offline.music.util.containsContent
|
||||||
import melody.offline.music.util.convertMillisToMinutesAndSecondsString
|
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()
|
Toast.makeText(this, getString(R.string.data_error), Toast.LENGTH_SHORT).show()
|
||||||
}
|
}
|
||||||
initView()
|
initView()
|
||||||
|
|
||||||
|
ViewModelMain.dataRemote.observe(this) {
|
||||||
|
if (withPermission()) {
|
||||||
|
startActivity(Intent(this, PrimaryActivity::class.java))
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initImmersionBar() {
|
private fun initImmersionBar() {
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue
|
|||||||
import com.lol.apex.ok.google.adlibrary.LoLAds
|
import com.lol.apex.ok.google.adlibrary.LoLAds
|
||||||
import melody.offline.music.App
|
import melody.offline.music.App
|
||||||
import melody.offline.music.BuildConfig
|
import melody.offline.music.BuildConfig
|
||||||
|
import melody.offline.music.service.ViewModelMain
|
||||||
import melody.offline.music.sp.AppStore
|
import melody.offline.music.sp.AppStore
|
||||||
import melody.offline.music.util.LogTag
|
import melody.offline.music.util.LogTag
|
||||||
import java.lang.ref.WeakReference
|
import java.lang.ref.WeakReference
|
||||||
@ -64,11 +65,12 @@ class RemoteConfig {
|
|||||||
override fun onUpdate(configUpdate: ConfigUpdate) {
|
override fun onUpdate(configUpdate: ConfigUpdate) {
|
||||||
LogTag.LogD(TAG, "Updated keys: " + configUpdate.updatedKeys)
|
LogTag.LogD(TAG, "Updated keys: " + configUpdate.updatedKeys)
|
||||||
try {
|
try {
|
||||||
if (configUpdate.updatedKeys.contains(Constants.KEY_SHOULD_ENTER_MUSIC_JSON)) {
|
// if (configUpdate.updatedKeys.contains(Constants.KEY_SHOULD_ENTER_MUSIC_JSON)) {
|
||||||
mFirebaseRemoteConfig!!.activate().addOnCompleteListener { task ->
|
//
|
||||||
if (task.isSuccessful) {
|
// }
|
||||||
updateData("onConfigUpdate", mFirebaseRemoteConfig!!.all)
|
mFirebaseRemoteConfig!!.activate().addOnCompleteListener { task ->
|
||||||
}
|
if (task.isSuccessful) {
|
||||||
|
updateData("onConfigUpdate", mFirebaseRemoteConfig!!.all)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (ignore: Exception) {
|
} catch (ignore: Exception) {
|
||||||
@ -115,6 +117,7 @@ class RemoteConfig {
|
|||||||
if (TextUtils.equals(Constants.KEY_SHOULD_ENTER_MUSIC_JSON, key)) {
|
if (TextUtils.equals(Constants.KEY_SHOULD_ENTER_MUSIC_JSON, key)) {
|
||||||
val shouldJson = value.asString()
|
val shouldJson = value.asString()
|
||||||
appStore.shouldEnterMusicPageJson = shouldJson
|
appStore.shouldEnterMusicPageJson = shouldJson
|
||||||
|
ViewModelMain.updateData(shouldJson)
|
||||||
}
|
}
|
||||||
if (TextUtils.equals(Constants.KEY_SHOW_AD_INTERVAL_TIME, key)) {
|
if (TextUtils.equals(Constants.KEY_SHOW_AD_INTERVAL_TIME, key)) {
|
||||||
val t = value.asLong()
|
val t = value.asLong()
|
||||||
|
|||||||
@ -1,9 +1,16 @@
|
|||||||
package melody.offline.music.service
|
package melody.offline.music.service
|
||||||
|
|
||||||
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.media3.exoplayer.offline.Download
|
import androidx.media3.exoplayer.offline.Download
|
||||||
|
|
||||||
object ViewModelMain : ViewModel() {
|
object ViewModelMain : ViewModel() {
|
||||||
var modelDownloadsFlow = MutableLiveData<Map<String, Download>>()
|
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