iOS SDK ile mobil uygulamada satın alma yapma

Ödeme ekranlarını (paywall) mobil uygulamanızda göstermek, kullanıcılara premium içerik veya hizmetlere erişim sunmanın temel adımlarından biridir. Ancak, paywall’larınızı özelleştirmek için Paywall Builder kullanıyorsanız, yalnızca bu ekranları göstermek satın almaları desteklemek için yeterlidir.

Paywall Builder kullanmıyorsanız, satın alma işlemini tamamlamak ve istenen içeriğin kilidini açmak için .makePurchase() adlı ayrı bir metot kullanmanız gerekir. Bu metot, kullanıcıların paywall’larla etkileşime geçmesini ve istedikleri işlemleri gerçekleştirmesini sağlayan ana giriş noktasıdır.

Paywall’unuzda, kullanıcının satın almak istediği ürün için aktif bir promosyon teklifi varsa, Adapty bunu satın alma sırasında otomatik olarak uygular.

Warning

Başlangıç teklifinin otomatik olarak uygulanabilmesi için Paywall Builder ile oluşturulmuş paywall’ları kullanmanız gerektiğini unutmayın.

Diğer durumlarda, iOS’ta kullanıcının başlangıç teklifine uygunluğunu doğrulamanız gerekir. Bu adımı atlamak uygulamanızın yayın sırasında reddedilmesine yol açabilir. Üstelik, başlangıç teklifine hak kazanan kullanıcıların tam fiyat ödenmesine neden olabilir.

Tek bir adımı bile atlamadan başlangıç yapılandırmasını tamamladığınızdan emin olun. Bu yapılmadan satın almaları doğrulayamayız.

Satın alma yapma

Note

Paywall Builder kullanıyor musunuz? Satın almalar otomatik olarak işlenir—bu adımı atlayabilirsiniz.

Adım adım rehber mi arıyorsunuz? Tam bağlamlı uçtan uca uygulama talimatları için hızlı başlangıç kılavuzuna bakın.

İstek parametreleri:

ParametreZorunlulukAçıklama
ProductzorunluPaywall’dan alınan bir AdaptyPaywallProduct nesnesi.

Yanıt parametreleri:

ParametreAçıklama
Profile

İstek başarılıysa yanıt bu nesneyi içerir. Bir AdaptyProfile nesnesi, kullanıcının uygulamadaki access level’ları, abonelikleri ve abonelik dışı satın almaları hakkında kapsamlı bilgi sağlar.

Kullanıcının uygulamaya gerekli erişime sahip olup olmadığını belirlemek için access level durumunu kontrol edin.

Warning

Not: Hâlâ Apple’ın StoreKit sürüm 2.0’ın altında ve Adapty SDK sürüm 2.9.0’ın altında bir sürüm kullanıyorsanız, bunun yerine Apple App Store paylaşılan secret anahtarını girmeniz gerekir. Bu yöntem Apple tarafından artık kullanımdan kaldırılmıştır.

App Store’dan uygulama içi satın almalar

Bir kullanıcı App Store’da satın alma işlemi başlattığında ve işlem uygulamanıza aktarıldığında, SDK didReceivePromotedPurchase delegate metodunu bir AdaptyPromotedProduct nesnesiyle çağırır. İki seçeneğiniz var:

  • İşlemi hemen gerçekleştirin: didReceivePromotedPurchase metodunu uygulamayın. Varsayılan uygulama satın alma işlemini hemen başlatır ve Apple satın alma sistemi ekranı otomatik olarak gösterilir.
  • Ürün nesnesini daha sonra işlemek üzere saklayın: didReceivePromotedPurchase metodunu uygulayın, ürünü saklayın ve ardından saklanan ürünle daha sonra makePurchase metodunu çağırın. Bu, satın alma işlemini tetiklemeden önce kullanıcınıza özel bir şey göstermeniz gerekiyorsa yararlı olabilir.

Promosyon yapılmış ürün bir abonelik teklifi içeriyorsa, SDK bunu satın alma sırasında otomatik olarak uygular. Teklif, App Store satın alma niyetinden okunur; bu bilgi iOS 18.0 ve sonrasında sunulmaktadır. iOS 16.4–17.x’te subscriptionOffer her zaman nil olur ve satın alma temel fiyat üzerinden gerçekleşir.

İşte tam kod parçacığı:

final class YourAdaptyDelegateImplementation: AdaptyDelegate {
    // 1. Store the product object to defer the transaction.
    // To process the transaction immediately instead, don't implement this method —
    // the default implementation starts the purchase right away.
    nonisolated func didReceivePromotedPurchase(_ product: AdaptyPromotedProduct) {
        // store the product object
    }

    // 2. Continue the deferred purchase later on by passing the product to `makePurchase` when the timing is appropriate
    func continueDeferredPurchase() async {
        let storedProduct: AdaptyPromotedProduct = // get the product object from 1.
        do {
            let purchaseResult = try await Adapty.makePurchase(product: storedProduct)
            // process the purchase result
        } catch {
            // handle the error
        }
    }
}
Warning

didReceivePromotedPurchase API’si, SDK sürüm 4.1’den itibaren kullanılabilir ve iOS 16.4 veya üzerini gerektirir. SDK sürüm 4.0, tanıtımlı uygulama içi satın almaları hiç desteklemez ve iOS 16.4 altındaki cihazlarda bu metot hiçbir zaman tetiklenmez. Daha eski iOS sürümlerinde tanıtımlı satın almalara ihtiyaç duyuyorsanız, SDK 3.x ile kalmaya devam edin ve aşağıda gösterildiği gibi shouldAddStorePayment kullanın.

Adapty SDK 3.x mi kullanıyorsunuz?

SDK 3.x’te, SDK bunun yerine shouldAddStorePayment delegate metodunu çağırır:

  • İşlemi hemen işle: shouldAddStorePayment içinde true döndür. Bu, Apple satın alma sistem ekranını hemen tetikler.
  • Ürün nesnesini sonraki işlem için sakla: shouldAddStorePayment içinde false döndür, ardından saklanan ürünle daha sonra makePurchase çağır.
final class YourAdaptyDelegateImplementation: AdaptyDelegate {
    nonisolated func shouldAddStorePayment(for product: AdaptyDeferredProduct) -> Bool {
        // 1a.
        // Return `true` to continue the transaction in your app. The Apple purchase system screen will show automatically.

        // 1b.
        // Store the product object and return `false` to defer or cancel the transaction.
        false
    }
    
    // 2. Continue the deferred purchase later on by passing the product to `makePurchase` when the timing is appropriate
    func continueDeferredPurchase() async {
        let storedProduct: AdaptyDeferredProduct = // get the product object from 1b.
        do {
            try await Adapty.makePurchase(product: storedProduct)
        } catch {
            // handle the error
        }
    }
}

iOS’ta teklif kodlarını kullanma

Teklif kodları hakkında

Teklif kodları, belirli kullanıcılara indirim veya ücretsiz deneme sunmanızı sağlar. Otomatik olarak uygulanan normal tekliflerin aksine, teklif kodları uygulama dışında — e-posta kampanyaları, sosyal medya veya basılı materyaller aracılığıyla — dağıtılır. Kullanıcılar bu kodları App Store’a girerek, bir kullanım URL’si aracılığıyla veya uygulama içi bir diyalog üzerinden kullanabilir.

Teklif kodlarını ayarlamak için App Store Connect’te bir aboneliği açın ve Offer Codes bölümüne gidin. Üç tür teklif kodu oluşturabilirsiniz:

  • Free — abonelik belirli bir süre boyunca ücretsizdir; sonraki yenilemede tam fiyat uygulanır.
  • Pay as you go — kullanıcı, belirli bir süre boyunca her fatura döngüsünde indirimli fiyat öder; ardından abonelik tam fiyatla yenilenir.
  • Pay up front — kullanıcı, tüm teklif süresi için tek seferlik indirimli bir fiyat öder; ardından abonelik tam fiyatla yenilenir.

Teklif kodlarını Adapty’ye eklemenize gerek yoktur. Apple, teklif süresi boyunca gerçekleşen her işlemi teklif kodu kategorisiyle etiketler. Bu, ilk kullanımı ve sonraki tüm indirimli yenilemeleri kapsar. Adapty bu etiketi algılar ve her işlemi offer_code teklif kategorisiyle kaydeder. Teklif süresi sona erip abonelik tam fiyatla yenilendiğinde etiket artık mevcut olmaz. Adapty Kontrol Paneli’nde Offer Code teklif türüne göre analizleri filtreleyebilirsiniz.

Gelir tutarsızlığı sorun giderme

Bir teklif kodu işleminin Adapty’de indirimli teklif fiyatı yerine tam ürün fiyatıyla göründüğünü fark ederseniz App Store Connect’te aşağıdakileri doğrulayın:

  • Teklif kodunun, kullanıcıların kullanabileceği tüm bölgeler için doğru fiyatlandırmanın yapılandırıldığından emin olun.
  • Teklif fiyatının, kullanıcının bulunduğu ülke veya bölge için ayarlandığından emin olun. Apple, işlemde bölgesel fiyatı gönderir. Teklif için bölgesel bir fiyat yapılandırılmamışsa Apple tam ürün fiyatını gönderebilir.

Adapty Kontrol Paneli’nde Offer Code teklif türü ve Offer Discount Type filtreleriyle teklif kodu işlemlerini filtreleyip doğrulayabilirsiniz.

Eski promosyon kodları (kullanımdan kaldırıldı)

Warning

Apple, Mart 2026’da uygulama içi satın almalar için promosyon kodlarını kullanımdan kaldırdı. Teklif kodları, yapılandırılabilir uygunluk koşulları, son kullanma tarihleri ve çeyrek başına 1 milyona kadar kod gibi daha fazla özellikle bunların yerini alıyor. Uygulama içi satın almalar için daha önce promosyon kodu kullandıysanız App Store Connect’te teklif kodlarına geçiş yapın.

Eski promosyon kodları (uygulama başına sürüm başına 100 ile sınırlı), bir aboneliğe ücretsiz erişim sağlıyordu. Teklif kodlarının aksine, Apple promosyon kodu işlemlerine indirim bilgisi eklemiyordu — makbuzda tam ürün fiyatını gönderiyordu. Sonuç olarak Adapty bu işlemleri tam fiyat üzerinden kaydetti ve bu durum Adapty analizleri ile App Store Connect arasında gelir tutarsızlıklarına yol açtı.

Ücretsiz olması gereken ancak geçmişte tam fiyatla kaydedilmiş işlemler görüyorsanız bunlar büyük olasılıkla eski promosyon kodlarından kaynaklanmaktadır. Bu kodlar artık kullanımdan kaldırıldığından, doğru gelir takibi için teklif kodlarına geçiş yapın.

Uygulamanızda kod kullanım sayfasını göstermek için:

Adapty.presentCodeRedemptionSheet()
Danger

Gözlemlerimize göre bazı uygulamalarda Teklif Kodu Kullanım sayfası güvenilir şekilde çalışmayabilir. Kullanıcıyı doğrudan App Store’a yönlendirmenizi öneririz.

Bunu yapmak için şu formattaki URL’yi açmanız gerekir: https://apps.apple.com/redeem?ctx=offercodes&id={apple_app_id}&code={code}