У меня есть следующий код для уведомления о получении сообщения от другого пользователя. Код отлично работает в эмуляторе, но не работает на реальном устройстве в режиме отладки. Хотя сообщение получено, как обнаружено Log.d, но не уведомлено. Также я настраиваю настроенный тон, который не работает ни в эмуляторе, ни на реальном устройстве. Может ли кто-нибудь помочь:
class ***InstanceService: FirebaseMessagingService() {
@RequiresApi(Build.VERSION_CODES.N)
override fun onMessageReceived(remoteMessage: RemoteMessage) {
val sound = Uri.parse("android.resource://" + applicationContext.packageName +"/"+R.raw.newtone)
if (remoteMessage.data.isNotEmpty()) {
Log.d("MyMessage", "Inside Data")
val intent = Intent(this, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT)
val channelId = "Default"
val builder = NotificationCompat.Builder(this, channelId)
.setLargeIcon(BitmapFactory.decodeResource(resources,R.drawable.ic_new_logo))
.setSmallIcon(R.drawable.ic_new_logo)
.setContentTitle(remoteMessage.data["title"]).setVisibility(VISIBILITY_PRIVATE)
.setSound(sound)
.setContentText(remoteMessage.data["body"]).setAutoCancel(true).setContentIntent(pendingIntent).setPriority(NotificationManager.IMPORTANCE_MAX)
val manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
{
val attributes = AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_NOTIFICATION)
.build()
val channel = NotificationChannel(channelId, "Default channel", NotificationManager.IMPORTANCE_HIGH)
manager.createNotificationChannel(channel)
channel.setSound(sound, attributes)
}
manager.notify(0, builder.build())
Log.d("MyMessage", "Message Data Body: " + remoteMessage.data["body"])
}
}
override fun onNewToken(token: String) {
}
}