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