通知更新
This commit is contained in:
@@ -3,7 +3,7 @@ package com.taskttl.core.alarm
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import com.taskttl.core.notification.NotificationManager
|
||||
import com.taskttl.core.notification.AppNotificationManager
|
||||
import com.taskttl.core.notification.NotificationPayload
|
||||
import com.taskttl.core.notification.NotificationRepeatType
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
@@ -20,7 +20,7 @@ class AlarmReceiver : BroadcastReceiver() {
|
||||
|
||||
// 使用协程调用统一通知方法
|
||||
CoroutineScope(Dispatchers.Main).launch {
|
||||
NotificationManager.scheduleNotification(
|
||||
AppNotificationManager.scheduleNotification(
|
||||
NotificationPayload(
|
||||
id = id,
|
||||
title = title,
|
||||
@@ -30,38 +30,5 @@ class AlarmReceiver : BroadcastReceiver() {
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
|
||||
// val id = intent.getStringExtra("id") ?: return
|
||||
// val title = intent.getStringExtra("title") ?: "TaskTTL"
|
||||
// val message = intent.getStringExtra("message") ?: ""
|
||||
//
|
||||
// val channelId = "taskttl_channel"
|
||||
//
|
||||
// // 确保通道存在
|
||||
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
// val nm = context.getSystemService(Context.NOTIFICATION_SERVICE) as android.app.NotificationManager
|
||||
// if (nm.getNotificationChannel(channelId) == null) {
|
||||
// val channel = android.app.NotificationChannel(
|
||||
// channelId,
|
||||
// "TaskTTL Notifications",
|
||||
// android.app.NotificationManager.IMPORTANCE_HIGH
|
||||
// )
|
||||
// channel.description = "TaskTTL 提醒通知"
|
||||
// nm.createNotificationChannel(channel)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 构建通知
|
||||
// val builder = NotificationCompat.Builder(context, channelId)
|
||||
// .setContentTitle(title)
|
||||
// .setContentText(message)
|
||||
// .setSmallIcon(R.mipmap.ic_launcher)
|
||||
// .setAutoCancel(true)
|
||||
// .setPriority(NotificationCompat.PRIORITY_HIGH)
|
||||
//
|
||||
// val nm = context.getSystemService(Context.NOTIFICATION_SERVICE) as android.app.NotificationManager
|
||||
// nm.notify(id.hashCode(), builder.build())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.taskttl.core.notification
|
||||
import android.Manifest
|
||||
import android.app.Activity
|
||||
import android.app.AlarmManager
|
||||
import android.app.NotificationManager
|
||||
import android.app.PendingIntent
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
@@ -12,7 +13,11 @@ import android.os.Build
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.core.app.NotificationCompat
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.work.*
|
||||
import androidx.work.ExistingPeriodicWorkPolicy
|
||||
import androidx.work.OneTimeWorkRequestBuilder
|
||||
import androidx.work.PeriodicWorkRequestBuilder
|
||||
import androidx.work.WorkManager
|
||||
import androidx.work.workDataOf
|
||||
import com.taskttl.MainApplication
|
||||
import com.taskttl.R
|
||||
import com.taskttl.core.alarm.AlarmReceiver
|
||||
@@ -20,7 +25,7 @@ import com.taskttl.core.utils.LogUtils
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.math.max
|
||||
|
||||
actual object NotificationManager {
|
||||
actual object AppNotificationManager {
|
||||
|
||||
private val channelId = "taskttl_channel"
|
||||
|
||||
@@ -35,13 +40,14 @@ actual object NotificationManager {
|
||||
private fun setupNotificationChannel() {
|
||||
val activity = MainApplication.currentActivity() ?: return
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
val nm = activity.getSystemService(Context.NOTIFICATION_SERVICE) as android.app.NotificationManager
|
||||
val nm =
|
||||
activity.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||
if (nm.getNotificationChannel(channelId) == null) {
|
||||
val channel = android.app.NotificationChannel(
|
||||
channelId,
|
||||
"TaskTTL Notifications",
|
||||
android.app.NotificationManager.IMPORTANCE_HIGH
|
||||
).apply { description = "TaskTTL 提醒通知" }
|
||||
NotificationManager.IMPORTANCE_HIGH
|
||||
)
|
||||
nm.createNotificationChannel(channel)
|
||||
LogUtils.d("DevTTL_NotificationTest", "Notification channel created")
|
||||
}
|
||||
@@ -137,10 +143,11 @@ actual object NotificationManager {
|
||||
else -> 24 * 60 * 60 * 1000L
|
||||
}
|
||||
|
||||
val request = PeriodicWorkRequestBuilder<NotificationWorker>(interval, TimeUnit.MILLISECONDS)
|
||||
.setInputData(data)
|
||||
.addTag(payload.id)
|
||||
.build()
|
||||
val request =
|
||||
PeriodicWorkRequestBuilder<NotificationWorker>(interval, TimeUnit.MILLISECONDS)
|
||||
.setInputData(data)
|
||||
.addTag(payload.id)
|
||||
.build()
|
||||
|
||||
workManager.enqueueUniquePeriodicWork(
|
||||
payload.id,
|
||||
@@ -153,7 +160,8 @@ actual object NotificationManager {
|
||||
/** 立即显示通知 */
|
||||
private fun showImmediateNotification(payload: NotificationPayload) {
|
||||
val activity = getActivity()
|
||||
val nm = activity.getSystemService(Context.NOTIFICATION_SERVICE) as android.app.NotificationManager
|
||||
val nm =
|
||||
activity.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||
|
||||
val notification = NotificationCompat.Builder(activity, channelId)
|
||||
.setContentTitle(payload.title)
|
||||
@@ -184,14 +192,16 @@ actual object NotificationManager {
|
||||
)
|
||||
alarmManager.cancel(pendingIntent)
|
||||
|
||||
val nm = activity.getSystemService(Context.NOTIFICATION_SERVICE) as android.app.NotificationManager
|
||||
val nm =
|
||||
activity.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||
nm.cancel(id.hashCode())
|
||||
}
|
||||
|
||||
actual suspend fun cancelAll() {
|
||||
val activity = getActivity()
|
||||
WorkManager.getInstance(activity).cancelAllWork()
|
||||
val nm = activity.getSystemService(Context.NOTIFICATION_SERVICE) as android.app.NotificationManager
|
||||
val nm =
|
||||
activity.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||
nm.cancelAll()
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.taskttl.core.notification
|
||||
|
||||
import android.app.NotificationManager
|
||||
import android.app.PendingIntent
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
@@ -48,7 +49,7 @@ class NotificationWorker(
|
||||
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
|
||||
.setPriority(NotificationCompat.PRIORITY_HIGH)
|
||||
|
||||
val nm = context.getSystemService(Context.NOTIFICATION_SERVICE) as android.app.NotificationManager
|
||||
val nm = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||
nm.notify(id.hashCode(), builder.build())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,9 +4,9 @@ package com.taskttl.core.notification
|
||||
* 通知管理器
|
||||
* @author admin
|
||||
* @date 2025/10/16
|
||||
* @constructor 创建[NotificationManager]
|
||||
* @constructor 创建[AppNotificationManager]
|
||||
*/
|
||||
expect object NotificationManager {
|
||||
expect object AppNotificationManager {
|
||||
/**
|
||||
* 日程通知
|
||||
* @param [payload] 有效载荷
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.taskttl.data.di
|
||||
|
||||
import com.taskttl.core.notification.NotificationManager
|
||||
import com.taskttl.data.repository.OnboardingRepository
|
||||
import com.taskttl.data.repository.SettingsRepository
|
||||
import com.taskttl.data.repository.impl.OnboardingRepositoryImpl
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.taskttl.core.notification
|
||||
|
||||
import platform.UserNotifications.*
|
||||
|
||||
actual class NotificationManager {
|
||||
actual object AppNotificationManager {
|
||||
actual suspend fun scheduleNotification(payload: NotificationPayload) {
|
||||
val content = UNMutableNotificationContent().apply {
|
||||
title = payload.title
|
||||
Reference in New Issue
Block a user