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.

Warning

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.0v4.1
Adapty Attribution varsayılan olarak etkinAdapty Attribution varsayılan olarak devre dışı; withAdaptyAttributionEnabled(true) ile etkinleştirin
Adapty().updateAttribution(attribution, source: source)Adapty().updateExternalAttribution(attribution, provider: provider)
AdaptyAttributionSourceAdaptyExternalAttributionProvider, yeni custom değeriyle
AdaptyProfile.appliedAttributionSourcesAdaptyProfile.appliedExternalAttributionProviders
4.0 için indirilen yedek dosyaYeni yedek dosya formatı; dosyayı yeniden indirin
Tanıtılan uygulama içi satın almalar otomatik tamamlanıyorduUygulamanız bunları didReceivePromotedPurchaseStream üzerinden tamamlar
dismissFlowView(view) her zaman view’ı serbest bırakırdestroy: 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

Warning

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.

Warning

Bu adımı atlarsanız build hatası almazsınız. Ancak SDK eski dosyayı reddeder ve tüm placement’ların yedekleri çalışmaz.

Warning

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.

Warning

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.