Merhaba,
bu yazı Kotlin ile geliştirilen bir Android uygulamasında lokal bildirimin(notification) nasıl gönderileceği paylaşılmıştır. İlk adımda bir Android projesi oluşturularak uygulamaya bir buton eklenmiştir. Bu butona basınca lokal bildirim tetiklenerek hayata geçirilmiştir. Aşağıdaki adımları takip ederek projenize lokal bildirimi uygulayabilirsiniz.
İlk olarak Android Studio ile bir Android projesi oluşturun.
activity_main.xml e Button ekleyin. Bu butona tıklayınca local bildirim tetiklenecektir. activity_main.xml dosyasının içeriği aşağıdaki gibi olacaktır.
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity">
<Button android:id="@+id/notificationBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Create Notification" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
|
ikinci adımda ise "src/main/res/mipmap" dizinine "mipmap-xhdpi/notify.png" adında bir bildirim iconu eklenmiştir.
Son adım işlemleri ise "MainActivity.kt" class'ında olacaktır. Bildirim tetikleyecek olan button'a onClickListener set edilir. NotificationBuilder ile bildirimin başlık, açıklama icon gibi bilgileri doldurulur. NotificationChannel üzerinden titreşim ve renk bilgileri tanımlanır. Son aşamada NotificationManager'ın notify(...) methodu çağrılarak bildirim tetiklenir. MainActivity.kt dosyasının içeriği aşağıdaki gibi olacaktır.
class MainActivity : AppCompatActivity() {
lateinit var manager: NotificationManager lateinit var channel: NotificationChannel lateinit var notificationBuilder: Notification.Builder
private val channelId: String = "com.tutorials.localnotification" private val description: String = "Notification Sample Description" private val notoficationId = 1001 private val requestCode = 1002
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main)
manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationBtn.setOnClickListener {
val intent = Intent(this, LauncherActivity::class.java) val pendingIntent = PendingIntent .getActivity(this, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT)
val notificationTitle = "some notification title" val notificationContent = "some notification text"
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {//auto generated by idea channel = NotificationChannel(channelId, description, NotificationManager.IMPORTANCE_HIGH) channel.enableLights(true) channel.lightColor = Color.BLUE channel.enableVibration(true)
manager.createNotificationChannel(channel)
notificationBuilder = Notification.Builder(this, channelId) .setContentTitle(notificationTitle) .setContentText(notificationContent) .setSmallIcon(R.mipmap.notify) .setLargeIcon(BitmapFactory.decodeResource(resources, R.mipmap.notify)) .setContentIntent(pendingIntent) } else { notificationBuilder = Notification.Builder(this) .setContentTitle(notificationTitle) .setContentText(notificationContent) .setSmallIcon(R.mipmap.notify) .setLargeIcon(BitmapFactory.decodeResource(resources,R.mipmap.notify)) .setContentIntent(pendingIntent) }
manager.notify(notoficationId, notificationBuilder.build()) } } }
|
NOT1: NotificationManager, NotificationChannel ve NotificationBuilder lateinit olarak tanımlanmıştır. Bu class lar ButtonClick işleminden sonra initialize edilecektir.
lateinit var manager: NotificationManager lateinit var channel: NotificationChannel lateinit var notificationBuilder: Notification.Builder
|
NOT2: API versiyon 26 ve üzeri için NotificationBuilder deprecate edilmiştir. Dolayısıyla uygulamada 26 versiyon öncesi ve sonrası için ayrı işlem yapılmıştır.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {//auto generated by idea //... notificationBuilder = Notification.Builder(this, channelId) .setContentTitle(notificationTitle) .setContentText(notificationContent) .setSmallIcon(R.mipmap.notify) .setLargeIcon(BitmapFactory.decodeResource(resources, R.mipmap.notify)) .setContentIntent(pendingIntent) } else { notificationBuilder = Notification.Builder(this) .setContentTitle(notificationTitle) .setContentText(notificationContent) .setSmallIcon(R.mipmap.notify) .setLargeIcon(BitmapFactory.decodeResource(resources,R.mipmap.notify)) .setContentIntent(pendingIntent) }
|
uygulamanın kaynak kodlarına aşağıdan erişebilirsiniz.
github: https://github.com/lvntyldz/tutorials/tree/master/kotlin-android-app-examples/12-local-notification
Hiç yorum yok:
Yorum Gönder