Adapty Flutter SDK'yı v4.1'e Taşıma
Adapty Flutter SDK 4.1, Adapty Attribution’ın nasıl etkinleştirileceğini değiştirir, harici attribution API’larını yeniden adlandırır ve yedek dosya formatını değiştirir. Ayrıca App Store’da tanıtılan uygulama içi satın almaları uygulamanıza devreder ve bir flow görünümünü kapattıktan sonra canlı tutmanın bir yolunu ekler.
Yeniden adlandırılan API’lar tam bir kırılma noktasıdır. Eski adlar tamamen kaldırıldı — bunları köprüleyecek deprecated takma adlar bulunmuyor. 4.0.x’e karşı derlenen kod, aşağıda listelenen her çağrı noktasını yeniden adlandırmadığınız sürece 4.1’de hata verir.
Hâlâ 3.x’teyseniz önce v4.0’a geçiş rehberiyle başlayın, ardından bu kılavuzu takip edin.
Hızlı başvuru kılavuzu
| v4.0 | v4.1 |
|---|---|
| Adapty Attribution varsayılan olarak etkin | Adapty Attribution varsayılan olarak devre dışı; withAdaptyAttributionEnabled(true) ile etkinleştirin |
Adapty().updateAttribution(attribution, source: source) | Adapty().updateExternalAttribution(attribution, provider: provider) |
AdaptyAttributionSource | AdaptyExternalAttributionProvider, yeni custom değeriyle |
AdaptyProfile.appliedAttributionSources | AdaptyProfile.appliedExternalAttributionProviders |
| 4.0 için indirilen yedek dosya | Yeni yedek dosya formatı; dosyayı yeniden indirin |
| Tanıtılan uygulama içi satın almalar otomatik tamamlanıyordu | Uygulamanız bunları didReceivePromotedPurchaseStream üzerinden tamamlar |
dismissFlowView(view) her zaman view’ı serbest bırakır | destroy: false view’ı tekrar göstermek için canlı tutar |
Satın alma, profil ve flow sunum API’leri bunun dışında değişmemiştir.
Kurulum
pubspec.yaml dosyanızda adapty_flutter sürümünü v4.1 olarak güncelleyin:
dependencies:
adapty_flutter: 4.1.0
Uygulamanız Kids Mode kullanıyorsa bunun yerine adapty_flutter_kids belirtin:
dependencies:
adapty_flutter_kids: 4.1.0
Gereksinimler 4.0’dan bu yana değişmedi: Flutter 3.32.0 (Dart 3.8.0) ve iOS 15.0. Tam kurulum için Adapty SDK’yı Yükle sayfasına bakın.
4.1, yerel iOS SDK’yı 4.1.3 ve yerel Android SDK’yı 4.1.1 sürümüne sabitler. iOS sürümü ayrıca flow analitik olaylarının sayısal parametrelerindeki bir hatayı da düzeltir: bu düzeltmeden önce, her 0 ve 1 değeri flowViewDidReceiveAnalyticEvent’e false ve true olarak ulaşıyordu.
⚠️ Adapty Attribution varsayılan olarak devre dışıdır
SDK 4.1’e güncelleyip opt-in yapmazsanız, Adapty Attribution sessizce çalışmayı durdurur — yüklemeler kayıt edilmez ve sizi uyaran hiçbir şey olmaz.
4.0 ve önceki sürümlerde SDK, Adapty Attribution için yüklemeleri otomatik olarak kaydediyordu. 4.1’den itibaren bu özellik varsayılan olarak kapalıdır: SDK yüklemeleri kaydetmez, onUpdateInstallationDetailsSuccessStream ve onUpdateInstallationDetailsFailStream hiçbir zaman tetiklenmez ve getCurrentInstallationStatus AdaptyInstallationStatusNotAvailable döndürür.
Adapty Attribution kullanıyorsanız, SDK’yı yapılandırırken bu özelliği etkinleştirin:
await Adapty().activate(
- configuration: AdaptyConfiguration(apiKey: 'YOUR_PUBLIC_SDK_KEY'),
+ configuration: AdaptyConfiguration(apiKey: 'YOUR_PUBLIC_SDK_KEY')
+ ..withAdaptyAttributionEnabled(true),
);
Adapty Attribution kullanmıyorsanız herhangi bir değişiklik yapmanıza gerek yoktur.
Yeniden Adlandırılan Harici Attribution API’leri
Harici bir sağlayıcıdan (Adjust, AppsFlyer, Branch, Tenjin veya özel bir sağlayıcı) attribution verisi ileten API’ler, native SDK’larla uyumlu olacak şekilde yeniden adlandırıldı.
updateAttribution → updateExternalAttribution
Metod yeniden adlandırıldı ve source parametresi provider olarak değiştirildi. Parametre artık bir string yerine AdaptyExternalAttributionProvider alıyor; attribution verisi hâlâ bir map:
- await Adapty().updateAttribution(attribution, source: 'adjust');
+ await Adapty().updateExternalAttribution(attribution, provider: AdaptyExternalAttributionProvider.adjust);
AdaptyAttributionSource → AdaptyExternalAttributionProvider
Sağlayıcı türü yeniden adlandırıldı. Bir string üzerindeki açık bir sarmalayıcı olmaya devam eder — önceden tanımlanmış değerler şunlardır: appleAds, adjust, appsflyer, branch, tenjin ve Adapty’nin doğrudan entegre olmadığı sağlayıcılar için yeni bir custom. Herhangi başka bir string’den de oluşturabilirsiniz; bu sayede Adapty’nin ileride ekleyeceği bir sağlayıcı, SDK güncellemesi gerektirmeden çalışır:
final provider = AdaptyExternalAttributionProvider('my_provider');
AdaptyProfile.appliedAttributionSources → appliedExternalAttributionProviders
Profile’a uygulanan attribution sağlayıcılarını listeleyen profil özelliği yeniden adlandırıldı ve öğe türü de buna göre değişti:
- if (profile.appliedAttributionSources.contains(AdaptyAttributionSource.appleAds)) {
+ if (profile.appliedExternalAttributionProviders.contains(AdaptyExternalAttributionProvider.appleAds)) {
// Apple Ads attribution has been applied
}
Serileştirilmiş profil alanı applied_attribution_sources adını koruduğundan, ham profili okuyan bir backend için herhangi bir değişiklik gerekmez. Ancak bu özelliği okuyan kodun güncellenmesi gerekir — bkz. Apple Ads hedefli paywall gösterme.
Yedek dosyalar
Yedek dosya biçimi SDK 4.1’de değişti. Placements > Fallbacks bölümünden dosyayı yeniden indirin ve uygulamanıza ekleyin; 4.0 için daha önce indirmiş olsanız bile bu adımı atlamamanız gerekir.
Bu adımı atlarsanız build hatası almazsınız. Ancak SDK eski dosyayı reddeder ve tüm placement’ların yedekleri çalışmaz.
⚠️ Öne çıkan uygulama içi satın almalar artık uygulamanızı bekliyor
Bu, uygun olduğunuzda benimseyeceğiniz yeni bir özellik değil, bir davranış değişikliğidir. 4.0’da, App Store ürün sayfanızda öne çıkarılan bir uygulama içi satın alma kendi kendine tamamlanıyordu. 4.1’de ise yalnızca uygulamanız bunu dinliyorsa tamamlanır. Aşağıdaki kod olmadan 4.1’i yayına alırsanız bu satın almalar gerçekleşmez — App Store ürünü uygulamanıza teslim eder ve başka hiçbir şey olmaz.
4.0’da Adapty, tanıtım satın alımını diğer işlemler gibi kaydediyordu ve uygulamanızın bunu kesip müdahale etme imkânı yoktu. 4.1, uygulamanıza bu kontrolü veriyor; bununla birlikte satın alımı tamamlama sorumluluğu da size geçiyor.
didReceivePromotedPurchaseStream’e abone olun ve ürünü makePromotedPurchase’a geçirin:
Adapty().didReceivePromotedPurchaseStream.listen((product) async {
try {
final result = await Adapty().makePromotedPurchase(product: product);
// process the purchase result
} on AdaptyError catch (e) {
// handle the error
}
});
activate çağrısından hemen sonra, uygulama başlangıcında promosyonlu bir satın alma gelmeden önce abone olun. Bu bir broadcast stream’dir ve geçmişi tekrarlamaz: hiçbir şey dinlemiyorken gelen bir ürün düşer ve satın alma kaybolur.
makePromotedPurchase herhangi bir satın alma parametresi almaz; çünkü promosyonlu bir ürün, bir paywall’dan değil App Store’dan gelir ve paywall bağlamı taşımaz. makePurchase ile aynı AdaptyPurchaseResult değerini döndürür.
Bu stream, StoreKit 2 üzerine kuruludur ve iOS 16.4 veya daha yenisini gerektirir. iOS 16.4 altında ve Android’de hiçbir zaman tetiklenmez.
Tanıtılan ürün bir abonelik teklifi içeriyorsa, SDK satın alma sırasında bunu otomatik olarak uygular. Teklif, App Store satın alma niyetinden okunur; bu bilgi iOS 18.0 ve sonrasında açık hale gelir. iOS 16.4–17.x sürümlerinde ise satın alma temel fiyat üzerinden gerçekleşir.
Flow görünümünü kapattıktan sonra canlı tutma
AdaptyUI().dismissFlowView ve AdaptyUIFlowView.dismiss, bir destroy bayrağı kabul eder:
await AdaptyUI().dismissFlowView(view, destroy: false);
Varsayılan değeri true’dur; bu, görünümü eskisi gibi serbest bırakır. destroy: false ile görünüm canlı kalır; böylece tekrar gösterebilir ve kullanıcı, flow’un biriktirdiği durumla birlikte kaldığı ekrana geri döner.
Bu şekilde canlı tutulan bir görünüm, destroy: true ile kapatılana kadar bellekte tutulur. Serbest bırakılmış bir görünümü sunmaya çalışmak başarısız olur; bu nedenle söz konusu flow’u tekrar göstermek için createFlowView’ı yeniden çağırın.
hasViewConfiguration
AdaptyFlow.hasViewConfiguration artık flow’un bir UI şeması taşımasını da gerektiriyor; dolayısıyla yalnızca AdaptyUI’ın render edebileceği bir flow için true döndürüyor. Şeması olmadan uygulamanıza ulaşan bir flow, 4.0’ın true döndürdüğü durumda artık false döndürüyor. Bkz. View configuration’ı getirme.