添加时间间隔 限制

This commit is contained in:
renhaoting 2025-12-30 16:44:02 +08:00
parent efc140f512
commit d632807122
5 changed files with 26 additions and 16 deletions

View File

@ -52,7 +52,7 @@ class SpUtil private constructor(spFileName: String) {
// notification 相关 // notification 相关
const val NOTIFI_LAST_WITHDRAW_SHOW_MS = "NOTIFI_LAST_WITHDRAW_SHOW_MS" const val NOTIFI_LAST_NOTIFY_SHOW_MS = "NOTIFI_LAST_WITHDRAW_SHOW_MS"

View File

@ -14,12 +14,10 @@ import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import com.ama.core.architecture.util.DateUtil import com.ama.core.architecture.util.DateUtil
import com.ama.core.architecture.util.SpUtil
import com.remax.base.ext.canSendNotification import com.remax.base.ext.canSendNotification
import com.remax.base.report.DataReportManager import com.remax.base.report.DataReportManager
import com.remax.notification.NotifyConst import com.remax.notification.NotifyConst
import com.remax.notification.R import com.remax.notification.R
import com.remax.notification.builder.FixTimeModelManager
import com.remax.notification.builder.GeneralModelManager import com.remax.notification.builder.GeneralModelManager
import com.remax.notification.builder.GeneralNotificationData import com.remax.notification.builder.GeneralNotificationData
import com.remax.notification.builder.NotificationType import com.remax.notification.builder.NotificationType
@ -271,10 +269,10 @@ object NotificationTriggerController {
mFixTimeRunnable = object : Runnable { mFixTimeRunnable = object : Runnable {
override fun run() { override fun run() {
val lastFixNotifiShowMs = NotificationRecorder.getLastWithdrawShowTime() val lastFixNotifiShowMs = NotificationRecorder.getLastNotifyShowTime(NotificationCheckController.NotificationType.FIXTIMEPOINT.string)
if (TimeCheckUtil.isTargetTime() && (DateUtil.getCurTimeMs() - lastFixNotifiShowMs > 60000)) { if (TimeCheckUtil.isTargetTime() && (DateUtil.getCurTimeMs() - lastFixNotifiShowMs > 60000)) {
NotificationTimingController.getInstance().triggerNotificationIfAllowed(NotificationCheckController.NotificationType.FIXTIMEPOINT) NotificationTimingController.getInstance().triggerNotificationIfAllowed(NotificationCheckController.NotificationType.FIXTIMEPOINT)
NotificationRecorder.saveLastWithdrawShowTime(DateUtil.getCurTimeMs()) NotificationRecorder.saveLastNotifyShowTime(NotificationCheckController.NotificationType.FIXTIMEPOINT.string, DateUtil.getCurTimeMs())
NotiLogger.d("固定时间节点通知,第${repeatCount + 1}") NotiLogger.d("固定时间节点通知,第${repeatCount + 1}")
} }

View File

@ -20,7 +20,7 @@ import java.util.concurrent.ConcurrentHashMap
@SuppressLint("StaticFieldLeak") @SuppressLint("StaticFieldLeak")
object NotificationDatas { object NotificationDatas {
private val mLastRandomIndexMap: MutableMap<String, Int> = mutableMapOf() private val mLastRandomIndexMap: MutableMap<String, Int> = mutableMapOf()
const val GAP_FOR_WITHDRAW_NOTIFY = 30 * 1000 const val TIME_GAP_FOR_NOTIFY_INTERVAL = 30 * 1000
var context: Context = BaseApp.appContext() var context: Context = BaseApp.appContext()

View File

@ -3,13 +3,19 @@ package com.remax.notification.newUtil
import com.ama.core.architecture.util.SpUtil import com.ama.core.architecture.util.SpUtil
object NotificationRecorder { object NotificationRecorder {
private val mLastShowTimeMap = mutableMapOf<String, Long>()
fun saveLastWithdrawShowTime(newLastShowTime: Long) { init {
SpUtil.instance().putLong(SpUtil.NOTIFI_LAST_WITHDRAW_SHOW_MS, newLastShowTime) mLastShowTimeMap.putAll( SpUtil.instance().getMap<String, Long>(SpUtil.NOTIFI_LAST_NOTIFY_SHOW_MS))
} }
fun getLastWithdrawShowTime() : Long { fun saveLastNotifyShowTime(notifyType: String, newLastShowTime: Long) {
return SpUtil.instance().getLong(SpUtil.NOTIFI_LAST_WITHDRAW_SHOW_MS) mLastShowTimeMap.put(notifyType, newLastShowTime)
SpUtil.instance().putMap(SpUtil.NOTIFI_LAST_NOTIFY_SHOW_MS, mLastShowTimeMap)
}
fun getLastNotifyShowTime(notifyType: String) : Long {
return mLastShowTimeMap[notifyType]?: 0L
} }

View File

@ -13,6 +13,7 @@ import androidx.lifecycle.ProcessLifecycleOwner
import androidx.work.PeriodicWorkRequestBuilder import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkManager import androidx.work.WorkManager
import androidx.work.workDataOf import androidx.work.workDataOf
import com.ama.core.architecture.util.DateUtil
import com.ama.core.architecture.util.SpUtil import com.ama.core.architecture.util.SpUtil
import com.blankj.utilcode.util.Utils import com.blankj.utilcode.util.Utils
import com.remax.base.report.DataReportManager import com.remax.base.report.DataReportManager
@ -20,7 +21,7 @@ import com.remax.notification.TaskStateNewBieFirstWithDraw2
import com.remax.notification.controller.NotificationTriggerController import com.remax.notification.controller.NotificationTriggerController
import com.remax.notification.check.NotificationCheckController import com.remax.notification.check.NotificationCheckController
import com.remax.notification.newUtil.NotificationDatas import com.remax.notification.newUtil.NotificationDatas
import com.remax.notification.newUtil.NotificationDatas.GAP_FOR_WITHDRAW_NOTIFY import com.remax.notification.newUtil.NotificationDatas.TIME_GAP_FOR_NOTIFY_INTERVAL
import com.remax.notification.newUtil.NotificationDatas.NOTI_TYPE_BG_WITHDRAW import com.remax.notification.newUtil.NotificationDatas.NOTI_TYPE_BG_WITHDRAW
import com.remax.notification.newUtil.NotificationRecorder import com.remax.notification.newUtil.NotificationRecorder
import com.remax.notification.newUtil.NotificationUtil import com.remax.notification.newUtil.NotificationUtil
@ -336,7 +337,7 @@ class NotificationTimingController private constructor() : LifecycleObserver {
} }
NotificationCheckController.NotificationType.BACKGROUND -> { NotificationCheckController.NotificationType.BACKGROUND -> {
showNotifyWithdraw() showNotifyWithdraw(NotificationCheckController.NotificationType.BACKGROUND.string)
//showNotifyResident() //showNotifyResident()
} }
} }
@ -347,18 +348,23 @@ class NotificationTimingController private constructor() : LifecycleObserver {
private fun showNotifyWithdraw() { private fun showNotifyWithdraw(notifyType:String) {
if (System.currentTimeMillis() - NotificationRecorder.getLastWithdrawShowTime() >= GAP_FOR_WITHDRAW_NOTIFY) { if (System.currentTimeMillis() - NotificationRecorder.getLastNotifyShowTime(notifyType) >= TIME_GAP_FOR_NOTIFY_INTERVAL) {
val hasClaimedSmallCash = SpUtil.instance().getObject<TaskStateNewBieFirstWithDraw2>(SpUtil.KEY_NEWBIE_FIRST_WITHDRAW)?.hasClaimReward val hasClaimedSmallCash = SpUtil.instance().getObject<TaskStateNewBieFirstWithDraw2>(SpUtil.KEY_NEWBIE_FIRST_WITHDRAW)?.hasClaimReward
NotificationDatas.getConfigForType(NOTI_TYPE_BG_WITHDRAW)?.let { NotificationDatas.getConfigForType(NOTI_TYPE_BG_WITHDRAW)?.let {
it.content = String.format(it.content, if (hasClaimedSmallCash == null || !hasClaimedSmallCash) 0.1 else 50) it.content = String.format(it.content, if (hasClaimedSmallCash == null || !hasClaimedSmallCash) 0.1 else 50)
NotificationUtil.getInstance().showHeadsUpNotification(it) NotificationUtil.getInstance().showHeadsUpNotification(it)
NotificationRecorder.saveLastNotifyShowTime(notifyType, DateUtil.getCurTimeMs())
} }
} }
} }
private fun showNotifyRandom(randomType:String, randomList: List<Int>) { private fun showNotifyRandom(notifyType:String, randomList: List<Int>) {
NotificationUtil.getInstance().showBasicNotification(NotificationDatas.getRandomConfig(randomType, randomList)) if (System.currentTimeMillis() - NotificationRecorder.getLastNotifyShowTime(notifyType) >= TIME_GAP_FOR_NOTIFY_INTERVAL) {
NotificationUtil.getInstance().showBasicNotification(NotificationDatas.getRandomConfig(notifyType, randomList))
NotificationRecorder.saveLastNotifyShowTime(notifyType, DateUtil.getCurTimeMs())
}
} }