ÿÿ Adapty Flutter SDK v4.0 ã¸ã®ç§»è¡Œ | Adapty ドキュメント

Adapty Flutter SDK ã‚’ v. 4.0 ã¸ç§»è¡Œã™ã‚‹

Adapty Flutter SDK 4.0 ã§ã¯ãƒ•ローãŒå°Žå…¥ã•れã€ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ« API ã®åç§°ãŒå¤‰æ›´ã•れã¾ã—ãŸã€‚æ–°ã—ã„ API ã¯æ–°ã—ã„ Flow Builder ã¨æ—¢å­˜ã® Paywall Builder ã®ä¸¡æ–¹ã«å¯¾å¿œã—ã¦ãŠã‚Šã€Adapty ダッシュボードå´ã®è¨­å®šå¤‰æ›´ã¯ä¸è¦ã§ã™ã€‚

クイックリファレンス

v3v4
Adapty().getPaywall(placementId: id)Adapty().getFlow(placementId: id)
Adapty().getPaywallForDefaultAudience(placementId: id)Adapty().getFlowForDefaultAudience(placementId: id)
Adapty().getPaywallProducts(paywall: paywall)Adapty().getPaywallProducts(flow: flow)
Adapty().logShowPaywall(paywall: paywall)Adapty().logShowFlow(flow: flow)
AdaptyPaywall(型)AdaptyFlow
AdaptyPaywallFetchPolicy(型)AdaptyFlowFetchPolicy
AdaptyUI().createPaywallView(paywall: paywall)AdaptyUI().createFlowView(flow: flow)
AdaptyUIPaywallView(型)AdaptyUIFlowView
AdaptyUIPaywallPlatformView(ウィジェット)AdaptyUIFlowPlatformView
AdaptyUI().presentPaywallView(view) / dismissPaywallView(view)AdaptyUI().presentFlowView(view) / dismissFlowView(view)
AdaptyUIPaywallsEventsObserverAdaptyUIFlowsEventsObserver
AdaptyUI().setPaywallsEventsObserver(observer)AdaptyUI().setFlowsEventsObserver(observer)
paywallViewDid* コールãƒãƒƒã‚¯flowViewDid* コールãƒãƒƒã‚¯
paywallViewDidFailRenderingflowViewDidReceiveError
AdaptyPaywallProduct ã¯ãã®ã¾ã¾åå‰ãŒå¤‰ã‚りã¾ã›ã‚“。プロダクトã¯å¼•ãç¶šãフローã«å±žã—ã¦ãŠã‚Šã€getPaywallProducts 㯠AdaptyFlow ã‚’å—ã‘å–るよã†ã«ãªã‚Šã¾ã—ãŸã€‚フローをå–å¾—ã™ã‚‹éš›ã« locale を渡ã™å¿…è¦ã¯ãªããªã‚Šã¾ã—ãŸã€‚購入ã¨ãƒ—ロファイル関連ã®API(makePurchaseã€restorePurchasesã€getProfileã€identify ãªã©ï¼‰ã¯å¤‰æ›´ãªã—ã€ãƒ“ューメソッド(presentã€dismissã€showDialog)も変ã‚りã¾ã›ã‚“。一部ã®ãƒ‡ãƒ•ォルト動作ãŒå¤‰æ›´ã•れã¦ã„ã¾ã™ã€‚詳ã—ãã¯ãƒ‡ãƒ•ォルト動作ã®å¤‰æ›´ã‚’ã”覧ãã ã•ã„。

最å°ãƒãƒ¼ã‚¸ãƒ§ãƒ³

Adapty Flutter SDK 4.0 ã§ã¯ã€æœ€å°è¦ä»¶ãŒå¼•ã上ã’られã¾ã—ãŸï¼š

  • iOS 15.0 — iOS ã®æœ€å°ãƒ‡ãƒ—ロイメントターゲット(iOS 13.0 ã‹ã‚‰å¼•ã上ã’)。
  • Xcode 26 ä»¥é™ â€” ãƒã‚¤ãƒ†ã‚£ãƒ– iOS SDK 㯠Swift tools 6.2 を使用ã—ã¾ã™ã€‚
  • Flutter 3.32.0(Dart 3.8.0)以é™ã€‚

インストール

パッケージを更新ã™ã‚‹

インストールã™ã‚‹ãƒ‘ッケージã¯ã€ã‚¢ãƒ—リãŒã‚­ãƒƒã‚ºãƒ¢ãƒ¼ãƒ‰ã‚’使用ã—ã¦ã„ã‚‹ã‹ã©ã†ã‹ã«ã‚ˆã£ã¦ç•°ãªã‚Šã¾ã™ã€‚

ã»ã¨ã‚“ã©ã®ã‚¢ãƒ—リã§ã¯ã€pubspec.yaml ã® adapty_flutter ã‚’ v4.0 ã«æ›´æ–°ã—ã¾ã™ï¼š

dependencies:
  adapty_flutter: 4.0.0

アプリãŒã‚­ãƒƒã‚ºãƒ¢ãƒ¼ãƒ‰ã‚’使用ã—ã¦ã„ã‚‹å ´åˆã¯ã€ä»£ã‚り㫠adapty_flutter_kids を指定ã—ã¾ã™ï¼š

dependencies:
  adapty_flutter_kids: 4.0.0

ã“れã¯ã‚¹ã‚¿ãƒ³ãƒ‰ã‚¢ãƒ­ãƒ³ãƒ‘ッケージã§ã€IDFAãŠã‚ˆã³åºƒå‘Šãƒˆãƒ©ãƒƒã‚­ãƒ³ã‚°ã‚³ãƒ¼ãƒ‰ã‚’削除ã—ã¦App Storeã®è¦ä»¶ã«æº–æ‹ ã—ã¾ã™ã€‚Dartã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆãƒ‘スをpackage:adapty_flutter_kids/adapty_flutter.dartã«æ›´æ–°ã—ã¦ãã ã•ã„。ãれ以外ã®ç§»è¡Œæ‰‹é †ã¯é€šå¸¸ãƒ‘ッケージã¨ã¾ã£ãŸãåŒã˜ã§ã™ã€‚

キッズモードã§ã¯ã€Adapty ダッシュボードã§IPアドレスåŽé›†ã‚’無効ã«ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚詳細ãªã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—手順ã¯ã‚­ãƒƒã‚ºãƒ¢ãƒ¼ãƒ‰ã‚’å‚ç…§ã—ã¦ãã ã•ã„。

iOS:ãƒã‚¤ãƒ†ã‚£ãƒ–SDKã¯Swift Package Manager経由ã§é…布ã•れるよã†ã«ãªã‚Šã¾ã—ãŸ

CocoaPodsã®ã‚¹ãƒšãƒƒã‚¯ãƒªãƒã‚¸ãƒˆãƒªã¯2026å¹´12月ã«èª­ã¿å–り専用ã«ãªã‚Šã¾ã™ã€‚ãã®ãŸã‚ã€v4ã‹ã‚‰ã¯ãƒã‚¤ãƒ†ã‚£ãƒ–iOS SDKã®CocoaPodsã«ã‚ˆã‚‹é…布ãŒçµ‚了ã—ã€ãƒ—ラグインã¯Swift Package Managerã®ã¿ã‚’通ã˜ã¦é…布ã•れã¾ã™ã€‚

Flutter 3.32〜3.43ã‚’ãŠä½¿ã„ã®å ´åˆã¯ã€Swift Package Managerã®ã‚µãƒãƒ¼ãƒˆã‚’一度有効化ã—ã¦ãã ã•ã„:

flutter config --enable-swift-package-manager

Flutter 3.44以é™ã§ã¯Swift Package ManagerãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§æœ‰åйã«ãªã£ã¦ã„ã‚‹ãŸã‚ã€ç‰¹åˆ¥ãªæ“作ã¯ä¸è¦ã§ã™ã€‚

フローã®å–å¾—

getPaywall → getFlow

返り値ã®åž‹ãŒ AdaptyPaywall ã‹ã‚‰ AdaptyFlow ã«å¤‰ã‚りã€locale を渡ã™å¿…è¦ãŒãªããªã‚Šã¾ã—㟠— フローをレンダリングã™ã‚‹éš›ã«ãƒ­ãƒ¼ã‚«ãƒ©ã‚¤ã‚ºã¯è‡ªå‹•çš„ã«è§£æ±ºã•れã€ã‚«ã‚¹ã‚¿ãƒ ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ã®å ´åˆã¯ã™ã¹ã¦ã®è¨­å®šæ¸ˆã¿ãƒ­ã‚±ãƒ¼ãƒ«ãŒ flow.remoteConfigs ã«è¿”ã•れã¾ã™ã€‚

- final paywall = await Adapty().getPaywall(placementId: 'YOUR_PLACEMENT_ID', locale: 'en');
+ final flow = await Adapty().getFlow(placementId: 'YOUR_PLACEMENT_ID');

getPaywallForDefaultAudience ã‚‚åŒæ§˜ã«ãƒªãƒãƒ¼ãƒ ã•れã¦ã„ã¾ã™ã€‚

- final paywall = await Adapty().getPaywallForDefaultAudience(placementId: 'YOUR_PLACEMENT_ID', locale: 'en');
+ final flow = await Adapty().getFlowForDefaultAudience(placementId: 'YOUR_PLACEMENT_ID');

フェッãƒãƒãƒªã‚·ãƒ¼ã®åž‹å㌠AdaptyPaywallFetchPolicy ã‹ã‚‰ AdaptyFlowFetchPolicy ã«å¤‰æ›´ã•れã¾ã—ãŸã€‚オプション(reloadRevalidatingCacheDataã€returnCacheDataElseLoadã€returnCacheDataIfNotExpiredElseLoad)ã¯å¤‰æ›´ã‚りã¾ã›ã‚“。

getPaywallProducts(paywall) → getPaywallProducts(flow)

getPaywallProducts ã¯åå‰ã¯ãã®ã¾ã¾ã§ã™ãŒã€flow パラメーター㧠AdaptyFlow ã‚’å—ã‘å–るよã†ã«ãªã‚Šã¾ã—ãŸï¼š

- final products = await Adapty().getPaywallProducts(paywall: paywall);
+ final products = await Adapty().getPaywallProducts(flow: flow);

データモデル

getFlow 㯠AdaptyPaywall ã®ä»£ã‚り㫠AdaptyFlow ã‚’è¿”ã—ã€ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ§‹é€ ãŒå¤‰ã‚りã¾ã—ãŸã€‚

v3 AdaptyPaywall メンãƒãƒ¼v4 AdaptyFlow メンãƒãƒ¼ã‚¢ã‚¯ã‚·ãƒ§ãƒ³
remoteConfig(å˜ä¸€ã€nullable)remoteConfigs(リスト)フローã¯è¨­å®šã•れãŸè¨€èªžã”ã¨ã«1ã¤ã®ãƒªãƒ¢ãƒ¼ãƒˆã‚³ãƒ³ãƒ•ィグをæŒã¡ã¾ã™ã€‚remoteConfig ゲッターã¯å¼•ãç¶šã存在ã—ã€æœ€åˆã®ã‚¨ãƒ³ãƒˆãƒªã‚’è¿”ã—ã¾ã™ã€‚特定ã®è¨€èªžã‚’é¸æŠžã™ã‚‹ã«ã¯ã€remoteConfigs ã‚’ locale ã§æ¤œç´¢ã—ã¦ãã ã•ã„。
productIdentifiersproductIdentifiersç¶­æŒã•れã¦ã„ã¾ã™ãŒã€ãƒ•ローã®ã™ã¹ã¦ã®ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ãƒãƒªã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã‚’横断ã—ã¦åŽé›†ã•れるよã†ã«ãªã‚Šã¾ã—ãŸã€‚ãƒãƒªã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã”ã¨ã®è­˜åˆ¥å­ã¯ flow.paywalls[i].productIdentifiers ã«æ ¼ç´ã•れã¦ã„ã¾ã™ã€‚
hasViewConfigurationhasViewConfiguration変更ãªã—。
placementIdï¼ˆéžæŽ¨å¥¨ï¼‰å‰Šé™¤æ¸ˆã¿flow.placement.id を使用ã—ã¦ãã ã•ã„。
revisionï¼ˆéžæŽ¨å¥¨ï¼‰å‰Šé™¤æ¸ˆã¿flow.placement.revision を使用ã—ã¦ãã ã•ã„。
vendorProductIdsï¼ˆéžæŽ¨å¥¨ï¼‰å‰Šé™¤æ¸ˆã¿productIdentifiers を使用ã—ã¦ãã ã•ã„。
(æ–°è¦)paywalls(AdaptyFlowPaywall ã®ãƒªã‚¹ãƒˆï¼‰å„エントリã¯ãƒ•ロー内ã®1ã¤ã®ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ãƒãƒªã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã§ã€ç‹¬è‡ªã® nameã€variationIdã€ãŠã‚ˆã³ productIdentifiers ã‚’æŒã¡ã¾ã™ã€‚
AdaptyPaywallViewConfiguration ã¯éžå…¬é–‹ã«ãªã‚Šã¾ã—㟠— ビュー設定ã¯ä¸é€æ˜Žã«ãªã‚Šã¾ã—ãŸã€‚ã“ã®åž‹ã¸ã®å‚ç…§ã‚’ã™ã¹ã¦å‰Šé™¤ã—ã¦ãã ã•ã„。

Webペイウォールメソッド

openWebPaywall 㨠createWebPaywallUrl ã®åå‰ã¯ãã®ã¾ã¾ã§ã™ãŒã€paywall パラメータ㯠AdaptyPaywall ã®ä»£ã‚り㫠AdaptyFlowPaywall(フローã®ãƒãƒªã‚¢ãƒ³ãƒˆï¼‰ã‚’å—ã‘å–るよã†ã«ãªã‚Šã¾ã—ãŸã€‚引ãç¶šã AdaptyPaywallProduct を渡ã™ã“ã¨ã‚‚ã§ãã¾ã™ã€‚

  final flow = await Adapty().getFlow(placementId: 'YOUR_PLACEMENT_ID');
- await Adapty().openWebPaywall(paywall: paywall);
+ if (flow.paywalls.isNotEmpty) {
+   await Adapty().openWebPaywall(paywall: flow.paywalls[0]);
+ }

フローã®ãƒ“ュー数を追跡ã™ã‚‹

logShowPaywall → logShowFlow

logShowPaywall 㯠logShowFlow ã«åå‰ãŒå¤‰æ›´ã•れã€AdaptyFlow ã‚’å—ã‘å–るよã†ã«ãªã‚Šã¾ã—ãŸã€‚イベントã¯å¼•ãç¶šãåŒã˜ãƒãƒªã‚¢ãƒ³ãƒˆã«å¯¾ã—ã¦è¨˜éŒ²ã•れるãŸã‚ã€æ—¢å­˜ã®ãƒ•ã‚¡ãƒãƒ«ãŠã‚ˆã³ A/B ãƒ†ã‚¹ãƒˆã®æŒ‡æ¨™ã¯ãƒ€ãƒƒã‚·ãƒ¥ãƒœãƒ¼ãƒ‰ã®å¤‰æ›´ãªã—ã«ãã®ã¾ã¾æ©Ÿèƒ½ã—ã¾ã™ã€‚

- await Adapty().logShowPaywall(paywall: paywall);
+ await Adapty().logShowFlow(flow: flow);

v3 ã¨åŒæ§˜ã«ã€ãƒ•ロービルダー ã¾ãŸã¯ ペイウォールビルダー ã§ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã•れãŸãƒ•ローやペイウォールを表示ã™ã‚‹éš›ã«ã¯ã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™å¿…è¦ã¯ã‚りã¾ã›ã‚“。Adapty ãŒãれらã®ãƒ“ューを自動的ã«ãƒˆãƒ©ãƒƒã‚­ãƒ³ã‚°ã—ã¾ã™ã€‚

フローã®è¡¨ç¤º

createPaywallView → createFlowView

メソッドåを変更ã—ã€AdaptyFlow ã‚’ flow ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ã§æ¸¡ã—ã¾ã™ã€‚ãã®ä»–ã®ãƒ‘ラメータ(loadTimeoutã€preloadProductsã€customTagsã€customTimersã€customAssetsã€productPurchaseParams)やã€ãƒ“ューã®ãƒ¡ã‚½ãƒƒãƒ‰ï¼ˆpresentã€dismissã€showDialog)ã¯å¤‰æ›´ã‚りã¾ã›ã‚“:

- final view = await AdaptyUI().createPaywallView(paywall: paywall);
+ finalÿÿ view = await AdaptyUI().createFlowView(flow: flow);
  await view.present();

AdaptyUIPaywallView → AdaptyUIFlowView

ビュータイプã®åå‰ãŒå¤‰æ›´ã•れã¾ã—ãŸã€‚éžæŽ¨å¥¨ã® paywallVariationId プロパティã¯å‰Šé™¤ã•れã¾ã—㟠— 代ã‚り㫠variationId を使用ã—ã¦ãã ã•ã„:

- void flowViewDidAppear(AdaptyUIPaywallView view) {
+ void flowViewDidAppear(AdaptyUIFlowView view) {

AdaptyUIPaywallPlatformView → AdaptyUIFlowPlatformView

ウィジェットツリーã«ãƒ“ューをウィジェットã¨ã—ã¦åŸ‹ã‚込む場åˆã¯ã€åå‰ã‚’変更ã—㦠flow パラメータを渡ã—ã¦ãã ã•ã„。イベントコールãƒãƒƒã‚¯ï¼ˆonDidAppearã€onDidFinishPurchase ãªã©ï¼‰ã¯åå‰ãŒãã®ã¾ã¾å¼•ãç¶™ãŒã‚Œã¾ã™ï¼š

- AdaptyUIPaywallPlatformView(
-   paywall: paywall,
+ AdaptyUIFlowPlatformView(
+   flow: flow,
    onDidFinishPurchase: (view, product, purchaseResult) { /* … */ },
  )

createFlowView ã§ä½œæˆã—ãŸãƒ•ロービューã¯ä½¿ã„æ¨ã¦ã§ã™ã€‚dismiss() を呼ã³å‡ºã™ã¨ã€ãƒ“ューã¯ãƒ¡ãƒ¢ãƒªã‹ã‚‰è§£æ”¾ã•れã€å†è¡¨ç¤ºã§ããªããªã‚Šã¾ã™ã€‚フローをもã†ä¸€åº¦è¡¨ç¤ºã™ã‚‹ã«ã¯ã€å†åº¦ createFlowView を呼ã³å‡ºã—ã¦ãã ã•ã„。

イベントã®å‡¦ç†

オブザーãƒãƒ¼ã‚¯ãƒ©ã‚¹ã¯ AdaptyUIPaywallsEventsObserver ã‹ã‚‰ AdaptyUIFlowsEventsObserver ã¸ã€ç™»éŒ²ãƒ¡ã‚½ãƒƒãƒ‰ã¯ setPaywallsEventsObserver ã‹ã‚‰ setFlowsEventsObserver ã¸ã€ãã—ã¦ã™ã¹ã¦ã® paywallViewDid* コールãƒãƒƒã‚¯ã¯ flowViewDid* ã¸ã¨ãれãžã‚Œãƒªãƒãƒ¼ãƒ ã•れã¾ã—ãŸã€‚

- class MyObserver extends AdaptyUIPaywallsEventsObserver {
+ class MyObserver extends AdaptyUIFlowsEventsObserver {
    @override
-   void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
+   void flowViewDidPerformAction(AdaptyUIFlowView view, AdaptyUIAction action) {
      // …
    }
  }

- AdaptyUI().setPaywallsEventsObserver(this);
+ AdaptyUI().setFlowsEventsObserver(this);

次ã®3ã¤ã®ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ã¯å¿…é ˆã§ã™ — ã“れらãŒãªã„ã¨ã‚ªãƒ–ザーãƒãƒ¼ã¯ã‚³ãƒ³ãƒ‘イルエラーã«ãªã‚Šã¾ã™ï¼š

  • flowViewDidFinishPurchase: v3 ã§ã¯ã‚ªãƒ—ションã§ã€ãƒ‡ãƒ•ォルトã§ã¯è³¼å…¥å¾Œã«ãƒ“ューãŒé–‰ã˜ã‚‰ã‚Œã¦ã„ã¾ã—ãŸã€‚ç¾åœ¨ã¯ã€ãƒ•ローを続ã‘ã‚‹ã‹ view.dismiss() を呼ã³å‡ºã™ã‹ã‚’è‡ªåˆ†ã§æ±ºå®šã—ã¾ã™ã€‚
  • flowViewDidFinishRestore: v3 ã¨åŒæ§˜ã«å¿…é ˆã§ã™ã€‚
  • flowViewDidReceiveError: paywallViewDidFailRendering ã‚’ç½®ãæ›ãˆã€ãã®ä»–ã®ãƒ“ューエラーもå—ã‘å–るよã†ã«ãªã‚Šã¾ã—ãŸã€‚

ãã®ä»–ã®å°ã•ãªå¤‰æ›´ç‚¹ãŒ 2 ã¤ã‚りã¾ã™ï¼š

  • setFlowsEventsObserver(ãŠã‚ˆã³ setOnboardingsEventsObserver)㌠null ã‚’å—ã‘付ã‘るよã†ã«ãªã‚Šã€è¨­å®šæ¸ˆã¿ã®ã‚ªãƒ–ザーãƒãƒ¼ã‚’å–り外ã›ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸã€‚ã“れã«ã‚ˆã‚Šã€SDK ãŒã‚ªãƒ–ザーãƒãƒ¼ã‚’ä¿æŒã—ç¶šã‘ã‚‹ã“ã¨ãŒãªããªã‚Šã¾ã™ã€‚
  • æ–°ã—ã„オプション㮠flowViewDidReceiveAnalyticEvent コールãƒãƒƒã‚¯ã¯ã€ãƒ•ローã‹ã‚‰ã®ã‚«ã‚¹ã‚¿ãƒ åˆ†æžã‚¤ãƒ™ãƒ³ãƒˆç”¨ã«äºˆç´„ã•れã¦ã„ã¾ã™ã€‚ç¾æ™‚点ã§ã¯ãƒ•ローã‹ã‚‰ã“ã®ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ãŒã‚³ãƒ¼ãƒ‰ã«é€å‡ºã•れるã“ã¨ã¯ãªã„ãŸã‚ã€å®Ÿè£…ã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“。

v4 ã§ã¯ã‚ªãƒ—トインã§åˆ©ç”¨ã§ãる新機能も追加ã•れã¦ã„ã¾ã™ã€‚

  • AdaptyUI().setObserverModeResolver(...) 㨠AdaptyUIObserverModeResolver — SDKãŒã‚ªãƒ–ザーãƒãƒ¼ãƒ¢ãƒ¼ãƒ‰ã§å‹•作中ã«ã€ãƒ•ローã‹ã‚‰é–‹å§‹ã•れãŸè³¼å…¥ã‚„リストアを処ç†ã—ã¾ã™ã€‚以å‰ã¯ãƒã‚¤ãƒ†ã‚£ãƒ–ã®iOSãŠã‚ˆã³Android SDKã§ã®ã¿åˆ©ç”¨å¯èƒ½ã§ã—ãŸã€‚オブザーãƒãƒ¼ãƒ¢ãƒ¼ãƒ‰ã§ãƒ•ローを表示ã™ã‚‹ã‚’å‚ç…§ã—ã¦ãã ã•ã„。
  • AdaptyUI().setSystemRequestsHandler(...) 㨠AdaptyUISystemRequestsHandler — フローã‹ã‚‰ã®ã‚·ã‚¹ãƒ†ãƒ ãƒªã‚¯ã‚¨ã‚¹ãƒˆï¼ˆOSã®æ¨©é™ãƒ—ロンプトやApp Storeã®ãƒ¬ãƒ“ューリクエスト)用ã«äºˆç´„ã•れã¦ã„ã¾ã™ã€‚フローã¯ã¾ã ã“れらã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’トリガーã—ãªã„ãŸã‚ã€ãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã‚’登録ã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“。

削除ã•れ㟠API

ã“れらã®ã‚·ãƒ³ãƒœãƒ«ã¯ 3.x ã§éžæŽ¨å¥¨ã¨ãªã‚Šã€v4 ã§ã¯å‰Šé™¤ã•れã¦ã„ã¾ã™ï¼š

setFallbackPaywalls → setFallback

- await Adapty().setFallbackPaywalls(assetId);
+ await Adapty().setFallback(assetId);

withIdfaCollectionDisabled → withAppleIdfaCollectionDisabled

  configuration: AdaptyConfiguration(apiKey: 'YOUR_PUBLIC_SDK_KEY')
-   ..withIdfaCollectionDisabled(true),
+   ..withAppleIdfaCollectionDisabled(true),

ãã®ä»–ã®å‰Šé™¤ã•れãŸãƒ¡ãƒ³ãƒãƒ¼

  • AdaptyPurchaseResultSuccess.jwsTransaction: appleJwsTransaction を使用ã—ã¦ãã ã•ã„。
  • AdaptyUIFlowView.paywallVariationId: variationId を使用ã—ã¦ãã ã•ã„。
  • AdaptyUIObserver 㨠AdaptyUI().setObserver(...): AdaptyUIFlowsEventsObserver 㨠setFlowsEventsObserver(...) を使用ã—ã¦ãã ã•ã„。

デフォルト動作ã®å¤‰æ›´

ã“れらã®å¤‰æ›´ã¯ã‚³ãƒ³ãƒ‘イルエラーを引ãèµ·ã“ã—ã¾ã›ã‚“ãŒã€å®Ÿè¡Œæ™‚ã«ãƒ†ã‚¹ãƒˆã—ã¦ãã ã•ã„:

  • 購入æˆåŠŸæ™‚: v3 ã§ã¯ paywallViewDidFinishPurchase ã®ãƒ‡ãƒ•ォルト動作ã§ãƒ“ューãŒé–‰ã˜ã‚‰ã‚Œã¦ã„ã¾ã—ãŸãŒã€v4 ã§ã¯ flowViewDidFinishPurchase ãŒå¿…é ˆã¨ãªã‚Šã€ãƒ‡ãƒ•ォルトã®å‹•作ã¯ã‚りã¾ã›ã‚“。ビューを閉ã˜ãŸã„å ´åˆã¯è‡ªåˆ†ã§ãã®å‡¦ç†ã‚’実装ã—ã¦ãã ã•ã„。
  • Android ã‚·ã‚¹ãƒ†ãƒ ã®æˆ»ã‚‹ãƒœã‚¿ãƒ³: デフォルトã§ã¯ãƒ•ローを閉ã˜ãªããªã‚Šã¾ã—ãŸã€‚ã“ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã¯ AndroidSystemBackAction ã¨ã—㦠flowViewDidPerformAction ã«æ¸¡ã•れるãŸã‚ã€æˆ»ã‚‹ãƒœã‚¿ãƒ³ã§ãƒ•ローを閉ã˜ãŸã„å ´åˆã¯ãã“ã§å‡¦ç†ã—ã¦ãã ã•ã„。
  • URL ã‚’é–‹ã処ç†: flowViewDidPerformAction ã®ãƒ‡ãƒ•ォルト動作ãŒå¤‰æ›´ã•れã€CloseAction 時ã®ãƒ“ュー閉鎖ã«åŠ ãˆã€OpenUrlAction ã‚’ãƒã‚¤ãƒ†ã‚£ãƒ–ã«å‡¦ç†ã™ã‚‹ï¼ˆãƒ€ãƒƒã‚·ãƒ¥ãƒœãƒ¼ãƒ‰ã§è¨­å®šã•れãŸã‚¢ãƒ—リ内ブラウザã¾ãŸã¯å¤–部ブラウザã®è¨­å®šã«å¾“ã†ï¼‰ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸã€‚URL を独自ã«å‡¦ç†ã—ãŸã„å ´åˆã¯ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ãã ã•ã„。
  • ビューã®ã‚¨ãƒ©ãƒ¼: flowViewDidReceiveError ãŒå¿…é ˆã¨ãªã‚Šã€ãƒ“ューを閉ã˜ã‚‹ã‹ã©ã†ã‹ã¯ã”自身ã®å®Ÿè£…次第ã§ã™ã€‚v3 ã§ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã‚¨ãƒ©ãƒ¼æ™‚ã«è‡ªå‹•çš„ã«ãƒ“ューãŒé–‰ã˜ã‚‰ã‚Œã‚‹å‹•作ã«ä¾å­˜ã—ã¦ã„ãŸå ´åˆã¯ã€ã“ã®ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯å†…ã§ view.dismiss() を呼ã³å‡ºã—ã¦ãã ã•ã„。
  • ビューã®ãƒ©ã‚¤ãƒ•サイクル: フローã¾ãŸã¯ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã®ãƒ“ューを閉ã˜ã‚‹ã¨ã€ãã®ãƒ“ューã¯ãƒ¡ãƒ¢ãƒªã‹ã‚‰è§£æ”¾ã•れã¾ã™ã€‚一度閉ã˜ãŸãƒ“ューã¯å†è¡¨ç¤ºã§ããªã„ãŸã‚ã€æ–°ã—ã„ビューを作æˆã—ã¦ãã ã•ã„。

オンボーディング API ã®å»ƒæ­¢

レガシーオンボーディング API 㯠v4.0 ã§å»ƒæ­¢ã•れã€Flow Builder ã«ç§»è¡Œã•れã¾ã—ãŸã€‚引ãç¶šã動作ã—ã¾ã™ãŒã€@Deprecated アノテーションã«ã‚ˆã‚Š IDE ãŒå»ƒæ­¢ã‚·ãƒ³ãƒœãƒ«ã‚’フラグã¨ã—ã¦è¡¨ç¤ºã—ã¾ã™ï¼ˆãƒ©ãƒ³ã‚¿ã‚¤ãƒ è­¦å‘Šã¯ç™ºç”Ÿã—ã¾ã›ã‚“)。ã“れらã®ã‚·ãƒ³ãƒœãƒ«ã¯å°†æ¥ã®ãƒªãƒªãƒ¼ã‚¹ã§å‰Šé™¤ã•れる予定ã§ã™ã®ã§ã€ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã® Flow Builder ã¸ã®ç§»è¡Œã‚’計画ã—ã¦ãã ã•ã„。 éžæŽ¨å¥¨ã®ã‚·ãƒ³ãƒœãƒ«: getOnboardingã€getOnboardingForDefaultAudienceã€createOnboardingViewã€presentOnboardingViewã€dismissOnboardingViewã€setOnboardingsEventsObserverã€AdaptyOnboardingã€AdaptyUIOnboardingViewã€AdaptyUIOnboardingPlatformViewã€AdaptyUIOnboardingsEventsObserverã€ãŠã‚ˆã³ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã®çŠ¶æ…‹ãƒ»å…¥åŠ›ãƒ»ã‚¢ãƒŠãƒªãƒ†ã‚£ã‚¯ã‚¹ãƒ¢ãƒ‡ãƒ«ã€‚

ÿÿÿÿ