guide完成前 不打开通知
This commit is contained in:
parent
383b0a2be3
commit
ed5eec84af
|
|
@ -24,6 +24,7 @@ import com.blankj.utilcode.util.ActivityUtils
|
|||
import com.gamedog.statisticreporter.StatisticUtil
|
||||
import com.gamedog.vididin.VidiConst
|
||||
import com.gamedog.vididin.VidiConst.GUIDE_INDEX_GIFT
|
||||
import com.gamedog.vididin.VidiConst.GUIDE_INDEX_ZERO
|
||||
import com.gamedog.vididin.VididinEvents
|
||||
import com.gamedog.vididin.adapter.MainTabsAdapter
|
||||
import com.gamedog.vididin.adapter.MainViewPagerAdapter
|
||||
|
|
@ -224,6 +225,7 @@ class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabS
|
|||
}
|
||||
|
||||
private fun checkNotifyPermissionAndStartService() {
|
||||
if (GuideManager.instance().getCurGuideIndex() > GUIDE_INDEX_ZERO) {
|
||||
NotificationController.requestNotificationPermissionAsAsync(
|
||||
context = this,
|
||||
lifecycleScope = lifecycleScope,
|
||||
|
|
@ -235,6 +237,7 @@ class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabS
|
|||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private fun reportStatistics(intent: Intent, isFromNewIntent: Boolean) {
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@ object NotificationController {
|
|||
)
|
||||
return runCatching {
|
||||
suspendCancellableCoroutine<Boolean> { continuation ->
|
||||
if (SpUtil.instance().getInt(SpUtil.KEY_GUIDE_HAS_SHOW) >= 4) {
|
||||
context.requestNotificationPermission(activityLauncher!!) { isGranted ->
|
||||
DataReportManager.reportData(
|
||||
"Notific_Allow_Result", mapOf(
|
||||
|
|
@ -108,6 +109,7 @@ object NotificationController {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}.getOrDefault(false)
|
||||
}
|
||||
return true
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.remax.base.ext
|
|||
import android.Manifest
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.content.pm.PackageManager
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
|
|
@ -11,6 +12,7 @@ import androidx.core.app.ActivityCompat
|
|||
import androidx.core.app.NotificationManagerCompat
|
||||
import com.remax.base.utils.ActivityLauncher
|
||||
|
||||
|
||||
/**
|
||||
* 检查是否可以发送通知(权限 + 系统设置)
|
||||
*/
|
||||
|
|
@ -32,6 +34,11 @@ fun Context.canSendNotification(): Boolean {
|
|||
return hasPermission && isEnabled
|
||||
}
|
||||
|
||||
private fun isGuideFinish(context: Context): Boolean {
|
||||
val sharedPref: SharedPreferences = context.getSharedPreferences("VidiDin_Common", Context.MODE_PRIVATE)
|
||||
return sharedPref.getInt("KEY_GUIDE_STATE", 0) >= 4
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求通知权限
|
||||
* @param launcher ActivityLauncher 实例
|
||||
|
|
@ -43,10 +50,12 @@ fun Context. requestNotificationPermission(
|
|||
) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
// Android 13+ 需要请求通知权限
|
||||
if (isGuideFinish(this)) {
|
||||
launcher.launch(arrayOf(Manifest.permission.POST_NOTIFICATIONS)) { permissions ->
|
||||
val isGranted = permissions[Manifest.permission.POST_NOTIFICATIONS] ?: false
|
||||
result(isGranted)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Android 13 以下版本默认有权限,但需要检查系统设置
|
||||
result(canSendNotification())
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.ama.core.architecture.util
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
|
|
@ -32,6 +33,7 @@ import com.ama.core.architecture.BaseApp
|
|||
import com.ama.core.architecture.R
|
||||
import com.ama.core.architecture.databinding.LayoutToastCenterBinding
|
||||
import com.ama.core.architecture.util.ResUtil.dp
|
||||
import com.ama.core.architecture.util.permission.PermissionUtil
|
||||
import com.google.android.gms.ads.identifier.AdvertisingIdClient
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.reflect.TypeToken
|
||||
|
|
@ -162,7 +164,13 @@ class AndroidUtil private constructor() {
|
|||
return NotificationManagerCompat.from(BaseApp.appContext()).areNotificationsEnabled()
|
||||
}
|
||||
|
||||
|
||||
fun requestNotifyPermission(callback: PermissionUtil.ICallback) {
|
||||
if (SpUtil.instance().getInt(SpUtil.KEY_GUIDE_HAS_SHOW) >= 4) {
|
||||
PermissionUtil.checkPermission(Manifest.permission.POST_NOTIFICATIONS, callback)
|
||||
} else {
|
||||
callback.onAllRejected()
|
||||
}
|
||||
}
|
||||
|
||||
fun getAppVersionInfo(): String {
|
||||
return try {
|
||||
|
|
@ -308,4 +316,7 @@ class AndroidUtil private constructor() {
|
|||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -14,6 +14,7 @@ import androidx.annotation.RequiresPermission
|
|||
import androidx.core.app.NotificationCompat
|
||||
import androidx.core.app.NotificationManagerCompat
|
||||
import com.ama.core.architecture.BaseApp
|
||||
import com.ama.core.architecture.util.AndroidUtil
|
||||
import com.ama.core.architecture.util.permission.PermissionUtil
|
||||
import com.gamedog.statisticreporter.StatisticUtil
|
||||
import com.remax.notification.NotifyConst
|
||||
|
|
@ -453,13 +454,14 @@ class NotificationUtil private constructor() {
|
|||
|
||||
|
||||
|
||||
@RequiresPermission(Manifest.permission.POST_NOTIFICATIONS)
|
||||
private fun showNotification(notificationId: Int = System.currentTimeMillis().toInt(),
|
||||
notification: Notification,
|
||||
channelName: String,
|
||||
importance: Int = NotificationManager.IMPORTANCE_DEFAULT) {
|
||||
if (!isNotificationsEnabled()) {
|
||||
StatisticUtil.reportEvents(StatisticUtil.KEY_Push_Show)
|
||||
PermissionUtil.checkPermission(Manifest.permission.POST_NOTIFICATIONS, object : PermissionUtil.ICallback() {
|
||||
AndroidUtil.requestNotifyPermission(object : PermissionUtil.ICallback() {
|
||||
override fun onAllGranted() {
|
||||
doShowNotification(notificationId, notification, channelName, importance)
|
||||
StatisticUtil.reportEvents(StatisticUtil.KEY_Push_Request_Result, mapOf("Push_Result" to 1))
|
||||
|
|
|
|||
Loading…
Reference in New Issue