Ana içeriğe atla
Rozetler, mobil uygulama simgenizde görünen küçük numaralı noktalardır. Kullanıcı dikkatini çekmeye yardımcı olurlar ve etkileşim davranışını etkileyebilirler. Özellikle iOS’ta rozetler ek kurulum gerektirir ve esnek kontrol sunar, aşağıda açıklandığı gibi.
Android Web Push bildirimleri için rozet, bildirimler üzerinde gösterilen küçük simgeyi ifade eder—uygulama simgesini değil—ve özelleştirilebilir. Web Push Rozetleri’ne bakın.

Android rozetleri

Android uygulama simgesi rozet davranışı Android bildirim kategorileri aracılığıyla yönetilebilir. Bir kategorinin (kanalın) rozet gösterip göstermediğini kontrol edebilir ve kategori bazında rozet davranışını ayarlayabilirsiniz.

Huawei rozetleri

Huawei cihazlarında, bir rozet kullanıcının cihaz ayarlarına bağlı olarak uygulama simgesinde bir sayı veya nokta olarak görüntülenebilir. Rozetler, okunmamış mesajları veya bekleyen işlemleri göstermeye yardımcı olur ve kullanıcıları uygulamayı açmaya teşvik eder. OneSignal, Huawei rozet sayılarını doğrudan kontrol paneli veya API aracılığıyla kontrol etmenize olanak tanır.

Huawei rozetleri nasıl çalışır

  • Rozet, uygulama simgenizde kullanıcının cihaz düzeyinde rozet görüntüleme ayarına (cihazın Ayarlar > Bildirimler > Uygulama simgesi rozetleri bölümünde kontrol edilir) bağlı olarak sayısal değer veya nokta olarak görüntülenir. API çağrınız temel sayıyı kontrol eder; cihaz görsel stili belirler.
  • huawei_badge_class, herhangi bir rozet işlemi için gereklidir. Bu, uygulamanızın giriş Activity’sinin <package_name>.<ActivityName> formatında tam nitelikli sınıf adıdır (örneğin, com.example.myapp.MainActivity). Huawei sistemine rozetin hangi uygulama simgesine uygulanacağını bildirir.
  • Aynı istekte hem huawei_badge_set_num hem de huawei_badge_add_num ayarlarsanız, huawei_badge_set_num öncelik alır.
  • Ne huawei_badge_set_num ne de huawei_badge_add_num sağlanmazsa (ancak huawei_badge_class ayarlıysa), rozet sayısı varsayılan olarak 1 artar.
  • huawei_badge_set_num 0 ile 99 arasında değerler kabul eder. 0 olarak ayarlamak rozeti temizler.
  • huawei_badge_add_num 1 ile 99 arasında değerler kabul eder. Örneğin, uygulama şu anda 5 rozet gösteriyorsa ve huawei_badge_add_num: 3 gönderirseniz, rozet 8 olur.

Rozetlerle Huawei push gönderme

  1. Mesajlar > Push veya Şablonlar’a gidin
  2. Platform Ayarları > Huawei Android’e Gönder > Rozet altında
  3. Aşağıdakilerden birini seçin:
    • Ayarlama — rozet bu bildirimden etkilenmez
    • Ayarla — rozeti belirli bir sayıya ayarlar (0-99)
    • Artır — mevcut rozet sayısını artırır (1-99)

Rozetleri temizleme

Huawei, kullanıcı uygulamayı açtığında veya bir bildirime dokunduğunda rozeti otomatik olarak temizlemez. Rozeti temizlemek için iki seçeneğiniz var:
  • API veya kontrol paneli aracılığıyla: huawei_badge_set_num’u 0 olarak ayarlanmış bir bildirim gönderin (veya kontrol panelinde Ayarla > 0 kullanın). Görünür bir bildirim görünmesini istemiyorsanız, bu bir veri/arka plan bildirimi olabilir.
  • İstemci tarafı kod aracılığıyla: Uygulamanız Huawei rozet API’sini kullanarak rozeti yerel olarak temizleyebilir. Bu, AndroidManifest.xml dosyanızda com.huawei.android.launcher.permission.CHANGE_BADGE iznini gerektirir. Uygulama ayrıntıları için Huawei rozet geliştirme kılavuzu’na bakın.
huawei_badge_set_num parametresi EMUI 10.0.0 veya sonrası ve Push SDK 10.1.0 veya sonrasını gerektirir. Eski cihazlarda yalnızca huawei_badge_add_num desteklenir.

iOS rozetleri

iOS’ta rozet sayılarının doğru şekilde artmasını sağlamak için şunları yapılandırmanız gerekir:
  • OneSignalNotificationServiceExtension
  • App Groups
Tam talimatlar için Mobil SDK kurulumu’na bakın. Varsayılan olarak, OneSignal SDK:
  1. Uygulama açıldığında uygulama simgesi rozetini temizler.
  2. Bildirim Merkezi’nden bildirimleri kaldırır.
Bildirimleri korumak ve rozet mantığını manuel olarak yönetmek istiyorsanız (örn. kendi sayacınızı kullanarak veya cihazlar arasında durumu senkronize ederek), bu otomatik davranışı devre dışı bırakabilirsiniz. Manuel rozet kontrolü için yaygın kullanım durumları
  • Uygulama başlatıldığında veya devam ettiğinde rozeti sıfırlama
  • Ön planda bir bildirim alındığında rozeti artırma
  • Bir mesaj okunduğunda veya kapatıldığında azaltma
  • App Groups veya arka ucunuz aracılığıyla cihazlar veya uygulama uzantıları arasında rozet durumunu senkronize etme

Otomatik bildirim ve rozet temizlemeyi devre dışı bırakın

Uygulamanızın info.plist dosyasında, Anahtar: OneSignal_disable_badge_clearing ile Boolean türünde Değer YES ekleyin
<key>OneSignal_disable_badge_clearing</key>
<true/>
Bu, SDK’nın uygulama açıldığında bildirimleri otomatik olarak kaldırmasını veya rozeti sıfırlamasını önler.

iOS yerel rozet yönetimi

OneSignal’ın otomatik rozet temizlemesini devre dışı bırakırsanız, rozet davranışını kontrol etmek için Apple’ın yerel API’lerini kullanabilirsiniz.
Apple, iOS 17’de UIApplication.shared.applicationIconBadgeNumber’ı kullanımdan kaldırdı. Artık UserNotifications çerçevesinden aşağıdaki yöntemleri kullanmalısınız:
Rozet sayısını ayarlama Uygulama simgesindeki rozeti belirli bir değere ayarlamak için:
Swift
import UserNotifications
import UIKit

if #available(iOS 17.0, *) {
  UNUserNotificationCenter.current().setBadgeCount(5) { error in
    if let error = error {
      print("Failed to set badge count: \(error.localizedDescription)")
    } else {
      print("Badge count updated successfully.")
    }
  }
} else {
  UIApplication.shared.applicationIconBadgeNumber = 5
}
Mevcut rozet sayısını alma iOS, sistemden mevcut rozet sayısını almanız için bir yöntem sağlamaz. Rozet sayısını uygulamanızın durumunda takip etmelisiniz (örneğin, UserDefaults, uygulamanızın veri modeli veya arka ucunuzla senkronize ederek kullanarak).
Swift
// Example: Store and retrieve badge count using UserDefaults
let badgeCount = UserDefaults.standard.integer(forKey: "badgeCount")
// Update badge count as needed
UserDefaults.standard.set(badgeCount, forKey: "badgeCount")
Rozeti artırma veya azaltma Rozet mantığını manuel olarak yönetmelisiniz, çünkü yüklerde göreceli değişiklikler (+1 veya -1 gibi) desteklenmez. Saklanan rozet sayınızı güncelleyin ve ardından ayarlayın:
Swift
// Example: Increment badge count and update system badge
let currentCount = UserDefaults.standard.integer(forKey: "badgeCount")
let updatedCount = max(0, currentCount + 1)
UserDefaults.standard.set(updatedCount, forKey: "badgeCount")

if #available(iOS 17.0, *) {
  UNUserNotificationCenter.current().setBadgeCount(updatedCount)
} else {
  UIApplication.shared.applicationIconBadgeNumber = updatedCount
}
Rozeti temizleme Rozeti tamamen kaldırmak için:
Swift

if #available(iOS 17.0, *) {
  UNUserNotificationCenter.current().setBadgeCount(0)
} else {
  UIApplication.shared.applicationIconBadgeNumber = 0
}

Rozetlerle iOS push gönderme

OneSignal kontrol panelinde veya API’yi kullanarak rozet sayısını ayarlayabilirsiniz.
  1. Mesajlar > Push veya Şablonlar’a gidin
  2. Platform Ayarları > Apple iOS’a Gönder > Rozetler altında
  3. Şunlardan birini seçin:
    • Belirli bir sayıya ayarlayın
    • Göreceli bir miktarda artırın
iOS push bildirimleri gönderirken rozet sayısı bu seçeneklere göre değişecektir. Uygulama açıksa, otomatik rozet temizlemeyi devre dışı bırakmak için yukarıdaki talimatları takip etmediyseniz rozet sayısı sıfırlanacaktır.
Rozetler öğreticisi tamamlandı! Sonraki adımlar: