Unity SDK ile mobil uygulamada satın alma yapma

Mobil uygulamanızda paywall’ları 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, bu paywall’ları yalnızca 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 kapı işlevi görür. Eğer paywallınızda kullanıcının satın almaya çalıştığı ü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ş paywallları kullanmanız gerektiğini unutmayın. Diğer durumlarda, iOS’ta kullanıcının başlangıç teklifi için uygunluğunu doğrulamanız gerekecektir. Bu adımı atlamak, uygulamanızın yayın sürecinde reddedilmesine yol açabilir. Bunun yanı sıra, başlangıç teklifine uygun olan kullanıcılardan tam fiyat alınmasına neden olabilir.

Başlangıç yapılandırmasını tek bir adımı bile atlamadan tamamladığınızdan emin olun. Bu olmadan satın alımları 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ğlam içeren uçtan uca uygulama talimatları için hızlı başlangıç kılavuzuna göz atın.

using AdaptySDK;

void MakePurchase(AdaptyPaywallProduct product) {
  Adapty.MakePurchase(product, (result, error) => {
    switch (result.Type) {
      case AdaptyPurchaseResultType.Pending:
        // handle pending purchase
        break;
      case AdaptyPurchaseResultType.UserCancelled:
        // handle purchase cancellation
        break;
      case AdaptyPurchaseResultType.Success:
        var profile = result.Profile;
        // handle successfull purchase
        break;
      default:
        break;
    }
  });
}

İstek parametreleri:

ParametreVarlıkAçıklama
ProductgerekliPaywall’dan alınan bir AdaptyPaywallProduct nesnesi.

Yanıt parametreleri:

ParametreAçıklama
Profile

İstek başarılı olursa yanıt bu nesneyi içerir. Bir AdaptyProfile nesnesi, kullanıcının uygulama içindeki access level’ları, abonelikleri ve tek seferlik 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 v2.0’dan düşük bir sürümünü ve Adapty SDK’nın v2.9.0’dan düşük bir sürümünü kullanıyorsanız, bunun yerine Apple App Store paylaşılan secret’ı sağlamanız gerekir. Bu yöntem Apple tarafından kullanımdan kaldırılmıştır.

Satın alma sırasında aboneliği değiştirme

Bir kullanıcı mevcut aboneliğini yenilemek yerine yeni bir abonelik seçtiğinde, bu süreç uygulama mağazasına göre farklı işler:

  • App Store’da abonelik, abonelik grubu içinde otomatik olarak güncellenir. Kullanıcı bir gruptan abonelik satın alırken başka bir gruptan zaten aktif bir aboneliği varsa, her iki abonelik aynı anda aktif olur.
  • Google Play’de abonelik otomatik olarak güncellenmez. Geçişi, aşağıda açıklandığı gibi mobil uygulama kodunuzda yönetmeniz gerekir. Android’de aboneliği başka biriyle değiştirmek için .makePurchase() metodunu ek parametre ile çağırın:
// Create subscription update parameters
var subscriptionUpdateParams = new AdaptySubscriptionUpdateParameters(
    "old_product_id", // Product ID of the current subscription
    AdaptySubscriptionUpdateReplacementMode.WithTimeProration
);

Adapty.MakePurchase(product, subscriptionUpdateParams, (profile, error) => {
  if(error != null) {
      // Handle the error
      return;
  }

  // successful cross-grade
});

Ek istek parametresi:

ParametreVarlıkAçıklama
subscriptionUpdateParamszorunlubir AdaptySubscriptionUpdateParameters nesnesi.

Abonelikler ve değiştirme modları hakkında daha fazla bilgi edinmek için Google Geliştirici belgelerine bakabilirsiniz:

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 kullanma sayfasını göstermek için:

Adapty.PresentCodeRedemptionSheet((error) => {
  // handle the error
});
Danger

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

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

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

Info

Öne çıkan uygulama içi satın almalar, SDK sürüm 4.1’den itibaren desteklenir ve iOS 16.4 veya üzerini gerektirir. iOS 16.4’ün altındaki cihazlarda uygulamanıza ulaşmazlar.

Bir kullanıcı App Store ürün sayfanızdan satın alma başlattığında ve işlem uygulamanıza aktarıldığında, SDK bunu otomatik olarak tamamlar — Apple satın alma sistemi ekranı hemen gösterilir ve Adapty işlemi diğer satın almalar gibi işler.

Tanıtılan ürün bir abonelik teklifi içeriyorsa, SDK satın alma sırasında bu teklifi otomatik olarak uygular. Teklif, App Store satın alma intent’inden okunur; bu bilgi iOS 18.0 ve sonrasında kullanılabilir. iOS 16.4–17.x sürümlerinde ise satın alma temel fiyat üzerinden gerçekleşir.

Tanıtılan satın almaları kodunuzda yönetmek için IAdaptyEventListener, aldığınız bir satın almayı tamamlamaya yarayan Adapty.MakePromotedPurchase ile birlikte kullanılan OnReceivePromotedPurchase(AdaptyPromotedProduct) metodunu içerir:

public void OnReceivePromotedPurchase(AdaptyPromotedProduct product) {
    Adapty.MakePromotedPurchase(product, (result, error) => {
        // process the purchase result
    });
}

SDK henüz tanıtılan satın almaları bu metoda iletmiyor — bunun yerine onları otomatik olarak tamamlıyor — bu nedenle önce özel bir şey göstermek için tanıtılan bir satın almayı henüz erteleyemezsiniz. Yine de metodu uygulayın (arayüz tarafından zorunludur); boş bir gövde geçerli bir uygulama sayılır.

Ön ödemeli planları yönetme (Android)

Uygulama kullanıcılarınız ön ödemeli planlar satın alabiliyorsa (örneğin, birkaç aylık yenilenmeyen bir abonelik), ön ödemeli planlar için bekleyen işlemleri etkinleştirebilirsiniz.

using UnityEngine;
using AdaptySDK;

var builder = new AdaptyConfiguration.Builder("YOUR_API_KEY")
    .SetGoogleEnablePendingPrepaidPlans(true);

Adapty.Activate(builder.Build(), (error) => {
    if (error != null) {
        // handle the error
        return;
    }
});