# iOS puan isteği: RequestReviewAction ve SKStoreReviewController

> iOS'ta puanı yalnızca Apple'ın sistem penceresiyle istersin (SwiftUI'de RequestReviewAction, UIKit'te AppStore.requestReview(in:), eskiden SKStoreReviewController); sistem bunu uygulama başına 365 günde en fazla üç kez gösterir, bu yüzden onu gerçek bir başarı anından sonra çağır, asla bir düğmeden çağırma.

Uptika ekibi · Yayın: 2026-11-05 · Son güncelleme: 2026-11-05 · https://uptika.app/rehber/ios-puan-istegi

## iOS'ta puan istemenin kuralları neler?

Apple, uygulama içinde puan istemenin tek bir yoluna izin verir: StoreKit'in **sistem penceresi**. 5.6.1 maddesi sağlanan API'nin kullanılmasını ister ve Apple'ın **özel değerlendirme pencerelerine izin vermeyeceğini** söyler. API'yi sen çağırırsın; gösterip göstermeyeceğine StoreKit karar verir.

| Kural | Kaynak |
|---|---|
| Sistem penceresini kullan, kendi puan açılır pencereni yapma | App Review Guidelines 5.6.1 |
| Uygulama başına 365 günde en fazla 3 kez gösterilir (puan vermemiş kişi) | StoreKit belgeleri |
| Zaten puan verdiyse: yalnızca yeni sürümde ve 365 günden fazla geçtikten sonra gösterilir | StoreKit belgeleri |
| Bir düğmeye dokunuşla çağırma | StoreKit belgeleri |
| TestFlight'ta etkisiz; geliştirmede her zaman gösterilir | StoreKit belgeleri |
| Özellik açmak için puan vermeyi zorunlu tutma | App Review Guidelines 3.2.2(x) |
| Ücretli, ödüllü ya da sahte yorum yok | App Review Guidelines 3.0 ve 5.6.3 |

Kullanıcılar cihazlarında tüm uygulamalar için puan isteklerini kapatabilir de; yani zamanlaması kusursuz bir çağrı bile hiçbir şey göstermeyebilir.

## Hangi API'yi kullanmalısın?

| Çatı | API | Şu sürümden itibaren |
|---|---|---|
| SwiftUI | requestReview ortam değeri üzerinden RequestReviewAction | iOS 16 |
| UIKit | AppStore.requestReview(in: UIWindowScene) | iOS 16 |
| UIKit, eski hedefler | SKStoreReviewController.requestReview(in:) | iOS 14, iOS 18'den itibaren kullanımdan kalktı |
| Eski | SKStoreReviewController.requestReview() | iOS 14'ten beri kullanımdan kalktı |

## SwiftUI örneği

Kalıp, görünümünün içinde üç satırdır:

1. `import StoreKit`
2. `@Environment(\.requestReview) private var requestReview`
3. Seçtiğin anda `requestReview()`, örneğin "plan tamamlandı" ekranı göründüğünde

Tipik yer, bir başarı ekranındaki `.onAppear` ya da bir durum değişikliğidir; bunu kendi sayacınla koru, örneğin: yalnızca üçüncü tamamlanan antrenmandan sonra ve sürüm başına en fazla bir kez.

## UIKit örneği

1. `import StoreKit`
2. `if let scene = view.window?.windowScene { AppStore.requestReview(in: scene) }`

Bunu ana aktörde (main actor), başarı görünümü ekrandayken çağır; asla bir düğmenin eyleminin içinde çağırma.

## Ne zaman istemelisin?

Zamanlama kurallarını Apple'ın Human Interface Guidelines belgesi verir; onları bir karar yoluna çevir:

1. **Kişi ilgisini gösterdi mi?** Bir bölümü tamamladı, bir işi bitirdi, bir hedefe ulaştı. Göstermediyse isteme.
2. **İlk açılış ya da tanıtım ekranları mı?** İsteme. İnsanların henüz bir fikri oluşmamıştır, düşük puan verebilirler.
3. **Bir işin ortasında mı?** Bölme; doğal bir arayı bekle.
4. **Yakın zamanda istedin mi?** İstekler arasında en az bir iki hafta bırak.
5. **Az önce bir şey ters mi gitti** (bir hata, başarısız bir ödeme, çökme sonrası toparlanma)? Şimdi isteme.
6. Her şey yolundaysa: API'yi çağır ve akışına hiçbir şey olmamış gibi devam et. Pencerenin görünüp görünmediğini bilemezsin.

## Nasıl test edilir?

- **Geliştirme derlemeleri**: pencere her zaman görünür; yerleşimi ve akışı kontrol edebilirsin.
- **TestFlight**: istek etkisizdir. Test kullanıcıları pencereyi hiç görmüyorsa bunu hata olarak bildirme.
- **Yayındaki uygulama**: StoreKit sınırlarını uygular; pencereyi zorla göstermenin yolu yoktur.

## Bunun yerine yorum sayfasına bağlantı verebilir misin?

Evet, ayarlardaki kalıcı bir "Uygulamayı değerlendir" girişi için. Apple, App Store ürün URL'nin sonuna `action=write-review` eklemeyi önerir; bu, insanların yorum yazabileceği sayfayı açar. Bunu bir düğme için kullan; anlar için sistem penceresini kullan.

## Kuralları çiğneyen ya da pencereyi harcayan hatalar

- Memnun kullanıcıları pencereye, memnun olmayanları e-postaya yönlendiren "Uygulamayı beğendin mi?" ön ekranı. Bu, özel bir değerlendirme akışıdır ve geri bildirimi süzer; yönergeler bunu manipülasyon sayar.
- Puan karşılığı ödül (jeton, kilit açma, indirim).
- API'yi her açılışta çağırmak: sınır kötü anlarda tükenir.
- Sistem penceresine bağlanmış bir "Bizi değerlendir" düğmesi; sessizce hiçbir şey yapmayabilir.

## Puandan sonra ne olur?

Puanlar ve yazılı yorumlar App Store Connect'te **Ratings and Reviews** (Puanlar ve Yorumlar) altına gelir ve orada cevap verebilirsin. İyi cevap vermenin yolu [uygulama yorumlarına cevap verme](https://uptika.app/rehber/uygulama-yorumlarina-cevap-verme) rehberinde, puanlar düştüğünde ne yapacağın [olumsuz yorumlar ve puan düşmesi](https://uptika.app/rehber/olumsuz-yorumlar-ve-puan-dusmesi) rehberinde. Android'deki karşılığı [Google Play In-App Review API](https://uptika.app/en/guides/google-play-in-app-review-api) (İngilizce).

Yeni bir pencere yerleşiminin bir şey değiştirip değiştirmediğini görmek için Uptika'nın **Yorumlar** sayfası iki mağazanın yorumlarını puan dağılımı ve haftalık ortalamayla, sürüme göre süzülebilir biçimde gösterir; ücretsiz [Düşük Puan Nedenleri](https://uptika.app/araclar/dusuk-puan-nedenleri) aracı da herhangi bir uygulamanın son 1-2 yıldızlı yorumlarını nedenlerine göre ayırır. [Ücretsiz plan](https://uptika.app/app/#/?signup=1) bir uygulamayla başlar.

## Sorular

### SwiftUI'de requestReview nasıl kullanılır?

requestReview ortam değerini @Environment(\.requestReview) ile oku ve seçtiğin anda bir fonksiyon gibi çağır. iOS 16'dan itibaren kullanılabilir. Pencerenin gerçekten görünüp görünmeyeceğine StoreKit karar verir.

### iOS'ta kaç kez puan isteyebilirim?

API'yi istediğin kadar çağırabilirsin, ama sistem pencereyi henüz puan vermemiş biri için uygulama başına 365 günde en fazla üç kez gösterir. Kişi puan verdiyse pencere yalnızca yeni bir uygulama sürümünde ve son değerlendirmesinin üzerinden 365 günden fazla geçtiyse yeniden görünür.

### Bir uygulama puanı ne zaman istemeli?

Kişi uygulamayla gerçekten ilgilendiğini gösterdikten sonra: biten bir bölüm, tamamlanan bir görev, başarılı bir sonuç. Apple'ın yönergeleri ilk açılıştan ve tanıtım ekranlarından kaçınmayı, bir işi yarıda kesmemeyi ve istekler arasında en az bir iki hafta bırakmayı söyler.

### requestReview TestFlight'ta neden görünmüyor?

Tasarım gereği. Apple'ın belgeleri, isteğin TestFlight ile dağıtılan uygulamalarda etkisiz olduğunu söyler. Geliştirme derlemelerinde pencere her zaman görünür; akışı orada test edebilirsin.

### SKStoreReviewController kullanımdan kalktı mı?

Evet. SKStoreReviewController.requestReview(), iOS 14'te requestReview(in:) lehine kullanımdan kaldırıldı; SKStoreReviewController sınıfı da iOS 18'den itibaren AppStore.requestReview(in:) lehine kullanımdan kalktı. SwiftUI'de RequestReviewAction kullan.

## Kaynaklar

- [RequestReviewAction (Apple Developer Documentation)](https://developer.apple.com/documentation/storekit/requestreviewaction)
- [requestReview(in:) for UIWindowScene (Apple Developer Documentation)](https://developer.apple.com/documentation/storekit/appstore/requestreview(in:)-1q8qs)
- [SKStoreReviewController requestReview() (Apple Developer Documentation)](https://developer.apple.com/documentation/storekit/skstorereviewcontroller/requestreview())
- [Ratings and reviews (Human Interface Guidelines)](https://developer.apple.com/design/human-interface-guidelines/ratings-and-reviews)
- [Ratings, reviews and responses (Apple Developer)](https://developer.apple.com/app-store/ratings-and-reviews/)
- [App Review Guidelines 5.6.1 and 3.2.2 (Apple Developer)](https://developer.apple.com/app-store/review/guidelines/)

---

Uptika, App Store ve Google Play için bir ASO ve mağaza zekâsı aracıdır. https://uptika.app/
