Uptika
TR
Ücretsiz başla
Yorumlar ve puan

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 ekibiYayın: Son güncelleme: 3 dk okumaMarkdown sürümü

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.

KuralKaynak
Sistem penceresini kullan, kendi puan açılır pencereni yapmaApp 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österilirStoreKit belgeleri
Bir düğmeye dokunuşla çağırmaStoreKit belgeleri
TestFlight'ta etkisiz; geliştirmede her zaman gösterilirStoreKit belgeleri
Özellik açmak için puan vermeyi zorunlu tutmaApp Review Guidelines 3.2.2(x)
Ücretli, ödüllü ya da sahte yorum yokApp 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
SwiftUIrequestReview ortam değeri üzerinden RequestReviewActioniOS 16
UIKitAppStore.requestReview(in: UIWindowScene)iOS 16
UIKit, eski hedeflerSKStoreReviewController.requestReview(in:)iOS 14, iOS 18'den itibaren kullanımdan kalktı
EskiSKStoreReviewController.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 rehberinde, puanlar düştüğünde ne yapacağın olumsuz yorumlar ve puan düşmesi rehberinde. Android'deki karşılığı 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 aracı da herhangi bir uygulamanın son 1-2 yıldızlı yorumlarını nedenlerine göre ayırır. Ücretsiz plan 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

  1. RequestReviewAction (Apple Developer Documentation)
  2. requestReview(in:) for UIWindowScene (Apple Developer Documentation)
  3. SKStoreReviewController requestReview() (Apple Developer Documentation)
  4. Ratings and reviews (Human Interface Guidelines)
  5. Ratings, reviews and responses (Apple Developer)
  6. App Review Guidelines 5.6.1 and 3.2.2 (Apple Developer)