Skill destekleyen tüm ajanlara kurulabilir. Güncellemek için npx skills update çalıştırın.
npx skills add adaptyteam/adapty-skills --all
Skill'ler SDK entegrasyonu, flow ve paywall oluşturma, yayın öncesi denetim, placement taşıma ve daha fazlasını kapsar. Görevi kendi cümlelerinizle anlatın, ajanınız doğru skill'i seçsin.
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 ekran dizileri; no-code Flow & Paywall Builder ile oluşturulur. SDK bunları getFlow aracılığıyla getirir. Arayüzü kendi kodunuzda oluşturmayı tercih ediyorsanız bunun yerine paywall kullanın — bkz. Paywall’ları manuel olarak uygulama.
Placement’lar – uygulamanızda flow’ları nerede ve ne zaman göstereceğiniz (örneğin main, onboarding, settings). Flow’ları kontrol panelinde placement’lara bağlar, ardından kodunuzda placement ID’siyle bunları talep edersiniz. Bu sayede A/B testi yapmak ve farklı kullanıcılara farklı flow’lar göstermek kolaylaşır.
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 de Adapty’den alırsınız. Kılavuza bakın.
Observer mode
🔴 Zor
Kendi satın alma altyapınız zaten var ve bunu kullanmaya devam etmek istiyorsunuz. Observer mode’un Adapty’de bazı kısıtlamaları olduğunu unutmayın. Makaleye bakın.
Important
Aşağıdaki adımlar, Adapty Flow & Paywall Builder’da oluşturulan bir flow’un nasıl uygulanacağını göstermektedir.
Flow’larınız, kontrol panelinde yapılandırılan placement’larla ilişkilendirilmiştir. Placement’lar, farklı kitleler için farklı flow’lar çalıştırmanıza veya A/B testi yapmanıza olanak tanır.
Adapty Flow & Paywall Builder’da oluşturulan bir flow’u almak 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ı alın. 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.
Tip
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!