> ## 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.

# Özel Sonuçlar

> OneSignal Özel Sonuçlarını kullanarak push bildirimleri ve uygulama içi mesajlardan kaynaklanan kullanıcı eylemlerini ve geliri nasıl izleyeceğinizi öğrenin. Platformlar arasında esnek sonuç türleriyle atfı özelleştirin ve etkileşimi ölçün.

<Warning>
  **Özel Sonuçlar kullanımdan kaldırılmaktadır.** Push, e-posta, SMS, uygulama içi ve RCS genelinde çapraz kanallı son dokunuş atfı sağlayan [Dönüşüm metrikleri](./conversion-metrics) ile değiştirilmektedir. Dönüşüm takibini ilk kez kuruyorsanız bunun yerine [Dönüşüm metrikleri](./conversion-metrics) kullanın.

  Mevcut Özel Sonuçlar verileri geçmiş veri olarak erişilebilir durumda kalmaya devam eder.
</Warning>

OneSignal Özel Sonuçları, push bildirimleri ve uygulama içi mesajlardan kaynaklanan anlamlı kullanıcı eylemlerini izlemenize olanak tanır. Satın almalar, kayıtlar veya uygulama olayları gibi bu eylemler, sayım, toplam ve benzersiz metriklerle izlenebilir ve mesajlaşma kampanyalarınızın etkisi hakkında size içgörü sağlar.

<Info> Özel Sonuçlar **Professional** ve **Enterprise** planlarında mevcuttur. [Fiyatlandırma](https://onesignal.com/pricing) hakkında daha fazla bilgi edinin. </Info>

***

## Sonuç türleri ve SDK yöntemleri

Bir kullanıcı belirli bir eylemi tamamladığında (örn., "Sepete Ekle" veya "Yükselt"e dokunur) bir kod satırı ekleyerek bir Sonuç tetikleyebilirsiniz.

| Outcome Type       |                          Mobile SDK Method                          |                        Web SDK Method                        | Description                                                                                                                                                  |
| ------------------ | :-----------------------------------------------------------------: | :----------------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Standard Count** |          [`addOutcome`](./mobile-sdk-reference#addoutcome)          |       [`sendOutcome`](./web-sdk-reference#sendoutcome)       | Her çağrıldığında sayımı 1 artırır. Değer izleme yok.                                                                                                        |
| **Value (Sum)**    | [`addOutcomeWithValue`](./mobile-sdk-reference#addoutcomewithvalue) |       [`sendOutcome`](./web-sdk-reference#sendoutcome)       | Sayımı 1 artırır ve toplamı belirtilen sayısal değer kadar artırır. Gelir izleme için yararlıdır.                                                            |
| **Unique Count**   |    [`addUniqueOutcome`](./mobile-sdk-reference#adduniqueoutcome)    | [`sendUniqueOutcome`](./web-sdk-reference#senduniqueoutcome) | Atıf penceresi başına yalnızca bir kez sayımı 1 artırır. "Swipe Oturumu Başlatıldı" veya "CTA'ya Dokunuldu" gibi ikili kullanıcı eylemleri için en iyisidir. |

<Info> Sonuç olayları çevrimdışıyken yerel olarak önbelleğe alınır ve bir sonraki OneSignal başlatılmasında yeniden denenir. </Info>

***

## Sayım ve toplam karşılaştırması

Sonuçlar iki ana metriği destekler:

| Metric    | Description                                               |
| --------- | --------------------------------------------------------- |
| **Count** | Sonuç olayının tetiklenme sayısı                          |
| **Sum**   | Sonuçla gönderilen tüm sayısal değerlerin toplamı (varsa) |

Değerli sonuçlar her zaman en yakın tam sayıya yuvarlanır.

**Örnek**: Satın almadan elde edilen geliri izlemek için:

<CodeGroup>
  ```java java theme={null}
  // "Purchase" button pressed in the app
     ...
     OneSignal.Session.addOutcomeWithValue("Purchase", 18.76);
  ```

  ```objectivec objectivec theme={null}
  // "Purchase" button pressed in the app
     ...
     [OneSignal.Session addOutcomeWithValue:@"Purchase" value:18.76]
  ```

  ```javascript javascript theme={null}
  //Purchase Button pressed on site
  OneSignal.Session.addOutcomeWithValue("Purchase", 20.2);
  ```

  ```javascript Javascript(Web SDK) theme={null}
  //Purchase Button pressed on site
  OneSignal.Session.sendOutcome("Purchase", 20.20);
  ```

  ```swift Swift theme={null}
  let value = "20.20"//you supply the value
  OneSignal.Session.addOutcome(withValue: "Purchase", value: NSNumber(value:value), onSuccess: {outcomeSent in
    print("outcome sent: \(outcomeSent!.name) with random value: \(value)" )
  })
  ```

  ```csharp Unity(C#) theme={null}
  //Send an outcome
  OneSignal.Session.AddOutcome("outcomeName");

  //Send a unique outcome
  OneSignal.Session.AddUniqueOutcome("uniqueOutcomeName");

  //Send an outcome with a float value
  OneSignal.Session.AddOutcomeWithValue("outcomeWithVal", 4.2f);
  ```
</CodeGroup>

***

## Sonuç atfı

Her Sonuç, nasıl oluşturulduğunu açıklayan bir atıf türü ile izlenir:

* **direct** — Kullanıcı mesajla doğrudan etkileşime girdiğinde Sonuç oluştu. `os__click` ve `os__confirmed_delivery` gibi bazı Sonuçlar yalnızca doğrudan atfa sahiptir çünkü yalnızca mesajın bir sonucu olarak gerçekleşirler.
* **influenced** — Mesaj gönderildikten sonra atıf zaman penceresi içinde Sonuç oluştu, ancak kullanıcı mesajla hiçbir zaman doğrudan etkileşime girmedi.
* **unattributed** — Sonuç, mesajla doğrudan veya dolaylı bir ilişki olmadan oluştu.
* **total** *(varsayılan)* — **direct + influenced + unattributed**'ın toplamı.

## Kullanım senaryoları

### E-ticaret sitesi

Çevrimiçi mağazalar, kullanıcıları terk edilmiş sepetlere, flaş satışlara, promosyonlara ve daha fazlasına geri yönlendirmek için OneSignal push bildirimlerini kullanabilir. **Sonuçlar** ile mağaza sahipleri artık push bildirimlerini sepete ekleme, satın alma veya kullanılan kupon gibi kullanıcı eylemleriyle kolayca ilişkilendirebilir. Satın almalar için sonuçlar, basit sayımların ötesine geçer ve satın alma tutarlarını izleyebilir. Bu, site sahiplerinin tek tek push'lardan elde edilen toplam geliri kolayca görmelerini sağlar.

<CodeGroup>
  ```java java theme={null}
  OneSignal.Session.addOutcomeWithValue("Purchase", 18.76);
  ```

  ```objectivec objectivec theme={null}
  [OneSignal.Session addOutcomeWithValue:@"Purchase" value:18.76]
  ```

  ```javascript javascript theme={null}
  OneSignal.Session.addOutcomeWithValue("Purchase", 18.76);
  ```

  ```Text Javascript(Web SDK) theme={null}
  OneSignal.Session.sendOutcome("Purchase", 18.76);
  ```

  ```csharp Unity(C#) theme={null}
  OneSignal.Session.AddOutcomeWithValue("Purchase", 18.76);
  ```
</CodeGroup>

### Sosyal uygulamalar

Sosyal uygulamalar, kullanıcıları bir eşleşme veya arkadaş isteği, yeni bir beğeni hakkında bilgilendirmek veya sadece onları kaydırmaya başlatmak için bir push kullanarak yeniden etkileşime geçirmek isteyebilir. **Sonuçlar** kullanarak, bir geliştirici push bildiriminin bir eşleşmeyle sohbet başlatma veya 34 saniyelik bir kaydırma oturumu gibi bir kullanıcı olayına yol açıp açmadığını görebilir. Bu veriler daha sonra bildirim ve hedefleme stratejilerini geliştirmek için kullanılabilir.

Aşağıdaki örnekte, bir kullanıcının push'tan sonra flört profillerini kaydırmaya başlayıp başlamadığını izlemek istiyoruz. Her kaydırmayı bir dönüşüm olarak saymak istemeyeceğimiz için, `sendUniqueOutcome` kullanıyoruz

Bu "Swipe" sonucu, onu tetikleyen push'a yalnızca bir kez atfedilecektir. Örnekler:

* Kullanıcı push'a tıkladıysa ve bu yöntemi çağıran eylemi gerçekleştirdiyse, doğrudan bir atıf olacaktır.
* Kullanıcı push'u aldıysa ancak tıklamadıysa ve atıf penceresi içinde eylemi gerçekleştirdiyse, dolaylı bir atıf olacaktır. Daha sonra aynı push'a tıklayıp eylemi tekrar gerçekleştirse bile, yine de yalnızca dolaylı olacaktır.
* Kullanıcı yöntemi bir atıf penceresinin dışında gerçekleştirirse, oturum başına bir kez atfedilmemiş olacaktır.

<CodeGroup>
  ```java Java theme={null}
  OneSignal.Session.addUniqueOutcome("Swipe");
  ```

  ```objectivec Objective-C theme={null}
  [OneSignal.Session addUniqueOutcome:@"Swipe"]
  ```

  ```javascript JavaScript theme={null}
  OneSignal.Session.addUniqueOutcome("my_outcome_event");
  ```

  ```csharp C# theme={null}
  OneSignal.Session.AddUniqueOutcome("swipe");
  ```
</CodeGroup>

### Dile göre tıklanan push'lar

SDK'mızın Notification Opened/Clicked dinleyici yöntemleri içinde, ayarlı dillerine göre kaç cihazın push'a tıkladığını artırmak için Sonuçlar kurabilirsiniz. Bu, cihazın dilini algılamak için bazı yerel kod gerektirecektir, ancak daha sonra bu dili Sonuç'a şu şekilde aktarabilirsiniz:

<CodeGroup>
  ```java Java theme={null}
    public void notificationOpened(OSNotificationOpenResult result) {
      String languageCode = Locale.getDefault().getLanguage();
      System.out.println("languageCode " + languageCode);
      OneSignal.Session.addOutcome(languageCode);
    }
  ```

  ```swift Swift theme={null}
  let notificationOpenedBlock: OSHandleNotificationActionBlock = { result in
    // This block gets called when the user reacts to a notification received
    if let languageCode = Locale.current.languageCode {
        print ("languageCode: " + languageCode);
        OneSignal.Session.addOutcome(languageCode);
    }
  }
  ```

  ```javascript JavaScript theme={null}
  var language = navigator.language;
  OneSignal.Session.addOutcome(language);
  ```
</CodeGroup>

### İşletim sistemi ve tarayıcıya göre tıklanan push'lar

SDK'mızın Notification Opened/Clicked dinleyici yöntemleri içinde, hangi platformların özellikle tıklandığını artırmak için Sonuçlar kurabilirsiniz. Bu, iOS ve Android için genel bir durumdur, çünkü mobil uygulamanızın tıklama işleyicisinde `OneSignal.addOutcome("iOS")` veya `OneSignal.addOutcome("Android")` ayarlayabilirsiniz, ancak web push platformlarını da izlemek isterseniz, bunu örnek olarak kullanabilirsiniz:

<CodeGroup>
  ```javascript Javascript(Web SDK) theme={null}
  // Example taken from Stackoverflow: https://stackoverflow.com/questions/11219582/how-to-detect-my-browser-version-and-operating-system-using-javascript
  var os = "Unknown OS";
  if (navigator.userAgent.indexOf("Win") != -1) os = "Windows";
  if (navigator.userAgent.indexOf("Mac") != -1) os = "Macintosh";
  if (navigator.userAgent.indexOf("Linux") != -1) os = "Linux";
  if (navigator.userAgent.indexOf("Android") != -1) os = "Android";
  if (navigator.userAgent.indexOf("like Mac") != -1) os = "iOS";
  console.log('Your os: ' + os);

  var browserType = "Unknown Browser Type";
  if (navigator.userAgent.indexOf("Safari") != -1) browserType = "Safari";
  if (navigator.userAgent.indexOf("Chrome") != -1) browserType = "Chrome";
  if (navigator.userAgent.indexOf("OPR") != -1) browserType = "Opera";
  if (navigator.userAgent.indexOf("Firefox") != -1) browserType = "Firefox";
  console.log('Your Browser: ' + browserType);

  OneSignal.push(["addListenerForNotificationOpened", function(data) {
  OneSignal.Session.sendOutcome(os);
  OneSignal.Session.sendOutcome(browserType);
  }]);

  ```
</CodeGroup>

***

## Sonuç izlemeyi devre dışı bırakma

Panelde belirli Sonuçların izlenmesini **Settings > Push & In-App > Outcomes Tracking**'den devre dışı bırakın.

Buradan, panelde izlemeyi durdurmak için bir sonuç seçmek üzere **Stop Tracking** düğmesine tıklayabilirsiniz. Sonuçları izlemeyi durdurduktan sonra, bunları burada listelenmiş olarak göreceksiniz ve **Start Tracking** bağlantısına tıklayarak tekrar izlemeye başlayabilirsiniz.

***

## SSS

### Sonuç verileri ne kadar süre saklanır?

* Panodan gönderilen bildirimlerin Sonuç verileri sonsuza kadar saklanır.
* API aracılığıyla gönderilen bildirimler, silinmeden önce 30 günlük sonuç tutma süresine sahiptir.

### Hangi kanallar özel sonuçları destekler?

Şu anda özel sonuçlar yalnızca Push ve In-App Messages'daki eylemlere eklenebilir.

In-App mesajlar aracılığıyla gönderilen Sonuçlar "Unattributed" olarak gösterilir ve cihazda `outcome name : true` formatında bir etiket ayarlar.

### Sonuçları dışa aktarabilir miyim?

Bir sonuç setini veya tüm sonuçları CSV olarak dışa aktarabilirsiniz. Ayrıca, [tek bir bildirim](/reference/view-message) veya [tüm bildirimler](/reference/view-outcomes) için sonuçlara API erişimi sağlıyoruz.

### Özel Sonuçlarda değer olarak string'leri saklayabilir miyim?

Bu desteklenmemektedir.

### Bir cihaz çevrimdışıysa ne olur?

Tetiklenen sonuçların verileri, cihaz tekrar çevrimiçi olduğunda OneSignal'a gönderilmek üzere sıraya alınır.

### Bir kullanıcı bildirimi tıkladıktan sonra uygulamayı arka plana alırsa ve ardından geri dönerse, bir Sonuç tetiklenirse, doğrudan mı yoksa dolaylı mı sayılır?

Kullanıcı uygulamayı arka plana aldıktan sonra 30 saniye içinde uygulamaya geri döndüğü sürece, oturum hala orijinal oturum olarak kabul edilecek ve doğrudan atıf alacaktır.

### Yeni Atıf Penceresi ne zaman etkili olur?

Örneğin atıf penceresini 24 saatten 1 saate değiştirirseniz, 1 saatlik pencere, her cihaz yepyeni bir oturumdan uygulamayı açtığında cihaz başına etkin olacaktır. Bu yeni oturum, uygulamanın dışında 30 saniye geçtikten sonra oluşturulur.

### Oturumlar neden diğer analitiklerle eşleşmiyor?

OneSignal, yalnızca kullanıcı uygulamayı 30 saniyeden fazla süreyle terk ettikten sonra bir oturumu sayar. Uygulamayı veya web sitesini kapatır ve 30 saniye içinde geri dönerseniz, bu yeni bir oturum olmayacaktır.

Örneğin, Apple'ın analitikleri oturumu, uygulamanın en az iki saniye kullanıldığı kere sayısı olarak izler. Uygulama arka plandaysa ve daha sonra tekrar kullanılırsa, bu başka bir oturum olarak sayılır.

***
