改包名com.aiosman.ravenow
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
package com.aiosman.ravenow
|
||||
|
||||
import android.Manifest
|
||||
import android.app.PendingIntent
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.util.Log
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.core.app.NotificationCompat
|
||||
import androidx.core.app.NotificationManagerCompat
|
||||
import com.google.firebase.messaging.FirebaseMessagingService
|
||||
import com.google.firebase.messaging.RemoteMessage
|
||||
|
||||
val MessageTypeLike = "like"
|
||||
fun showLikeNotification(context: Context, title: String, message: String, postId: Int) {
|
||||
val channelId = ConstVars.MOMENT_LIKE_CHANNEL_ID
|
||||
// Create an Intent to open the specific activity
|
||||
val intent = Intent(context, MainActivity::class.java).apply {
|
||||
putExtra("POST_ID", postId.toString())
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
|
||||
}
|
||||
|
||||
// Create a PendingIntent to wrap the Intent
|
||||
val pendingIntent = PendingIntent.getActivity(
|
||||
context,
|
||||
0,
|
||||
intent,
|
||||
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
|
||||
)
|
||||
|
||||
val notificationBuilder = NotificationCompat.Builder(context, channelId)
|
||||
.setSmallIcon(R.drawable.rider_pro_favoriate)
|
||||
.setContentTitle(title)
|
||||
.setContentText(message)
|
||||
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
|
||||
.setContentIntent(pendingIntent)
|
||||
.setAutoCancel(true)
|
||||
|
||||
|
||||
with(NotificationManagerCompat.from(context)) {
|
||||
if (ActivityCompat.checkSelfPermission(
|
||||
context,
|
||||
Manifest.permission.POST_NOTIFICATIONS
|
||||
) != PackageManager.PERMISSION_GRANTED
|
||||
) {
|
||||
// 用户没有授权,不显示通知
|
||||
return
|
||||
}
|
||||
notify(System.currentTimeMillis().toInt(), notificationBuilder.build())
|
||||
}
|
||||
}
|
||||
|
||||
class MyFirebaseMessagingService : FirebaseMessagingService() {
|
||||
override fun onNewToken(token: String) {
|
||||
Log.d("Pushing", "Refreshed token: $token")
|
||||
super.onNewToken(token)
|
||||
}
|
||||
|
||||
override fun onMessageReceived(remoteMessage: RemoteMessage) {
|
||||
|
||||
if (remoteMessage.data.containsKey("action")) {
|
||||
when (remoteMessage.data["action"]) {
|
||||
MessageTypeLike -> {
|
||||
val postId = remoteMessage.data["postId"]?.toInt() ?: return
|
||||
showLikeNotification(
|
||||
applicationContext,
|
||||
remoteMessage.data["title"] ?: "FCM Message",
|
||||
remoteMessage.data["body"] ?: "No message body",
|
||||
postId
|
||||
)
|
||||
}
|
||||
|
||||
else -> {
|
||||
Log.w("Pushing", "Unknown message type: ${remoteMessage.data["messageType"]}")
|
||||
}
|
||||
}
|
||||
}
|
||||
super.onMessageReceived(remoteMessage)
|
||||
}
|
||||
|
||||
fun prepareIntent(clickAction: String?): Intent {
|
||||
val intent: Intent
|
||||
val isAppInBackground: Boolean = !MainActivityLifecycle.isForeground
|
||||
intent = if (isAppInBackground) {
|
||||
Intent(this, MainActivity::class.java)
|
||||
} else {
|
||||
Intent(clickAction)
|
||||
}
|
||||
return intent
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user