iOS SDK'da Flow Builder ile satın almaları etkinleştirin
Uygulama içi satın almaları etkinleştirmek için üç temel kavramı anlamanız gerekir:
Ürünler – kullanıcıların satın alabileceği her şey (abonelikler, consumable’lar, süresiz erişim)
Flow’lar – ürünleri kullanıcılara sunan, no-code Flow Builder ile oluşturulan ekran dizileri. SDK bunları getFlow ile alır. Kullanıcı arayüzünü kendi kodunuzla oluşturmayı tercih ederseniz, bunun yerine paywall kullanın — bkz. Paywallları manuel olarak uygulama.
Placement’lar – uygulamanızda flow’ları nerede ve ne zaman göstereceğiniz (main, onboarding, settings gibi). Flow’ları kontrol panelinde placement’lara bağlar, ardından kodunuzda placement ID’si ile talep edersiniz. Bu sayede A/B testleri çalıştırmak ve farklı kullanıcılara farklı flow’lar göstermek çok kolay olur.
Adapty, uygulamanızda satın alımları etkinleştirmeniz için üç yol sunar. Uygulama gereksinimlerinize göre birini seçin:
Paywall arayüzünüzü uygulama kodunuzda kendiniz uygularsınız; ancak ürün tekliflerinde esnekliği korumak için flow nesnesini yine Adapty’den alırsınız. Rehbere göz atın.
Observer modu
🔴 Zor
Kendi satın alma altyapınız zaten mevcuttur ve bunu kullanmaya devam etmek istersiniz. Observer modunun Adapty’de bazı kısıtlamaları olduğunu unutmayın. Makaleye bakın.
Aşağıdaki adımlar, Adapty Flow Builder’da oluşturulan bir flow’un nasıl uygulanacağını göstermektedir.
Adapty Flow Builder’da oluşturulan bir flow’u görüntülemek için uygulama kodunuzda yalnızca şunları yapmanız gerekir:
Flow’u alın: Adapty’den alın.
Görüntüleyin, satın almaları Adapty sizin için yönetecektir: Görünümü uygulamanızda gösterin.
Buton eylemlerini yönetin: Kullanıcı etkileşimlerini uygulamanızın bu etkileşimlere verdiği yanıtlarla ilişkilendirin. Örneğin, kullanıcılar butona tıkladığında bağlantılar açın veya flow’u kapatın.
Flow’larınız, kontrol panelinde yapılandırılmış placement’larla ilişkilendirilir. Placement’lar, farklı kitleler için farklı flow’lar çalıştırmanıza veya A/B testi yapmanıza olanak tanır.
Adapty Flow Builder’da oluşturulan bir flow’u edinmek için şunları yapmanız gerekir:
getFlow metodunu kullanarak placement ID’sine göre flow nesnesini alın ve bir görünüm yapılandırması içerip içermediğini kontrol edin.
getFlowConfiguration metodunu kullanarak görünüm yapılandırmasını edinin. Bu yapılandırma, flow’u görüntülemek için gereken UI öğelerini ve stil bilgilerini içerir.
Artık flow konfigürasyonuna sahipsiniz; flow’u göstermek için birkaç satır kod eklemeniz yeterli.
SwiftUI’da flow’u gösterirken aynı zamanda olayları da ele almanız gerekir. didFinishPurchase, didFailPurchase, didFinishRestore, didFailRestore ve didReceiveError zorunludur. Test sırasında bu olayları kaydetmek için aşağıdaki kod parçacığını doğrudan kopyalayabilirsiniz.
Flow, başarılı bir satın alma işleminin ardından otomatik olarak kapanmaz. didFinishPurchase içinde, flow’u kapatmak için sunum bağlantınızı false olarak ayarlayın ya da flow’un sonraki ekranlarına devam etmesi için hiçbir şey yapmayın.
.flow( isPresented: $flowPresented, flowConfiguration: flowConfiguration, didFinishPurchase: { product, purchaseResult in print("Purchase finished successfully") flowPresented = false // or do nothing to let the flow continue }, didFailPurchase: { product, error in print("Purchase failed: \(error)") }, didFinishRestore: { profile in print("Restore finished successfully") }, didFailRestore: { error in print("Restore failed: \(error)") }, didReceiveError: { error in flowPresented = false print("Flow error: \(error)") })
AdaptyFlowControllerDelegate’i olayları ele almak için uygulayın. En azından varsayılan uygulaması olmayan dört metodu implemente edin. Dikkat: controller başarılı bir satın almanın ardından kendini kapatmaz — didFinishPurchase içinde kapatın ya da flow’un sonraki ekranlarına devam etmesine izin vermek için hiçbir şey yapmayın:
Bir flow’un nasıl görüntüleneceğine dair daha fazla ayrıntı için rehberimize bakın.
3. Buton eylemlerini yönetin
Kullanıcılar butona tıkladığında, iOS SDK satın alma işlemlerini, geri yüklemeleri, flow’u kapatmayı ve bağlantı açmayı otomatik olarak yönetir.
Ancak bazı butonların özel veya önceden tanımlanmış kimlikleri vardır ve kodunuzda eylemlerin yönetilmesini gerektirir. Ya da varsayılan davranışlarını geçersiz kılmak isteyebilirsiniz.
Örneğin, kapat butonunu şu şekilde yönetebilirsiniz. UIKit’te, .close tetiklendiğinde SDK controller’ı otomatik olarak kapatır — yalnızca özel bir davranış istiyorsanız geçersiz kılın. SwiftUI’da ise isPresented binding’inizi kendiniz false olarak ayarlamanız gerekir.
Sorularınız mı var ya da sorunlarla mı karşılaşıyorsunuz? Sık sorulan soruların yanıtlarını bulabileceğiniz veya kendi sorularınızı sorabileceğiniz destek forumumuza göz atın. Ekibimiz ve topluluğumuz yardımcı olmak için burada!