Skip to content

Commit

Permalink
GitBook: [master] 5 pages modified
Browse files Browse the repository at this point in the history
  • Loading branch information
yemreak authored and gitbook-bot committed Jan 19, 2020
1 parent e143799 commit 27dcdd0
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 108 deletions.
2 changes: 1 addition & 1 deletion SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
* [🔁 AsyncTask](arkaplan/asynctask-ve-asynctaskloader/asynctask.md)
* [🔂 AsyncTask Loader](arkaplan/asynctask-ve-asynctaskloader/asynctask-loader.md)
* [🔔 Notification](arkaplan/notification-1/README.md)
* [✍ Yazılı Notlar \| Notification](arkaplan/notification-1/notification.md)
* [✍ Yazılı Notlar \| Notification](arkaplan/notification/README.md)
* [🏗️ Oluşturma \| Notification](arkaplan/notification-1/giris-or-notification.md)
* [⏰ Alarm](arkaplan/alarm.md)
* [🌠 MultiThreading](arkaplan/multithreading.md)
Expand Down
106 changes: 1 addition & 105 deletions android-servisleri/foreground-service.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,111 +141,7 @@ public class TelemetryService extends Service {

## 🔔 Bildirim Ekleme

* Android'in yeni gelen sürümleriyle beraber [NotificationChannel](https://developer.android.com/reference/android/app/NotificationChannel.html) yapısı gelmiştir
* Bu yapı ile her bildirim kategorilere ayrılmıştır
* Uygulama üzerindeki tüm bildirimleri susturmak yerine, belli başlı kategorileri susturma avantajı sağlar
* Kategorilere göre bildirim şekillerini düzenlemeye yardımcı olur

![](../.gitbook/assets/notification_example.jpeg)

```java
public class TelemetryService extends Service {
private static final String TAG = "TelemetryService";

private static final int REQUEST_SHOW_CONTENT = 0;
private static final int REQUEST_STOP = 1;

static final String ACTION_START_SERVICE = "Start telemetry service";
static final String ACTION_STOP_SERVICE = "Stop telemetry service";

@Override
public void onCreate() {
Log.d(TAG, "Servis oluşturuldu");
startForeground();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String intentAction = intent.getAction();
if (intentAction != null) {
switch (intentAction) {
case TelemetryService.ACTION_START_SERVICE: {
Log.d(TAG, "Servis başlatıldı");
break;
}
case TelemetryService.ACTION_STOP_SERVICE: {
stopForegroundService();
}
}
}

// Eğer servis öldüyse, bu dönüşten sonra Intent'siz tekrar başlat
return START_STICKY;
}

public void startForeground() {
String channelId = "";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
channelId = createNotificationChannel();
}

// Bildirime tıklandığında main uygulamayı açma isteği oluşturma
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent contentIntent = PendingIntent.getActivity(this, REQUEST_SHOW_CONTENT, intent, PendingIntent.FLAG_UPDATE_CURRENT);

// Bildirim üzerinden servisi kapatma isteği oluşturma
Intent stopSelf = new Intent(this, TelemetryService.class);
stopSelf.setAction(TelemetryService.ACTION_STOP_SERVICE);
PendingIntent pStopSelf;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
pStopSelf = PendingIntent.getForegroundService(this, REQUEST_STOP, stopSelf, PendingIntent.FLAG_CANCEL_CURRENT);
} else {
pStopSelf = PendingIntent.getService(this, REQUEST_STOP, stopSelf, PendingIntent.FLAG_CANCEL_CURRENT);
}

Notification notification = new NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.mipmap.face_deteciton)
.setContentTitle("İçerik başlığı")
.setContentText("Buraya içerikleriniz ile ilgili detyaları yazın")
.setPriority(NotificationCompat.PRIORITY_MIN)
.setCategory(NotificationCompat.CATEGORY_SERVICE)
.setContentIntent(contentIntent)
.setAutoCancel(true)
.addAction(R.mipmap.ic_launcher, "Kapat", pStopSelf) // Kapatma butonu ekleme
.build();

startForeground(101, notification);
}

@RequiresApi(Build.VERSION_CODES.O)
private String createNotificationChannel() {
String channelId = "channel id";
NotificationChannel channel = new NotificationChannel(channelId, "Bildirim kategorisi ismi", NotificationManager.IMPORTANCE_DEFAULT);
channel.setLightColor(Color.BLUE);
channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (notificationManager != null) {
notificationManager.createNotificationChannel(channel);
}

return channelId;
}

private void stopForegroundService() {
Log.d(TelemetryService.TAG, "Servis sonlandırılıyor");

stopForeground(true);
stopSelf();
}

@Override
public void onDestroy() {
Log.d(TAG, "Servis kapatıldı");
}

}
```
{% page-ref page="../arkaplan/notification-1/" %}

{% hint style="info" %}
🧙‍♂️ Detaylı bilgiler için [Create Notification](https://developer.android.com/training/notify-user/build-notification?hl=en), [PendingIntent](https://developer.android.com/reference/android/app/PendingIntent) alanlarına bakmanda fayda var
Expand Down
3 changes: 2 additions & 1 deletion arkaplan/notification-1/giris-or-notification.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ implementation "com.android.support:support-compat:28.0.0"

## 📢 Notification Channel

* 👨‍💼 Bildirimlerin yönetildiği yapıdır
* 👨‍💼 Bildirimlerin kategorilerle yönetildiği yapıdır
* 👪 Kategorilere göre bildirim şekillerini düzenlemeye yardımcı olur
* 🚀 Her bildirimin farklı biz özelliği vardır ve ayrıca yönetilir
* 😏 Kullanıcı sadece kendisini rahatsız eden bildirimleri kapatır ve sizin diğer bildirimleriniz devam eder

Expand Down
46 changes: 46 additions & 0 deletions arkaplan/notification/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
description: Android üzerinde bildirim verme işlemleri ve yönetimi
---

# 🔔 Notification

## 🎈 Notification Nedir

![](../../.gitbook/assets/notification_hand.png)

![](../../.gitbook/assets/notification_channel.png)

## 👨‍💼 Bildirimleri Yönetme

![](../../.gitbook/assets/notification_manager.png)

## 🕊️ Pending Intent

![](../../.gitbook/assets/pending_intent.png)

## 🎳 Geniş Bildirimler

![](../../.gitbook/assets/expandable_notification.png)

## 💎 Bildirim Özellikleri

![](../../.gitbook/assets/notification_types.png)

## 👨‍💻 Kod Örneği

```java
@RequiresApi(Build.VERSION_CODES.O)
private String createNotificationChannel() {
String channelId = "telemetry";
NotificationChannel channel = new NotificationChannel(channelId, "Telemetry Service", NotificationManager.IMPORTANCE_DEFAULT);
channel.setLightColor(Color.BLUE);
channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (notificationManager != null) {
notificationManager.createNotificationChannel(channel);
}

return channelId;
}
```

2 changes: 1 addition & 1 deletion calisma-yolu.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ description: "Android için belirlediğim çalışma yolları ve adımları (\U0
🔸 Uygulamalar arasında haberleşme ve kullanıcı bildirimleri

* [📢 Broadcast](haberlesme/broadcast/)
* [🔔 Notification](arkaplan/notification-1/notification.md)
* [🔔 Notification](arkaplan/notification/)
* [⏰ Alarm](arkaplan/alarm.md)

## 👨‍🏫 Ders 5
Expand Down

0 comments on commit 27dcdd0

Please sign in to comment.