import android.app.Notification import android.app.NotificationManager import android.app.PendingIntent import android.content.Context import android.graphics.Bitmap import android.graphics.BitmapFactory import android.os.Bundle import androidx.core.app.NotificationCompat import io.flutter.embedding.android.FlutterActivity import io.flutter.plugin.common.MethodChannel class MainActivity : FlutterActivity() { private val CHANNEL = "custom_notifications" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // Bildirim kanalını oluşturuyoruz createNotificationChannel() // Flutter tarafındaki MethodChannel işlemleri MethodChannel(flutterEngine!!.dartExecutor, CHANNEL).setMethodCallHandler { call, result -> if (call.method == "showNotification") { val imageData = call.argument("image") if (imageData != null) { val image = BitmapFactory.decodeByteArray(imageData, 0, imageData.size) showNotification(image) } result.success(null) } else { result.notImplemented() } } } // Bildirim kanalı oluşturma private fun createNotificationChannel() { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { val channel = NotificationChannel( "default", // Kanal kimliği "Default Channel", // Kanal adı NotificationManager.IMPORTANCE_DEFAULT ).apply { description = "This is the default notification channel." } // NotificationManager servisini alıyoruz val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(channel) } } // Bildirim gösterme private fun showNotification(image: Bitmap) { val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager // Bildirim oluşturma val builder = NotificationCompat.Builder(this, "default") .setSmallIcon(android.R.drawable.ic_notification_overlay) .setContentTitle("Flutter Bildirimi") .setContentText("Buna tıklayın!") .setLargeIcon(image) // Görseli büyük ikon olarak ayarlıyoruz .setStyle(NotificationCompat.BigPictureStyle().bigPicture(image).bigLargeIcon(null)) .setAutoCancel(true) // Bildirim tıklama olayını ayarlıyoruz val pendingIntent = PendingIntent.getActivity( this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT ) builder.setContentIntent(pendingIntent) // Bildirimi gösteriyoruz notificationManager.notify(1, builder.build()) } }