Singular

Singular, pazarlama kampanyalarından gelen verileri toplayan ve sunan bir Mobil Ölçüm Ortağı (MMP) platformudur.

Adapty, seçtiğiniz abonelik etkinliklerini Singular’a gönderir. Singular kontrol panelinde her kampanyanın ne kadar gelir elde ettiğini görebilir ve reklamlarınızın etkinliğini değerlendirebilirsiniz.

Entegrasyonu kurma

Singular’ı Adapty’e Bağlama

Singular entegrasyonunu ayarlamak için Adapty Kontrol Paneli’nde Integrations > Singular bölümüne gidin, geçişi açın ve alanları doldurun.

singular-creds.webp

Aşağıdaki kimlik bilgileri mevcuttur:

  • Singular SDK Key: Zorunlu. Singular uygulamanızın production SDK anahtarı.
  • Singular SDK Key (Sandbox): İsteğe bağlı. Sandbox Singular uygulamanızın SDK anahtarı. Ayarlanmazsa sandbox etkinlikleri Singular’a gönderilmez.

Her iki anahtar da Singular kontrol panelinde Developer tools -> SDK Keys -> SDK Key (not SDK Secret) altında bulunabilir:

4bc50d1-singular_sdk_key.webp

Olayları ve etiketleri yapılandırın

Kimlik bilgilerinin altında, Adapty’den Singular’a gönderebileceğiniz üç grup olay bulunmaktadır. Adapty olaylarının tam listesi için Olaylar sayfasına bakın.

e67de0c-singular_events.webp

Adapty tarafından sağlanan varsayılan olay adlarını kullanmanızı öneririz. Ancak olay adlarını ihtiyaçlarınıza göre değiştirebilirsiniz.

Adapty, abonelik olaylarını Singular’a sunucudan sunucuya gönderir; böylece tüm abonelik olaylarını Singular kontrol panelinizde görüntüleyebilir ve bunları edinme kampanyalarınızla ilişkilendirebilirsiniz.

Warning

Entegrasyonu kurmadan önce oluşturulan profiller olaylarını Singular’a iletemiyor.

Uygulamanızı Singular’a bağlayın

Singular, 15 Temmuz 2026 tarihinde veya sonrasında oluşturulan hesaplar için Singular Device ID’yi (SDID) varsayılan olarak etkinleştirir. Bu hesaplar yalnızca v2 Event API üzerinden gelen olayları kabul eder; Adapty ise bir olayı v2’ye yalnızca kullanıcının profilinde SDID bulunduğunda gönderir. Bu tür bir hesaba olayları iletmek için SDID’yi uygulamanızdan Adapty’ye aktarın.

Singular hesabınız 15 Temmuz 2026’dan önce oluşturulduysa ve SDID etkin değilse bu adımı atlayabilirsiniz. Adapty olaylarınızı v1 Event API’ye gönderir ve herhangi bir uygulama kodu yazmanız gerekmez.

  1. Adapty’yi etkinleştirin, ardından Singular SDK’yı bir SDID callback’i ile başlatın: iOS’ta sdidReceivedHandler, Android’de SDIDAccessorHandler, React Native ve Flutter’da sdidReceivedCallback, Unity’de ise SingularSdidAccessorHandler.
  2. Singular’ın callback’i çağırmasını bekleyin. SDID, Singular SDK başladıktan sonra uygulamanıza asenkron olarak ulaşır. Singular, SDID cihazda zaten kayıtlı olsa bile her başlatmada callback’i çağırır.
  3. Callback içinde, SDID’yi setIntegrationIdentifier() ve singular_sdid anahtarıyla Adapty’ye iletin. Hiçbir Adapty SDK’sında bu anahtar için önceden tanımlanmış bir sabit bulunmadığından, anahtarı doğrudan string olarak yazın.
  4. Adapty.identify() fonksiyonunu yalnızca setIntegrationIdentifier() tamamlandıktan sonra çağırın. Adapty, etkinleştirme sırasında anonim bir profil oluşturur ve ardından identify() çözümlendiğinde tanımlı profile geçer. Bu geçiş sırasında ayarlanan bir SDID kaybolabilir.

Olay yapısı

Adapty, her olay için Singular Event API sürümünü kullanıcı profilinin SDID’ye sahip olup olmadığına göre belirler:

  • SDID ile: Adapty, https://s2s.singular.net/api/v2/evt adresine form-urlencoded gövdesiyle bir POST isteği gönderir. sdid parametresi, idfa, idfv, aifa, andi ve asid cihaz tanımlayıcılarının yerini alır. Boolean değerler true veya false olarak gönderilir.
  • SDID olmadan: Adapty, https://s2s.singular.net/api/v1/evt adresine sorgu parametreleriyle bir GET isteği gönderir.

Her iki sürüm de bunun dışında aynı parametreleri taşır. Bir v1 olayı şu şekilde yapılandırılmıştır:

{
  "n": "subscription_renewed",
  "a": "singular_sdk_key_123",
  "p": "iOS",
  "i": "com.example.app",
  "ip": "192.168.100.1",
  "idfa": "00000000-0000-0000-0000-000000000000",
  "idfv": "00000000-0000-0000-0000-000000000000",
  "ve": "17.0.1",
  "att_authorization_status": 3,
  "custom_user_id": "user_12345",
  "utime": 1709294400,
  "partner": "adapty",
  "use_ip": false,
  "is_revenue_event": true,
  "amt": 9.99,
  "cur": "USD",
  "purchase_product_id": "yearly.premium.6999",
  "purchase_transaction_id": "GPA.3383...",
  "e": "{\"is_revenue_event\":true,\"amt\":9.99,\"cur\":\"USD\",\"purchase_product_id\":\"yearly.premium.6999\",\"purchase_transaction_id\":\"GPA.3383...\"}"
}

Parametreler:

ParametreTürAçıklama
nStringOlay adı (Adapty olayından eşlenir).
aStringSingular SDK Anahtarınız.
pStringPlatform (“iOS” veya “Android”).
iStringStore Uygulama Kimliği (Bundle ID).
ipStringKullanıcının IP adresi.
sdidStringYalnızca v2. singular_sdid entegrasyon tanımlayıcısından alınan Singular Cihaz Kimliği.
idfaStringiOS, yalnızca v1. Reklam Verenler için Kimlik (büyük harf).
idfvStringiOS, yalnızca v1. Satıcılar için Kimlik (büyük harf).
aifaStringAndroid, yalnızca v1. Google Reklamcılık Kimliği (küçük harf).
andiStringAndroid, yalnızca v1. Android Kimliği (küçük harf).
asidStringAndroid, yalnızca v1. Uygulama Set Kimliği (küçük harf).
veStringİşletim sistemi sürümü.
att_authorization_statusIntegerYalnızca iOS. ATT durumu (örn. yetkili için 3).
custom_user_idStringKullanıcının Müşteri Kullanıcı Kimliği.
utimeLongOlayın saniye cinsinden UNIX zaman damgası.
partnerStringHer zaman adapty. Olayın Adapty tarafından gönderildiğini belirtir.
use_ipBooleanAdapty’nin kullanıcıya ait IP adresi olmadığında true.
is_revenue_eventBooleanOlay gelir içeriyorsa true. Yalnızca gelir olaylarıyla gönderilir.
amtFloatGelir miktarı.
curStringPara birimi kodu (örn. “USD”).
purchase_product_idStringMağazadaki Ürün Kimliği.
purchase_transaction_idStringOrijinal işlem kimliği.
eStringOlay ayrıntılarını içeren JSON dizesi (aşağıya bakın).

e parametresi (özel etkinlik verisi), şunları içeren JSON kodlu bir dizedir:

ParametreTürAçıklama
is_revenue_eventBooleanEtkinlik gelir içeriyorsa true.
amtFloatGelir miktarı.
curStringPara birimi kodu.
purchase_product_idStringMağazadaki Ürün Kimliği.
purchase_transaction_idStringOrijinal işlem kimliği.

Sorun Giderme

invalid api version: v1 hatasıyla başarısız olan olaylar

Singular hesabınız 15 Temmuz 2026 veya sonrasında oluşturulmuşsa ve olayları yalnızca v2 Event API üzerinden kabul ediyorsa, Adapty bu olayı v1’e göndermiş olabilir; bunun nedeni kullanıcı profilinde SDID bulunmamasıdır. Sorunu çözmek için uygulamanızdan Adapty’e SDID’yi aktarın; ayrıntılar için Uygulamanızı Singular’a bağlayın bölümüne bakın. setIntegrationIdentifier() çağrısı içermeyen bir uygulama sürümündeki kullanıcılar, uygulamalarını güncelleyene kadar olaylar başarısız olmaya devam eder.

access_level_updated Event Feed’de başarısız olarak görünüyor

access_level_updated yalnızca webhook’a özgü bir event’tir. Adapty bu event’i bu entegrasyona hiçbir zaman göndermez. Ancak Adapty, etkinleştirilmiş her entegrasyon için bir sonuç kaydeder ve desteklenmeyen bir event başarısızlık olarak görüntülenir.