İçeriğe geç

Mevcut Kullanıcıları Etkilemeden Ücretli Uygulamaları Freemium'a Dönüştür

Daha önce ödeme yapmış kullanıcıların erişimini koruyarak ücretli uygulamadan freemium'a geçiş için StoreKit'in AppTransaction API'sini nasıl kullanacağın.

Ücretliden Freemium’a Geçiş Sorunu

Ücretli bir uygulamayı freemium’a geçirmek yaygın bir iş kararı, ama bir adalet sorunu ile geliyor: uygulama için daha önce ödeme yapmış kullanıcılar aniden özellikleri kaybetmemeli veya tekrar ödeme yapmaları istenmemeli. StoreKit’in AppTransaction API’si bunu temiz bir şekilde çözüyor.

Satın Alma Geçmişini Kontrol Etmek için AppTransaction Kullanımı

Anahtar, uygulamanın orijinal işlemi hakkında bilgi sağlayan AppTransaction.shared. Spesifik olarak, originalAppVersion kullanıcının uygulamayı ilk indirdiği sürümü söylüyor. Eğer o sürüm ücretli bir sürümdüyse, kullanıcının zaten ödeme yaptığını biliyorsun.

import StoreKit

func shouldGrantFullAccess() async -> Bool {
   do {
      let result = try await AppTransaction.shared
      if case .verified(let transaction) = result {
         let originalVersion = transaction.originalAppVersion
         // Version "2.0" was when the app went freemium
         if originalVersion.compare("2.0", options: .numeric) == .orderedAscending {
            return true // User purchased before freemium transition
         }
      }
   } catch {
      // Handle verification failure
   }
   return false
}

Mantık basit: kullanıcının originalAppVersion değerini freemium geçişini yaptığın sürümle karşılaştır. Orijinal sürümleri değişiklikten önceyse, otomatik olarak tam erişim ver.

Önemli Ayrıntılar

originalAppVersion, orijinal satın alma (veya ücretsiz uygulamalar için indirme) sırasındaki CFBundleShortVersionString değerine karşılık geliyor. Geçiş noktanı tam olarak hangi sürüm numarasının işaretlediğini bildiğinden emin ol.

Bu yaklaşım sunucu altyapısı ve migrasyon kodu gerektirmiyor. StoreKit, doğrulamayı App Store makbuz zinciri üzerinden yapıyor, bu yüzden kontrol kurcalamaya karşı dayanıklı. Apple bu kalıbı iş modeli geçişi için orijinal API belgesinde dokümante ediyor.

TestFlight ve simülatör testleri için, originalAppVersion bunun yerine CFBundleVersion (build numarası) döndürüyor, bu yüzden test senaryolarını buna göre planla.

İşine yaradı mı? Swift ipuçları ve indie geliştirici güncellemeleri için Bluesky ve Mastodon üzerinden takip et.