> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Bildirim tepsisini yönetme

> OneSignal mobil push bildirimlerinin Android ve iOS'ta bildirim tepsisindeki davranışı: tıklama ve kapatma işleme, geri yüklenen bildirimler, rozetler, bildirimleri programatik olarak temizleme ve servis uzantıları.

Push bildirimlerinizin bir cihazda görüntülendikten sonra başına gelenleri anlamak ve kontrol etmek için bu kılavuzu kullanın: tıklama ve kapatmanın ne yaptığı, Android'in bildirimleri ne zaman yeniden görüntülediği, rozetlerin nasıl senkronize kaldığı ve hangi SDK araçlarının tepsiyi uygulama kodunuzdan yönetmenize olanak tanıdığı.

Bu sayfa mobil push'u (Android ve iOS) kapsar. Web push davranışı için [Web push bildirim davranışı](./push) sayfasına bakın.

***

## Tepsideki bildirim yaşam döngüsü

Bir cihazda görüntülenen her OneSignal bildirimi SDK tarafından izlenir. Sonrasında ne olduğu, bildirimin bir daha yeniden görünüp görünemeyeceğini belirler:

| Olay                                                                                               | Ne olur                                                                                                                                                           | Yeniden görünebilir mi?                                                    |
| -------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| **Kullanıcı tıklar**                                                                               | Tepsiden kaldırılır, tıklandı olarak işaretlenir, [tıklama dinleyicisi](./mobile-sdk-reference#addclicklistener-push) tetiklenir, launch URL veya intent çalışır. | Hayır                                                                      |
| **Kullanıcı kapatır** (kaydırarak silme veya Tümünü temizle)                                       | Kapatıldı olarak işaretlenir.                                                                                                                                     | Hayır                                                                      |
| **Uygulamanız [OneSignal SDK yöntemleriyle](#bildirimleri-programatik-olarak-temizleme) temizler** | Tepsiden kaldırılır ve kapatıldı olarak işaretlenir.                                                                                                              | Hayır                                                                      |
| **Uygulamanız Android'in yerel `NotificationManager`'ıyla iptal eder**                             | Tepsiden kaldırılır, ancak kapatıldı olarak işaretlen**mez**.                                                                                                     | Evet, Android'de bir sonraki uygulama yeniden başlatmasında geri yüklenir  |
| **Android zorla kaldırır** (cihaz yeniden başlatma, uygulama güncellemesi, zorla kapatma)          | Kullanıcı eylemi olmadan işletim sistemi tarafından kaldırılır.                                                                                                   | Evet, bkz. [Geri yüklenen bildirimler](#geri-yüklenen-bildirimler-android) |

<Warning>
  Android'de bildirimleri her zaman Android'in yerel `NotificationManager.cancel()` veya `cancelAll()` yöntemleri yerine OneSignal SDK yöntemleriyle temizleyin. Yerel API'lerle iptal edilen bildirimler kapatıldı olarak işaretlenmez, bu nedenle SDK uygulama bir sonraki yeniden başlatıldığında onları geri yükler.
</Warning>

***

## Tıklama ve kapatma davranışı

Bir bildirime **tıklamak**, uygulamanızı (veya bildirimin launch URL'sini) açar, bildirimi tepsiden kaldırır ve bildirim payload'u ile tıklanan eylem düğmesi ID'siyle birlikte [`addClickListener()`](./mobile-sdk-reference#addclicklistener-push) callback'ini tetikler. Tıklanan bildirim bir gruba aitse, SDK grup özetini günceller veya kaldırır. Tıklanan bildirimler asla geri yüklenmez.

Bir bildirimi **kapatmak** (kaydırarak silmek veya tepside Tümünü temizle'ye dokunmak), bildirimi kapatıldı olarak işaretler ve rozet sayısını ile varsa grup özetini günceller. Kapatılan bildirimler asla geri yüklenmez. SDK bir kapatma dinleyicisi sağlamaz; kapatma dahili olarak izlenir.

Uygulamanız ön plandayken görüntülenen bildirimler önce, görüntülemeyi engelleyebileceğiniz [ön plan yaşam döngüsü dinleyicisinden](./mobile-sdk-reference#addforegroundlifecyclelistener-push) geçer.

***

## Geri yüklenen bildirimler (Android)

Android, bildirimleri kullanıcı eylemi olmadan zorla kaldırabilir: cihaz yeniden başlatıldığında, uygulama güncellendiğinde ve zorla kapatıldığında (bazı cihazlardaki agresif pil yöneticileri dahil). Android SDK, etkilenen bildirimleri uygulamanın bir sonraki soğuk başlatmasında otomatik olarak yeniden görüntüler (geri yükler), böylece kullanıcının hiç görmediği veya kapatmadığı teslim edilmiş mesajlar kaybolmaz.

Geri yüklenen bildirimler, düşük önemli [Restored kategorisinde](./android-notification-categories#restored) sessizce yeniden görünür. Yalnızca tıklanmamış veya kapatılmamış, TTL'si içinde olan ve son 7 gün içinde alınan bildirimler geri yüklenir; en fazla 49 bildirim.

Tam uygunluk kuralları ve kontroller [Geri yüklenen bildirimler (Android)](./osnotification-payload#restored-notifications-android) sayfasındadır. Geri yüklemeleri azaltmak için gönderirken daha kısa bir `ttl` kullanın veya tüketilen bildirimleri [aşağıdaki SDK yöntemleriyle](#bildirimleri-programatik-olarak-temizleme) temizleyin. iOS'ta geri yükleme davranışı yoktur.

***

## Rozet davranışı

**iOS**'ta rozetler bildirim payload'u tarafından ayarlanır (`ios_badgeType` ve `ios_badgeCount`) ve servis uzantısının sayıları doğru şekilde güncelleyebilmesi için bir App Group gerektirir. Varsayılan olarak SDK, uygulama açıldığında rozeti temizler.

**Android**'de uygulama simgesi rozeti, tepsideki etkin OneSignal bildirimlerinin sayısını yansıtır ve [bildirim kategorileri](./android-notification-categories) aracılığıyla yönetilir. SDK, bildirimler görüntülendiğinde, kapatıldığında, tıklandığında veya temizlendiğinde sayıyı otomatik olarak günceller ve `clearAllNotifications()` çağırdığınızda `0`'a sıfırlar.

Kurulum, platform başına seçenekler ve sorun giderme [Rozetler](./badges) sayfasında ele alınmıştır.

***

## Bildirimleri programatik olarak temizleme

Bildirimleri, uygulama yaşam döngüsü olaylarında değil, içerikleri uygulamanızda tüketildiğinde temizleyin. Yaygın kalıplar:

* **İçerik tüketimi senkronizasyonu**: kullanıcı, bildirimlerin işaret ettiği ekranı (bir gelen kutusu, mesaj merkezi veya etkinlik akışı) açar, bu nedenle bildirimler artık gereksizdir. Hepsini temizleyin veya yalnızca bir kısmı tüketildiyse hedefli yöntemleri kullanın.
* **Çıkış yapma**: önceki kullanıcının bildirimlerinin bir sonraki kullanıcıya görünmemesi için her şeyi temizleyin.

"Tepsiyi temiz tutmak" için her uygulama başlatmasında veya ön plana geçişte temizlemekten kaçının. Tepsideki bildirimler yeniden etkileşimi sağlar ve onları temizlemek bu giriş noktasını ortadan kaldırır. Bildirim birikimini yönetiyorsanız, bildirimleri üst üste yığmak yerine değiştirmek için gönderirken `collapse_id` kullanın veya teslim edilmeyenlerin süresinin dolması için daha kısa bir TTL kullanın.

### `clearAllNotifications()`

Uygulamanızın bildirimlerini tepsiden kaldırır ve rozet sayısını `0`'a sıfırlar. Android'de bu, yalnızca OneSignal tarafından oluşturulan bildirimleri kaldırır ve geri yüklenmemeleri için onları kapatıldı olarak işaretler. iOS'ta bu, yerel bildirimler ve diğer sağlayıcılardan gelen push'lar dahil olmak üzere uygulamanızın teslim edilmiş **tüm** bildirimlerini kaldırır. [Tam yöntem referansına](./mobile-sdk-reference#clearallnotifications) bakın.

<Note>
  Geri yüklenen bildirimleri önlemek için uygulama başlatmasında temizliyorsanız, cross-platform uygulamalarda çağrıyı Android ile sınırlandırın. iOS'ta bu çağrı, yerel bildirimleri ve diğer sağlayıcılardan gelen push'ları da kaldırır.
</Note>

### `removeNotification()` ve `removeGroupedNotifications()` (Android)

Android bildirim ID'sine göre tek bir bildirimi veya grup anahtarına göre bir gruptaki tüm bildirimleri kaldırın. Kaldırılan bildirimler kapatıldı olarak işaretlenir ve geri yüklenmez. Bunları, birkaç konuşmadan yalnızca biri gibi, tepsi içeriğinin yalnızca bir kısmı tüketildiğinde kullanın. [Yöntem referansına](./mobile-sdk-reference#removenotification-removegroupednotifications-android) bakın.

***

## Bildirimleri bir gecikme sonrasında otomatik olarak kapatma

Görüntülenen bir bildirimi belirli bir süre sonra kaldıran gönderim zamanı parametresi yoktur. Mümkün olanlar platforma göre farklılık gösterir:

* **Android 8.0 (API 26) ve üzeri**: bir [bildirim servis uzantısında](./service-extensions) `setTimeoutAfter()` kullanarak bir zaman aşımı ayarlayın. Zaman aşımı dolduğunda Android bildirimi gölgeden kaldırır. API 26'nın altındaki cihazlarda çağrı yoksayılır ve bildirim kullanıcı onunla etkileşime girene kadar kalır.
* **iOS**: desteklenmez. iOS'un teslim edilmiş bir bildirimin süresini otomatik olarak sona erdirme yöntemi yoktur. En yakın seçenekler, [`collapse_id`](./push#collapse-id-mobile-push) aracılığıyla onu daha yeni bir bildirimle değiştirmek veya daha sonraki bir push geldiğinde Apple'ın [`removeDeliveredNotifications(withIdentifiers:)`](https://developer.apple.com/documentation/usernotifications/unusernotificationcenter/removedeliverednotifications\(withidentifiers:\)) yöntemiyle bir Notification Service Extension'dan kaldırmaktır.

<CodeGroup>
  ```kotlin Kotlin theme={null}
  class NotificationServiceExtension : INotificationServiceExtension {
      override fun onNotificationReceived(event: INotificationReceivedEvent) {
          event.notification.setExtender { builder ->
              // Bu bildirimi 10 dakika sonra gölgeden kaldır (yalnızca API 26+)
              builder.setTimeoutAfter(10 * 60 * 1000L)
          }
      }
  }
  ```

  ```java Java theme={null}
  public class NotificationServiceExtension implements INotificationServiceExtension {
      @Override
      public void onNotificationReceived(INotificationReceivedEvent event) {
          event.getNotification().setExtender(builder ->
              // Bu bildirimi 10 dakika sonra gölgeden kaldır (yalnızca API 26+)
              builder.setTimeoutAfter(10 * 60 * 1000L)
          );
      }
  }
  ```
</CodeGroup>

Zaman aşımını kodda sabit olmak yerine mesaj başına yapmak için, süreyi [`additionalData`](./osnotification-payload) içinde gönderin ve servis uzantınızda olaydan okuyun.

<Note>
  `setTimeoutAfter()` ile kaldırılan bir bildirim sistem tarafından kapatılır, bu nedenle OneSignal SDK'sı onu geri yüklemez. Bunu, teslim edilmemiş bir mesajın çevrimdışı bir cihazı ne kadar süre bekleyeceğini kontrol eden ve görüntülenen bir bildirimi asla kaldırmayan `ttl` ile karıştırmayın.
</Note>

***

## Bildirimleri servis uzantılarıyla özelleştirme

[Servis uzantıları](./service-extensions), bir bildirim görüntülenmeden önce çalışarak görünümünü değiştirmenize, arka plan verisi almanıza veya görüntülemeyi tamamen engellemenize olanak tanır:

* **Android**'de `INotificationServiceExtension` uygulayın ve `NotificationCompat` seçeneklerini değiştirmek için `setExtender()` kullanın veya görüntülemeyi bastırmak için `event.preventDefault()` çağırın.
* **iOS**'ta zengin medya, rozet artırmaları ve onaylı teslimat için bir `UNNotificationServiceExtension` (kurulum sırasında oluşturulan `OneSignalNotificationServiceExtension`) kullanın.

<Warning>
  Android'de servis uzantınız [geri yüklenen bildirimler](#geri-yüklenen-bildirimler-android) için de çalışır. `onNotificationReceived` içindeki yan etkiler (analitik çağrıları, API istekleri, veritabanı yazmaları) bildirimler geri yüklendiğinde yeniden çalışır ve `setChannelId()` gibi extender değişiklikleri geri yüklemelere de uygulanır, bu da onların sesli uyarı vermesine neden olabilir. Uzantınızı, uyarı seçeneklerinin yalnızca yeni teslim edilen bildirimlere uygulanacağı şekilde tasarlayın.
</Warning>

***

## SSS

### Uygulama Android'de açıldığında eski bildirimler neden yeniden görünüyor?

Android SDK, cihaz yeniden başlatma, uygulama güncellemesi veya zorla kapatma sonrasında olduğu gibi, tepsiden zorla kaldırılan bildirimleri geri yükler. Kullanıcının kapattığı veya tıkladığı bildirimler geri yüklenmez. Uygunluk kuralları ve kontroller için [Geri yüklenen bildirimler (Android)](./osnotification-payload#restored-notifications-android) sayfasına bakın.

### TTL süresi dolduğunda bildirimi tepsiden kaldırır mı?

Hayır. TTL, teslim edilmemiş bir mesajın çevrimdışı bir cihazı ne kadar süre bekleyeceğini kontrol eder ve Android'de hangi bildirimlerin geri yüklenebileceğini de sınırlar. Tepside zaten görüntülenen bir bildirimi asla kaldırmaz. Görüntülenen bildirimleri kaldırmak için [temizleme yöntemlerini](#bildirimleri-programatik-olarak-temizleme) kullanın. Android'de belirli bir süre sonra kaldırmak için [Bildirimleri bir gecikme sonrasında otomatik olarak kapatma](#bildirimleri-bir-gecikme-sonrasında-otomatik-olarak-kapatma) bölümüne bakın.

### Tepsiyi temizlemeden rozeti temizleyebilir miyim?

iOS'ta evet: rozet, uygulama açıldığında (devre dışı bırakılmadıysa) otomatik olarak temizlenir ve tepsi içeriği yerinde kalır. Android'de rozet tepsideki etkin bildirimleri yansıtır, bu nedenle onlardan bağımsız olarak ayarlanamaz. [Rozetler](./badges) sayfasına bakın.

### Kullanıcı bir bildirimi kapattığında tetiklenen bir dinleyici var mı?

Hayır. SDK, kapatılan bildirimlerin geri yüklenmesini önlemek için kapatmayı dahili olarak izler, ancak bir kapatma olayı sunmaz. [Tıklama dinleyicisi](./mobile-sdk-reference#addclicklistener-push) yalnızca tıklamaları kapsar.

***

<Columns cols={3}>
  <Card title="Mobil SDK referansı" icon="code" href="./mobile-sdk-reference">
    Bildirim yöntemleri ve dinleyicileri için tam referans.
  </Card>

  <Card title="OSNotification payload" icon="brackets-curly" href="./osnotification-payload">
    Payload alanları ve geri yüklenen bildirim kuralları.
  </Card>

  <Card title="Mobil servis uzantıları" icon="puzzle-piece" href="./service-extensions">
    Görüntülemeden önce bildirimleri durdurun ve özelleştirin.
  </Card>
</Columns>
