ÿÿ Adapty React Native SDK v3.14 ã¸ã®ç§»è¡Œ | Adapty ドキュメント

Adapty React Native SDK ã‚’ v3.14 ã«ç§»è¡Œã™ã‚‹

Adapty React Native SDK 3.14.0 ã¯ãƒ¡ã‚¸ãƒ£ãƒ¼ãƒªãƒªãƒ¼ã‚¹ã§ã‚りã€ä»¥ä¸‹ã®å¯¾å¿œãŒå¿…è¦ãªå¤‰æ›´ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ï¼š

  • registerEventHandlers メソッド㌠setEventHandlers メソッドã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã—ãŸã€‚
  • AdaptyOnboardingView ã§ã¯ã€ã‚¤ãƒ™ãƒ³ãƒˆãƒãƒ³ãƒ‰ãƒ©ãƒ¼ãŒ eventHandlers オブジェクトã§ã¯ãªã個別㮠props ã¨ã—ã¦æ¸¡ã•れるよã†ã«ãªã‚Šã¾ã—ãŸã€‚
  • UI コンãƒãƒ¼ãƒãƒ³ãƒˆå‘ã‘ã®æ–°ã—ã„シンプルãªã‚¤ãƒ³ãƒãƒ¼ãƒˆæ–¹æ³•ãŒå°Žå…¥ã•れã¾ã—ãŸã€‚
  • logShowOnboarding メソッドãŒå‰Šé™¤ã•れã¾ã—ãŸã€‚
  • React Native ã®æœ€ä½Žãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒ 0.73.0 ã«æ›´æ–°ã•れã¾ã—ãŸã€‚
  • ペイウォールã¨ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã® iOS デフォルト表示スタイルãŒãƒšãƒ¼ã‚¸ã‚·ãƒ¼ãƒˆã‹ã‚‰ãƒ•ルスクリーンã«å¤‰æ›´ã•れã¾ã—ãŸã€‚

registerEventHandlers ã‚’ setEventHandlers ã«ç½®ãæ›ãˆã‚‹

Adapty ペイウォールビルダーãŠã‚ˆã³ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ãƒ“ルダーã§ä½¿ç”¨ã•れã¦ã„㟠registerEventHandlers メソッド㌠setEventHandlers メソッドã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã—ãŸã€‚ Adapty ペイウォールビルダーやオンボーディングビルダーを使用ã—ã¦ã„ã‚‹å ´åˆã¯ã€ã‚¢ãƒ—リã®ã‚³ãƒ¼ãƒ‰å†…ã§ registerEventHandlers を見ã¤ã‘㦠setEventHandlers ã«ç½®ãæ›ãˆã¦ãã ã•ã„。

ã“ã®å¤‰æ›´ã¯ãƒ¡ã‚½ãƒƒãƒ‰ã®å‹•作をより明確ã«ã™ã‚‹ãŸã‚ã«è¡Œã‚れã¾ã—ãŸã€‚ãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã¯ true/false ã‚’è¿”ã™ãŸã‚ã€1 ã¤ãšã¤å‡¦ç†ã•れã¾ã™ã€‚1 ã¤ã®ã‚¤ãƒ™ãƒ³ãƒˆã«è¤‡æ•°ã®ãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã‚’設定ã™ã‚‹ã¨ã€çµæžœã®å‹•作ãŒä¸æ˜Žç¢ºã«ãªã£ã¦ã„ãŸãŸã‚ã§ã™ã€‚

AdaptyOnboardingView ã‚„ AdaptyPaywallView ãªã©ã® React コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’使用ã™ã‚‹å ´åˆã€è‡ªåˆ†è‡ªèº«ã®çŠ¶æ…‹ç®¡ç†ã§ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®è¡¨ç¤ºã‚’制御ã™ã‚‹ãŸã‚ã€ã‚¤ãƒ™ãƒ³ãƒˆãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã‹ã‚‰ true/false ã‚’è¿”ã™å¿…è¦ã¯ã‚りã¾ã›ã‚“。戻り値ãŒå¿…è¦ãªã®ã¯ã€SDK ãŒãƒ“ューã®ãƒ©ã‚¤ãƒ•サイクルを管ç†ã™ã‚‹ãƒ¢ãƒ¼ãƒ€ãƒ«ç”»é¢è¡¨ç¤ºã®å ´åˆã®ã¿ã§ã™ã€‚

setEventHandlers を複数回呼ã³å‡ºã™ã¨ã€æŒ‡å®šã—ãŸãƒãƒ³ãƒ‰ãƒ©ãƒ¼ãŒä¸Šæ›¸ãã•れã€ãƒ‡ãƒ•ォルトãŠã‚ˆã³ãれ以å‰ã«è¨­å®šã—ãŸãƒãƒ³ãƒ‰ãƒ©ãƒ¼ãŒç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚

- const unsubscribe = view.registerEventHandlers({
-    // your event handlers
- })

 const unsubscribe = view.setEventHandlers({
    // your event handlers
 })

UI コンãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆãƒ‘スを更新ã™ã‚‹

Adapty SDK 3.14.0 ã§ã¯ã€UI コンãƒãƒ¼ãƒãƒ³ãƒˆå‘ã‘ã®ã‚·ãƒ³ãƒ—ルãªã‚¤ãƒ³ãƒãƒ¼ãƒˆæ–¹æ³•ãŒå°Žå…¥ã•れã¾ã—ãŸã€‚react-native-adapty/dist/ui ã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆã™ã‚‹ä»£ã‚りã«ã€react-native-adapty ã‹ã‚‰ç›´æŽ¥ã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚

æ–°ã—ã„インãƒãƒ¼ãƒˆæ–¹æ³•ã¯æ¨™æº–的㪠React Native ã®æ…£è¡Œã«æ²¿ã£ã¦ãŠã‚Šã€ã‚¤ãƒ³ãƒãƒ¼ãƒˆæ–‡ãŒã‚ˆã‚Šã‚·ãƒ³ãƒ—ルã«ãªã‚Šã¾ã™ã€‚AdaptyPaywallView ã‚„ AdaptyOnboardingView ãªã©ã® UI コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’使用ã—ã¦ã„ã‚‹å ´åˆã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆã‚’æ›´æ–°ã—ã¦ãã ã•ã„:

- import { AdaptyPaywallView } from 'react-native-adapty/dist/ui';
+ import { AdaptyPaywallView } from 'react-native-adapty';

- import { AdaptyOnboardingView } from 'react-native-adapty/dist/ui';
+ import { AdaptyOnboardingView } from 'react-native-adapty';

- import { createPaywallView } from 'react-native-adapty/dist/ui';
+ import { createPaywallView } from 'react-native-adapty';

- import { createOnboardingView } from 'react-native-adapty/dist/ui';
+ import { createOnboardingView } from 'react-native-adapty';

å¾Œæ–¹äº’æ›æ€§ã®ãŸã‚ã€æ—§ã‚¤ãƒ³ãƒãƒ¼ãƒˆæ–¹æ³•(react-native-adapty/dist/ui)ã¯å¼•ãç¶šãサãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã™ã€‚ãŸã ã—ã€ä¸€è²«æ€§ã¨æ˜Žç¢ºã•ã®ãŸã‚ã«æ–°ã—ã„インãƒãƒ¼ãƒˆæ–¹æ³•ã®ä½¿ç”¨ã‚’推奨ã—ã¾ã™ã€‚

React コンãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚¤ãƒ™ãƒ³ãƒˆãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã‚’æ›´æ–°ã™ã‚‹

オンボーディングã®ã‚¤ãƒ™ãƒ³ãƒˆãƒãƒ³ãƒ‰ãƒ©ãƒ¼ãŒã€AdaptyOnboardingView ã® eventHandlers オブジェクトã®å¤–ã«ç§»å‹•ã•れã¾ã—ãŸã€‚AdaptyOnboardingView を使用ã—ã¦ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’表示ã—ã¦ã„ã‚‹å ´åˆã¯ã€ã‚¤ãƒ™ãƒ³ãƒˆå‡¦ç†ã®æ§‹é€ ã‚’æ›´æ–°ã—ã¦ãã ã•ã„。

イベントãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã®å®Ÿè£…æ–¹æ³•ã«æ³¨æ„ã—ã¦ãã ã•ã„。レンダリングã®ãŸã³ã«ã‚ªãƒ–ジェクトãŒå†ç”Ÿæˆã•れãªã„よã†ã«ã™ã‚‹ãŸã‚ã€ã‚¤ãƒ™ãƒ³ãƒˆã‚’処ç†ã™ã‚‹é–¢æ•°ã«ã¯ useCallback を使用ã—ã¦ãã ã•ã„。

 import React, { useCallback } from 'react';
- import { AdaptyOnboardingView } from 'react-native-adapty/dist/ui';
+ import { AdaptyOnboardingView } from 'react-native-adapty';
+ import type { OnboardingEventHandlers } from 'react-native-adapty';
+
+ function MyOnboarding({ onboarding }) {
+   const onAnalytics = useCallback<OnboardingEventHandlers['onAnalytics']>((event, meta) => {}, []);
+   const onClose = useCallback<OnboardingEventHandlers['onClose']>((actionId, meta) => {}, []);
+   const onCustom = useCallback<OnboardingEventHandlers['onCustom']>((actionId, meta) => {}, []);
+   const onPaywall = useCallback<OnboardingEventHandlers['onPaywall']>((actionId, meta) => {}, []);
+   const onStateUpdated = useCallback<OnboardingEventHandlers['onStateUpdated']>((action, meta) => {}, []);
+   const onFinishedLoading = useCallback<OnboardingEventHandlers['onFinishedLoading']>((meta) => {}, []);
+   const onError = useCallback<OnboardingEventHandlers['onError']>((error) => {}, []);
+
   return (
     <AdaptyOnboardingView
       onboarding={onboarding}
       style={styles.container}
-       eventHandlers={{
-         onAnalytics(event, meta) { /* ... */ },
-         onClose(actionId, meta) { /* ... */ },
-         onCustom(actionId, meta) { /* ... */ },
-         onPaywall(actionId, meta) { /* ... */ },
-         onStateUpdated(action, meta) { /* ... */ },
-         onFinishedLoading(meta) { /* ... */ },
-         onError(error) { /* ... */ },
-       }}
+       onAnalytics={onAnalytics}
+       onClose={onClose}
+       onCustom={onCustom}
+       onPaywall={onPaywall}
+       onStateUpdated={onStateUpdated}
+       onFinishedLoading={onFinishedLoading}
+       onError={onError}
     />
   );
+ }

å¾Œæ–¹äº’æ›æ€§ã®ãŸã‚ã€eventHandlers プロパティã¯å¼•ãç¶šãサãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã™ãŒã€éžæŽ¨å¥¨ã¨ãªã£ã¦ã„ã¾ã™ã€‚上記ã®ã‚ˆã†ã«å€‹åˆ¥ã®ã‚¤ãƒ™ãƒ³ãƒˆãƒãƒ³ãƒ‰ãƒ©ãƒ¼ãƒ—ロパティã¸ã®ç§»è¡Œã‚’推奨ã—ã¾ã™ã€‚

logShowOnboarding を削除ã™ã‚‹

Adapty SDK 3.14.0 ã§ã¯ã€logShowOnboarding メソッド㌠SDK ã‹ã‚‰å‰Šé™¤ã•れã¾ã—ãŸã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使用ã—ã¦ã„ãŸå ´åˆã€SDK ã‚’ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.14 以é™ã«ã‚¢ãƒƒãƒ—グレードã™ã‚‹ã¨åˆ©ç”¨ã§ããªããªã‚Šã¾ã™ã€‚

代ã‚りã«ã€Adapty ã®ãƒŽãƒ¼ã‚³ãƒ¼ãƒ‰ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ãƒ“ルダーã§ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’作æˆã§ãã¾ã™ã€‚ã“れらã®ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã®ã‚¢ãƒŠãƒªãƒ†ã‚£ã‚¯ã‚¹ã¯è‡ªå‹•çš„ã«è¿½è·¡ã•れã€å¤šãã®ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚ºã‚ªãƒ—ションも利用ã§ãã¾ã™ã€‚

React Native ã‚’æ›´æ–°ã™ã‚‹

Adapty SDK 3.14.0 以é™ã€React Native ã®æœ€ä½Žã‚µãƒãƒ¼ãƒˆãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ 0.73.0 ã¨ãªã‚Šã¾ã™ã€‚ãれ以å‰ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’使用ã—ã¦ã„ã‚‹å ´åˆã¯ã€React Native ã‚’ 0.73.0 以é™ã«æ›´æ–°ã—ã¦ã€Adapty ÿÿSDK を安定ã—ã¦åˆ©ç”¨ã§ãるよã†ã«ã—ã¦ãã ã•ã„。

モーダルペイウォールã¨ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã® iOS 表示スタイルを更新ã™ã‚‹

Adapty SDK 3.14.0 ã§ã¯ã€view.present() メソッドを使用ã—ã¦è¡¨ç¤ºã™ã‚‹ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ã¨ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã® iOS デフォルト表示スタイルãŒãƒšãƒ¼ã‚¸ã‚·ãƒ¼ãƒˆã‹ã‚‰ãƒ•ルスクリーンã«å¤‰æ›´ã•れã¾ã—ãŸã€‚

以å‰ã®ãƒšãƒ¼ã‚¸ã‚·ãƒ¼ãƒˆè¡¨ç¤ºã‚¹ã‚¿ã‚¤ãƒ«ã‚’ç¶­æŒã—ãŸã„å ´åˆã¯ã€present() メソッド㫠iosPresentationStyle パラメーターを渡ã—ã¦ãã ã•ã„:

try {
  await view.present({ iosPresentationStyle: 'page_sheet' });
} catch (error) {
  // handle the error
}
ÿÿÿÿ