Ana içeriğe atla
Bu kılavuz, Android Studio kullanarak Android uygulamanıza OneSignal ekleme sürecinde size yol gösterir. SDK’mızı yükleyecek, push ve uygulama içi mesajları yapılandıracak ve her şeyin çalıştığını doğrulamak için test mesajları göndereceksiniz. OneSignal’ı ilk kez kullanıyorsanız adımları sırasıyla takip edin. Deneyimliyseniz ihtiyacınız olan bölümlere doğrudan geçebilirsiniz.
Yapay zeka kodlama asistanı mı kullanıyorsunuz? Yapay zeka destekli kurulum için şu istemi kullanın:
Integrate the OneSignal Android SDK into this codebase.

Follow the instructions at:
https://raw.githubusercontent.com/OneSignal/sdk-ai-prompts/main/docs/android/ai-prompt.md

Adım 0. OneSignal’da FCM yapılandırması (push göndermek için gerekli)

Bu adımı tamamlamadan OneSignal Android SDK’sını yükleyip başlatabilirsiniz. Ancak Firebase Cloud Messaging (FCM) kimlik bilgileri OneSignal uygulamanızda yapılandırılana kadar push bildirimleri teslim edilmeyecektir.
Şirketinizin zaten bir OneSignal hesabı varsa, uygulamayı yapılandırmak için yönetici rolüyle davet edilmeyi isteyin. Aksi takdirde, başlamak için ücretsiz bir hesap oluşturun.
Bu adımlar OneSignal uygulamanızı Firebase Cloud Messaging (FCM) ile bağlar. Bunu uygulama başına yalnızca bir kez yapmanız gerekir.
  1. https://onesignal.com adresine giriş yapın ve Uygulamanızı oluşturun veya seçin.
  2. Settings > Push & In-App bölümüne gidin.
  3. Google Android (FCM) seçeneğini seçin ve kurulum sihirbazında Continue ile devam edin.
  4. Firebase Server Key veya Service Account bilgilerinizi girin.
  5. App ID’nizi almak için kurulum sihirbazında devam edin. Bu, SDK’yı başlatmak için kullanılacaktır.
Tam kurulum talimatları için Mobil push kurulumu kılavuzumuza bakın.

Kurulum sözleşmesi ve gereksinimler

Bu bölüm, kılavuz boyunca kullanılan araçları, sürümleri ve varsayımları özetler.
  • SDK sürümü: 5.6.1+ (en son: sürümleri kontrol edin)
  • Yapay zeka kurulum talimatları: https://raw.githubusercontent.com/OneSignal/sdk-ai-prompts/main/docs/android/ai-prompt.md
  • SDK deposu: https://github.com/OneSignal/OneSignal-Android-SDK
  • Android Studio: Meerkat+ (2024.2.1+)
  • Android API: Minimum 23+ (Android 6.0+), önerilen 31+ (Android 12+)
  • Cihaz/Emülatör: Google Play Services yüklü Android 7.0+
  • Gerekli bağımlılık: com.onesignal:OneSignal:[5.6.1, 5.6.99]
  • Application sınıfı: Doğru SDK başlatma için gereklidir
  • App ID formatı: 36 karakterlik UUID (örnek: 12345678-1234-1234-1234-123456789012) — OneSignal Dashboard > Settings > Keys & IDs bölümünde bulabilirsiniz
  • Başlatma: OneSignal.initWithContext(this, "YOUR_APP_ID")
  • Pil Optimizasyonu: Arka plan bildirimlerini etkileyebilir
  • Önerilen: Cihazlar arasında kullanıcıları birleştirmek için OneSignal.login("user_id") ile External ID atayın

Android kurulum adımları

Aşağıdaki adımların sonunda şunlara sahip olacaksınız:
  • Android uygulamanızda yüklenmiş ve başlatılmış OneSignal SDK
  • Gerçek bir cihazda doğru şekilde çalışan push bildirim izni istemi
  • Başarıyla teslim edilmiş bir test push ve uygulama içi mesaj
Adım 0’ı (OneSignal’da FCM Yapılandırması) atladıysanız, aşağıdaki Android Studio kurulumunu yine de tamamlayabilirsiniz. Push bildirimlerini test etmeden veya göndermeden önce Adım 0’ı tamamlayın.

Adım 1. OneSignal SDK’sını ekleyin

  1. Android Studio’da build.gradle.kts (Module: app) veya build.gradle (Module: app) dosyanızı açın
  2. dependencies bölümünüze OneSignal’ı ekleyin:
implementation("com.onesignal:OneSignal:[5.6.1, 5.6.99]")
  1. Gradle Senkronizasyonu: Görünen afişte Sync Now seçeneğine tıklayın veya File > Sync Project with Gradle Files yolunu izleyin
Gradle senkronizasyonunun bağımlılık çakışması olmadan başarıyla tamamlandığını doğrulayın.

Adım 2. Application sınıfını oluşturun ve yapılandırın

Tüm giriş noktalarında doğru SDK kurulumunu sağlamak için OneSignal’ı Application sınıfınızın onCreate metodunda başlatmak en iyi uygulamadır. Henüz yoksa bir Application sınıfı oluşturun:
  1. File > New > Kotlin Class/File (veya Java Class)
  2. Ad: ApplicationClass (veya tercih ettiğiniz ad)
Aşağıdaki OneSignal kodunu Application sınıfına ekleyin. YOUR_APP_ID kısmını Dashboard > Settings > Keys & IDs bölümündeki gerçek OneSignal App ID’nizle değiştirin.
// FILE: ApplicationClass.kt
// PURPOSE: Initialize OneSignal when your app launches
// REQUIREMENT: Must be registered in AndroidManifest.xml

package com.your.package.name // Replace with your actual package name

import android.app.Application
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

import com.onesignal.OneSignal
import com.onesignal.debug.LogLevel

class ApplicationClass : Application() {
    override fun onCreate() {
        super.onCreate()

        // Enable verbose logging to debug issues (remove in production)
        OneSignal.Debug.logLevel = LogLevel.VERBOSE

        // Replace with your 36-character App ID from Dashboard > Settings > Keys & IDs
        OneSignal.initWithContext(this, "YOUR_APP_ID")

        // Prompt user for push notification permission
        // In production, consider using an in-app message instead for better opt-in rates
        CoroutineScope(Dispatchers.IO).launch {
            OneSignal.Notifications.requestPermission(false)
        }
    }
}
Bir Activity içinde (örneğin MainActivity) başlatma önerilmez çünkü derin bağlantılardan veya bildirimlerden gelen soğuk başlatmalarda çağrılmayabilir. Güvenilirlik için OneSignal’ı her zaman Application sınıfınızda başlatın.
Application sınıfını kaydedin:
  1. Uygulamanızın AndroidManifest.xml dosyasını açın
  2. <application> etiketinize android:name=".ApplicationClass" ekleyin (farklı bir ad belirlediyseniz .ApplicationClass kısmını gerçek sınıf adınızla değiştirin).
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:name=".ApplicationClass"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        ...
      </application>

  </manifest>
Uygulamanın hatasız derlenip çalıştığını doğrulayın.

Adım 3. Varsayılan bildirim simgelerini yapılandırın (önerilen)

Uygulamanızın markasına uyması için bildirim simgelerini özelleştirin. Bu adım isteğe bağlıdır ancak profesyonel bir görünüm için önerilir.

Adım 4. Entegrasyonu test edin

Abonelik oluşturulmasını doğrulayın:
  1. Google Play Services yüklü bir cihaz veya emülatörde uygulamayı başlatın
  2. Dashboard > Audience > Subscriptions bölümünü kontrol edin — durum “Never Subscribed” gösterir
  3. İzin istemi göründüğünde kabul edin
  4. Dashboard’u yenileyin — durum “Subscribed” olarak değişir
iOS ve Android push izin istemlerinin örneği.
'Never Subscribed' durumundaki Aboneliği gösteren Dashboard.
Push izinlerini verdikten sonra, Abonelik durumunun 'Subscribed' olarak güncellendiğini görmek için dashboard'u yenileyin.
Başarıyla bir mobil Abonelik oluşturdunuz. Mobil abonelikler, kullanıcılar uygulamanızı bir cihazda ilk kez açtığında veya uygulamayı aynı cihazda kaldırıp yeniden yüklediklerinde oluşturulur.

Test Aboneliği ve segment oluşturun

  1. Aboneliğin yanındaki simgesine tıklayın > Add to Test Subscriptions > bir ad verin
  2. Audience > Segments > New Segment bölümüne gidin
  3. Ad: Test Users, filtre olarak Test Users ekleyin > Create Segment
Test Aboneliği ekleyin.
Test Users filtresiyle bir 'Test Users' segmenti oluşturun.
Başarıyla bir test kullanıcıları segmenti oluşturdunuz.Artık bu bireysel cihaza ve test kullanıcısı gruplarına mesaj göndermeyi test edebiliriz.

API ile test push gönderin

  1. Settings > Keys & IDs bölümüne gidin.
  2. Sağlanan kodda, aşağıdaki koddaki YOUR_APP_API_KEY ve YOUR_APP_ID kısımlarını gerçek anahtarlarınızla değiştirin. Bu kod, daha önce oluşturduğumuz Test Users segmentini kullanır.
curl -X POST 'https://api.onesignal.com/notifications' \
  -H 'Content-Type: application/json; charset=utf-8' \
  -H 'Authorization: Key YOUR_APP_API_KEY' \
  -d '{
    "app_id": "YOUR_APP_ID",
    "target_channel": "push",
    "name": "Testing basic setup",
    "headings": { "en": "👋" },
    "contents": {"en": "Hello world!"},
    "included_segments": ["Test Users"],
    "big_picture": "https://avatars.githubusercontent.com/u/11823027?s=200&v=4"
  }'
Push bildirimlerindeki görseller daraltılmış bildirim görünümünde küçük görünür. Tam görseli görmek için bildirimi genişletin.
Onaylı teslimi gösteren teslim istatistikleri (ücretsiz planlarda kullanılamaz).
Test cihazının aşağıdakilere sahip bir bildirim aldığını doğrulayın:
  • Özel simgeniz (yapılandırıldıysa)
  • Genişletildiğinde büyük görsel
  • Dashboard > Delivery > Sent Messages bölümünde “Confirmed” durumu (ücretsiz planlarda kullanılamaz).
  • Bildirim almadınız mı? Mobil push gösterilmiyor sayfasına bakın.
  • Özel simge yok mu? Simge adının onesignal_small_icon_default olduğunu ve doğru drawable klasörlerinde bulunduğunu doğrulayın.
  • Sorun mu yaşıyorsunuz? API isteğini ve uygulama başlatılmasından sonuna kadar olan günlüğü bir .txt dosyasına kopyalayıp yapıştırın. Ardından her ikisini de support@onesignal.com adresiyle paylaşın.

Uygulama içi mesajları test edin

  1. Uygulamayı 30 saniyeden fazla kapatın
  2. Dashboard > Messages > In-App > New In-App > Welcome şablonunu seçin
  3. Hedef kitle: Test Users segmenti
  4. Tetikleyici: On app open
  5. Zamanlama: Every time trigger conditions are satisfied
  6. Make Message Live seçeneğine tıklayın
  7. Uygulamayı açın
'Test Users' segmentini uygulama içi mesajla hedefleme.
Uygulama içi Hoş Geldiniz mesajının örnek özelleştirmesi.
Uygulama içi mesaj zamanlama seçenekleri.
Cihazlarda gösterilen hoş geldiniz uygulama içi mesajı.
Test cihazının bir uygulama içi mesaj aldığını doğrulayın. Daha fazla ayrıntı için Uygulama içi mesaj kurulumu kılavuzuna bakın.
Mesajı göremiyor musunuz?
  • Yeni bir oturum başlatın
  • Hâlâ Test Users segmentinde misiniz?
    • Uygulamayı yeniden yüklediyseniz veya cihaz değiştirdiyseniz, cihazı Test Abonelikleri’ne tekrar ekleyin ve Test Users segmentinin bir parçası olduğunu doğrulayın.
  • Sorun mu yaşıyorsunuz?
    • Yukarıdaki adımları tekrarlarken Hata Ayıklama Günlüğü Alma kılavuzunu takip edin. Bu, support@onesignal.com ile paylaşabileceğiniz ek günlük kaydı oluşturacak ve neler olduğunu araştırmanıza yardımcı olacağız.
OneSignal SDK’sını başarıyla kurdunuz ve şu önemli kavramları öğrendiniz:Uygulamanızdaki kullanıcıları tanımlamak ve ek özellikleri ayarlamak için bu kılavuza devam edin.

Yaygın hatalar ve çözümler

Hata / BelirtiNedenÇözüm
Cannot resolve symbol 'OneSignal'SDK bağımlılığı eklenmemiş veya gradle senkronize edilmemişbuild.gradle dosyasına bağımlılığı ekleyin ve projeyi senkronize edin
Application class not foundApplication sınıfı manifest’te kayıtlı değil<application> etiketine android:name=".ApplicationClass" ekleyin
Google Play Services not availableEmülatör/cihazda Play Services eksikPlay Store’lu bir cihaz veya Google API’li bir emülatör kullanın
Push alındı ancak varsayılan Android simgesiÖzel simge yapılandırılmamış veya yanlış adonesignal_small_icon_default adında bildirim simgesi oluşturun
Push bildirimi alınmadıFCM OneSignal’da yapılandırılmamışAdım 0’ı tamamlayın: OneSignal dashboard’unda FCM kimlik bilgilerini yapılandırın
Uygulama içi mesajlar gösterilmiyorOturum başlatılmamış veya ağ sorunlarıUygulamayı 30+ saniye kapatın, yeniden açın, internet bağlantısını kontrol edin
Manifest merger failedÇakışan manifest özellikleriYinelenen uygulama adları veya izin çakışmalarını kontrol edin
Pil optimizasyonu bildirimleri engelliyorCihaz güç yönetimiKullanıcıları uygulamanız için pil optimizasyonunu devre dışı bırakmaya yönlendirin
Sorun teşhis edilemiyorYetersiz günlük bilgisiAyrıntılı günlük kaydı ekleyin ve logcat çıktısında hataları kontrol edin

Kullanıcı yönetimi

Daha önce mobil Abonelik oluşturmayı gösterdik. Şimdi OneSignal SDK’sını kullanarak tüm Abonelikleri (push, e-posta ve SMS dahil) genelinde Kullanıcıları tanımlamaya geçeceğiz.

External ID atayın (önerilen)

Cihazlar, e-posta adresleri ve telefon numaraları arasında kullanıcıları tutarlı bir şekilde tanımlamak için backend’inizin kullanıcı tanımlayıcısını kullanarak bir External ID atayın. Bu, mesajlaşmanızın kanallar ve 3. taraf sistemler arasında birleşik kalmasını sağlar. Daha fazla ayrıntı ve Java kod örnekleri için Mobil SDK referansı sayfamıza bakın.
Kotlin
// Call when user logs in or is identified, safe to call multiple times
// Typically used in a login completion handler, or on app launch if already authenticated
fun onUserAuthenticated(userId: String) {
    OneSignal.login(userId)
}

// If you want to remove the External ID from the Subscription, setting it to an anonymous user
fun onUserLoggedOut() {
    OneSignal.logout()
}
OneSignal, Abonelikler (Subscription ID) ve Kullanıcılar (OneSignal ID) için benzersiz salt okunur kimlikler oluşturur.SDK’mız aracılığıyla External ID ayarlamak, nasıl oluşturulduklarına bakılmaksızın kullanıcıları tüm abonelikleri genelinde tanımlamak için şiddetle önerilir.SDK referans kılavuzundaki login metodu hakkında daha fazla bilgi edinin.

Etiketler ve Özel Olaylar ekleyin

Etiketler ve Özel Olaylar, kullanıcılarınıza veri eklemenin iki yoludur. Etiketler key-value dizelerinden oluşur ve genellikle kullanıcı özellikleriyle (username, role veya status gibi) ilişkilendirilirken, Özel Olaylar JSON formatında olup genellikle eylemlerle (new_purchase, abandoned_cart ve ilişkili özellikler gibi) ilişkilendirilir. Her ikisi de gelişmiş Mesaj Kişiselleştirme ve Journeys’i desteklemek için kullanılabilir. Daha fazla ayrıntı ve Java kod örnekleri için Mobil SDK referansı sayfamıza bakın.
Kotlin
// Add a tag when the user's name is set
OneSignal.User.addTag("username", "john_doe")

// Create a custom event when user abandoned a cart
val properties = mapOf(
    "product_id" to "123456",
    "product_name" to "Product Name",
    "product_price" to 100,
    "product_quantity" to 1
)
OneSignal.User.trackEvent("abandoned_cart", properties)
Etiketler ve Özel Olayların nasıl kullanılacağı hakkında daha fazla ayrıntı için Etiketler ve Özel Olaylar kılavuzlarına bakın.

E-posta ve/veya SMS abonelikleri ekleyin

Push bildirimlerine ek olarak e-posta ve SMS kanalları aracılığıyla kullanıcılara ulaşabilirsiniz. E-posta adresi ve/veya telefon numarası OneSignal uygulamasında zaten mevcutsa, SDK bunu mevcut kullanıcıya ekleyecektir — kopya oluşturmaz. Daha fazla ayrıntı ve Java kod örnekleri için Mobil SDK referansı sayfamıza bakın.
Kotlin
// Add email subscription
// Call when user provides their email (e.g., account creation, settings update) after calling OneSignal.login("user_id")
OneSignal.User.addEmail("user@example.com")

// Add SMS subscription
// Use E.164 format: + country code + number
// Call when user provides their phone number (e.g., account creation, settings update) after calling OneSignal.login("user_id")
OneSignal.User.addSms("+15551234567")
External ID ile birleştirilmiş push, e-posta ve SMS aboneliklerine sahip bir kullanıcı profili.
Çok kanallı iletişim için en iyi uygulamalar
  • E-posta veya SMS abonelikleri eklemeden önce açık onay alın.
  • Her iletişim kanalının faydalarını kullanıcılara açıklayın.
  • Kullanıcıların tercih ettikleri kanalları seçebilmeleri için kanal tercihleri sunun.

Gizlilik ve kullanıcı onayı

OneSignal’ın kullanıcı verilerini ne zaman topladığını kontrol etmek için SDK’nın onay kapılama yöntemlerini kullanın. Daha fazla ayrıntı ve Java kod örnekleri için Mobil SDK referansı sayfamıza bakın.
Kotlin
// In ApplicationClass onCreate(), BEFORE OneSignal.initWithContext()
// Use this if your app requires GDPR or other privacy consent before data collection
OneSignal.consentRequired = true

// Later, after user grants consent (e.g., taps "I Agree" on your consent screen)
OneSignal.consentGiven = true
Daha fazla bilgi için Gizlilik ve güvenlik belgelerimize bakın:

Push izinleri isteme

Uygulama açılışında hemen requestPermission() çağırmak yerine daha stratejik bir yaklaşım benimseyin. İzin istemeden önce push bildirimlerinin değerini açıklamak için bir uygulama içi mesaj kullanın. En iyi uygulamalar ve uygulama ayrıntıları için Push izinleri isteme kılavuzumuza bakın.

Push, kullanıcı ve uygulama içi olayları dinleyin

Kullanıcı eylemlerine ve durum değişikliklerine tepki vermek için SDK dinleyicilerini kullanın. Bunları Application sınıfınızda OneSignal.initWithContext() çağrısından sonra ekleyin.

Push bildirim olayları

Kotlin
// Add click listener to handle when users tap notifications
val clickListener = object : INotificationClickListener {
  override fun onClick(event: INotificationClickEvent) {
    Log.d("OneSignal", "Notification clicked: ${event.notification.title}")
  }
}
OneSignal.Notifications.addClickListener(clickListener)

Kullanıcı durumu değişiklikleri

Örnek, push abonelik gözlemcisinin nasıl kullanılacağını gösterir. Kullanıcı durumu gözlemcisi ve bildirim izni gözlemcisi gibi diğer kullanıcı durumu olayları Mobil SDK Referansı’nda mevcuttur.
Kotlin
// Add subscription observer to track push subscription changes
class MyObserver : IPushSubscriptionObserver {
  init {
    OneSignal.User.pushSubscription.addObserver(this)
  }

  override fun onPushSubscriptionChange(state: PushSubscriptionChangedState) {
    if (state.current.optedIn) {
      println("User is now opted-in with push token: ${state.current.token}")
    }
  }
}

Uygulama içi mesaj olayları

Ek uygulama içi mesaj yöntemleri Mobil SDK Referansı’nda mevcuttur.
Kotlin
// Add click listener for in-app message interactions
val clickListener = object : IInAppMessageClickListener {
  override fun onClick(event: IInAppMessageClickEvent) {
    print(event.result.actionId)
  }
}
OneSignal.InAppMessages.addClickListener(clickListener)

Gelişmiş kurulum ve özellikler

Android’e özgü özellikler

Evrensel özellikler

Tam SDK yöntem belgeleri için Mobil SDK Referansı’nı ziyaret edin.
Yardıma mı ihtiyacınız var?Destek ekibimizle sohbet edin veya support@onesignal.com adresine e-posta gönderinLütfen şunları ekleyin:
  • Yaşadığınız sorunun ayrıntıları ve varsa yeniden üretme adımları
  • OneSignal Uygulama Kimliğiniz
  • Varsa Harici ID veya Abonelik ID
  • Varsa OneSignal Panosunda test ettiğiniz mesajın URL’si
  • İlgili günlükler veya hata mesajları
Size yardımcı olmaktan mutluluk duyarız!