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.
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:
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.
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.
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.
- Adapty’yi etkinleştirin, ardından Singular SDK’yı bir SDID callback’i ile başlatın: iOS’ta
sdidReceivedHandler, Android’deSDIDAccessorHandler, React Native ve Flutter’dasdidReceivedCallback, Unity’de iseSingularSdidAccessorHandler. - 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.
- Callback içinde, SDID’yi
setIntegrationIdentifier()vesingular_sdidanahtarı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. Adapty.identify()fonksiyonunu yalnızcasetIntegrationIdentifier()tamamlandıktan sonra çağırın. Adapty, etkinleştirme sırasında anonim bir profil oluşturur ve ardındanidentify()çö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/evtadresine form-urlencoded gövdesiyle birPOSTisteği gönderir.sdidparametresi,idfa,idfv,aifa,andiveasidcihaz tanımlayıcılarının yerini alır. Boolean değerlertrueveyafalseolarak gönderilir. - SDID olmadan: Adapty,
https://s2s.singular.net/api/v1/evtadresine sorgu parametreleriyle birGETisteğ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:
| Parametre | Tür | Açıklama |
|---|---|---|
n | String | Olay adı (Adapty olayından eşlenir). |
a | String | Singular SDK Anahtarınız. |
p | String | Platform (“iOS” veya “Android”). |
i | String | Store Uygulama Kimliği (Bundle ID). |
ip | String | Kullanıcının IP adresi. |
sdid | String | Yalnızca v2. singular_sdid entegrasyon tanımlayıcısından alınan Singular Cihaz Kimliği. |
idfa | String | iOS, yalnızca v1. Reklam Verenler için Kimlik (büyük harf). |
idfv | String | iOS, yalnızca v1. Satıcılar için Kimlik (büyük harf). |
aifa | String | Android, yalnızca v1. Google Reklamcılık Kimliği (küçük harf). |
andi | String | Android, yalnızca v1. Android Kimliği (küçük harf). |
asid | String | Android, yalnızca v1. Uygulama Set Kimliği (küçük harf). |
ve | String | İşletim sistemi sürümü. |
att_authorization_status | Integer | Yalnızca iOS. ATT durumu (örn. yetkili için 3). |
custom_user_id | String | Kullanıcının Müşteri Kullanıcı Kimliği. |
utime | Long | Olayın saniye cinsinden UNIX zaman damgası. |
partner | String | Her zaman adapty. Olayın Adapty tarafından gönderildiğini belirtir. |
use_ip | Boolean | Adapty’nin kullanıcıya ait IP adresi olmadığında true. |
is_revenue_event | Boolean | Olay gelir içeriyorsa true. Yalnızca gelir olaylarıyla gönderilir. |
amt | Float | Gelir miktarı. |
cur | String | Para birimi kodu (örn. “USD”). |
purchase_product_id | String | Mağazadaki Ürün Kimliği. |
purchase_transaction_id | String | Orijinal işlem kimliği. |
e | String | Olay 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:
| Parametre | Tür | Açıklama |
|---|---|---|
is_revenue_event | Boolean | Etkinlik gelir içeriyorsa true. |
amt | Float | Gelir miktarı. |
cur | String | Para birimi kodu. |
purchase_product_id | String | Mağazadaki Ürün Kimliği. |
purchase_transaction_id | String | Orijinal 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.