ÿÿ React Nativeã§ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’表示ã™ã‚‹ | Adapty ドキュメント

React Native SDKã§ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’表示ã™ã‚‹

オンボーディング㯠SDK v4 ã§éžæŽ¨å¥¨ã¨ãªã‚Šã€å°†æ¥ã®ãƒªãƒªãƒ¼ã‚¹ã§å‰Šé™¤ã•れる予定ã§ã™ã€‚ ãƒã‚°ä¿®æ­£ã‚„改善ã¯è¡Œã‚れã¾ã›ã‚“。代ã‚りã«ãƒ•ローを使用ã—ã¦ãã ã•ã„。オンボーディング㯠WebView 内ã§å‹•作ã—ã¾ã™ãŒã€ãƒ•ローã¯ãƒ‡ãƒã‚¤ã‚¹ä¸Šã§ãƒã‚¤ãƒ†ã‚£ãƒ–ã«ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã•れるãŸã‚ã€ã‚ˆã‚Šã‚¹ãƒ ãƒ¼ã‚ºãªã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã€ä¸€è²«ã—ãŸãƒã‚¤ãƒ†ã‚£ãƒ–ã®å¤–観ã€é«˜é€Ÿãªèª­ã¿è¾¼ã¿ã€WebView ランタイムã¸ã®ä¾å­˜ãŒã‚りã¾ã›ã‚“。詳ã—ãã¯ãƒ•ローã¨ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ã®å–å¾—ãŠã‚ˆã³ãƒ•ローã¨ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ã®è¡¨ç¤ºã‚’ã”覧ãã ã•ã„。

ペイウォールビルダーを使ã£ã¦ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’カスタマイズã—ãŸå ´åˆã€ãƒ¢ãƒã‚¤ãƒ«ã‚¢ãƒ—リã®ã‚³ãƒ¼ãƒ‰ä¸Šã§ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°å‡¦ç†ã‚’実装ã—ãªãã¦ã‚‚ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«è¡¨ç¤ºã§ãã¾ã™ã€‚ã“ã®ã‚ˆã†ãªã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã«ã¯ã€è¡¨ç¤ºã™ã‚‹å†…容ã¨è¡¨ç¤ºæ–¹æ³•ã®ä¸¡æ–¹ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚

å§‹ã‚ã‚‹å‰ã«ã€ä»¥ä¸‹ã‚’確èªã—ã¦ãã ã•ã„:

  1. Adapty React Native SDK 3.8.0 以é™ã‚’インストール済ã¿ã§ã‚ã‚‹ã“ã¨ã€‚
  2. ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’ä½œæˆæ¸ˆã¿ã§ã‚ã‚‹ã“ã¨ã€‚
  3. オンボーディングをプレースメントã«è¿½åŠ æ¸ˆã¿ã§ã‚ã‚‹ã“ã¨ã€‚

Adapty React Native SDK ã§ã¯ã€ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’表示ã™ã‚‹æ–¹æ³•ãŒ2ã¤ã‚りã¾ã™ï¼š

  • Reactコンãƒãƒ¼ãƒãƒ³ãƒˆ: 埋ã‚è¾¼ã¿åž‹ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã¨ã—ã¦ã€ã‚¢ãƒ—リã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã‚„ナビゲーションシステムã«çµ±åˆã§ãã¾ã™ã€‚

  • モーダル表示

React コンãƒãƒ¼ãƒãƒ³ãƒˆ

AdaptyOnboardingView コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’ React Native ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆéšŽå±¤ã«ç›´æŽ¥çµ„ã¿è¾¼ã‚€ã“ã¨ã§ã€æ—¢å­˜ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãƒ„リーã«ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’埋ã‚è¾¼ã‚ã¾ã™ã€‚埋ã‚è¾¼ã¿åž‹ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’使ã†ã¨ã€ã‚¢ãƒ—リã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã‚„ナビゲーションシステムã¨ã‚·ãƒ¼ãƒ ãƒ¬ã‚¹ã«çµ±åˆã§ãã¾ã™ã€‚

Android ã§ã¯ã€è¦–覚的ãªãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã‚¢ãƒ¼ãƒ†ã‚£ãƒ•ァクトをé¿ã‘ã‚‹ãŸã‚ã«ã€AdaptyOnboardingView ã®è¿½åŠ è¨­å®šã‚’æŽ¨å¥¨ã—ã¾ã™ã€‚詳ã—ã㯠Android ã§ã‚·ã‚¹ãƒ†ãƒ  UI ãŒã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¨é‡ãªã‚‹å ´åˆ ã‚’å‚ç…§ã—ã¦ãã ã•ã„。

オンボーディングをユーザーãŒé–‰ã˜ã‚‰ã‚Œã‚‹ã‚¹ã‚¿ãƒ³ãƒ‰ã‚¢ãƒ­ãƒ³ç”»é¢ã¨ã—ã¦è¡¨ç¤ºã™ã‚‹ã«ã¯ã€createOnboardingView メソッドã§ä½œæˆã—㟠view ã«å¯¾ã—㦠view.present() メソッドを使用ã—ã¾ã™ã€‚å„ view ã¯ä¸€åº¦ã—ã‹ä½¿ç”¨ã§ãã¾ã›ã‚“。オンボーディングをå†åº¦è¡¨ç¤ºã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã¯ã€createOnboardingView ã‚’ã‚‚ã†ä¸€åº¦å‘¼ã³å‡ºã—ã¦æ–°ã—ã„ view インスタンスを作æˆã—ã¦ãã ã•ã„。

åŒã˜ view ã‚’å†ä½œæˆã›ãšã«å†åˆ©ç”¨ã™ã‚‹ã“ã¨ã¯ç¦æ­¢ã•れã¦ã„ã¾ã™ã€‚ã“れを行ã†ã¨ AdaptyUIError.viewAlreadyPresented エラーãŒç™ºç”Ÿã—ã¾ã™ã€‚

iOSã®è¡¨ç¤ºã‚¹ã‚¿ã‚¤ãƒ«ã‚’設定ã™ã‚‹

present() メソッド㫠iosPresentationStyle パラメーターを渡ã™ã“ã¨ã§ã€iOSã§ã®ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ã®è¡¨ç¤ºæ–¹æ³•を設定ã§ãã¾ã™ã€‚パラメーターã«ã¯ 'full_screen'(デフォルト)ã¾ãŸã¯ 'page_sheet' を指定ã§ãã¾ã™ã€‚

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

オンボーディング中ã®ãƒ­ãƒ¼ãƒ€ãƒ¼

React Native ã§ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’表示ã™ã‚‹éš›ã€ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ãŒè¡¨ç¤ºã•れるå‰ã«çŸ­ã„白ã„フラッシュやローディング画é¢ãŒè¡¨ç¤ºã•れるã“ã¨ãŒã‚りã¾ã™ã€‚ã“れã¯ã€åŸºç›¤ã¨ãªã‚‹ãƒã‚¤ãƒ†ã‚£ãƒ–ビューãŒåˆæœŸåŒ–ã•れる間ã«ç™ºç”Ÿã—ã¾ã™ã€‚ニーズやワークフローã«å¿œã˜ã¦ã€ã•ã¾ã–ã¾ãªæ–¹æ³•ã§å¯¾å‡¦ã§ãã¾ã™ã€‚

onFinishedLoading を使ã£ãŸã‚¹ãƒ—ラッシュ画é¢ã®åˆ¶å¾¡

ã“ã®ã‚¢ãƒ—ローãƒã¯ React コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’使用ã™ã‚‹å ´åˆã«ã®ã¿åˆ©ç”¨å¯èƒ½ã§ã™ã€‚モーダル表示ã«ã¯å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“。

React Nativeã§æŽ¨å¥¨ã•れるアプローãƒã¯ã€ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ãŒå®Œå…¨ã«èª­ã¿è¾¼ã¾ã‚Œã‚‹ã¾ã§ã‚¹ãƒ—ラッシュスクリーンã¾ãŸã¯ã‚«ã‚¹ã‚¿ãƒ ã‚ªãƒ¼ãƒãƒ¼ãƒ¬ã‚¤ã‚’表示ã—ç¶šã‘ã€ãã®å¾Œæ‰‹å‹•ã§éžè¡¨ç¤ºã«ã™ã‚‹ã“ã¨ã§ã™ã€‚

Reactコンãƒãƒ¼ãƒãƒ³ãƒˆï¼ˆAdaptyOnboardingView)を使用ã™ã‚‹å ´åˆã¯ã€ã‚¹ãƒ—ラッシュスクリーンやオーãƒãƒ¼ãƒ¬ã‚¤ã‚’éžè¡¨ç¤ºã«ã™ã‚‹å‰ã«onFinishedLoadingイベントを待ã¡ã¾ã™ï¼š

ãƒã‚¤ãƒ†ã‚£ãƒ–ローダーã®ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚º

Expo マãƒãƒ¼ã‚¸ãƒ‰ãƒ¯ãƒ¼ã‚¯ãƒ•ローã§ã¯ã€ã‚«ã‚¹ã‚¿ãƒ ãƒã‚¤ãƒ†ã‚£ãƒ–レイアウト(Android ã® res/layout ãªã©ï¼‰ã‚’é…ç½®ã™ã‚‹ã“ã¨ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。Expo アプリã®å ´åˆã€ã‚¹ãƒ—ラッシュスクリーンを制御ã™ã‚‹ã‹ã€React Native オーãƒãƒ¼ãƒ¬ã‚¤ã‚’使用ã™ã‚‹ã®ãŒå”¯ä¸€ã®é¸æŠžè‚¢ã§ã™ã€‚

Android 㨠iOS ãれãžã‚Œã®ãƒ—ラットフォーム固有ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’使ã£ã¦ã€ãƒã‚¤ãƒ†ã‚£ãƒ–ãƒ­ãƒ¼ãƒ€ãƒ¼ã‚’å·®ã—æ›¿ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚モーダル表示を使用ã—ã¦ã„ã‚‹å ´åˆã¯ã€ã“ã®æ–¹æ³•ãŒå”¯ä¸€ã®é¸æŠžè‚¢ã«ãªã‚Šã¾ã™ã€‚

ãŸã ã—ã€React Native アプリã§ã¯ã“ã®ã‚¢ãƒ—ローãƒã¯é€šå¸¸ã‚ã¾ã‚Šä¾¿åˆ©ã§ã¯ã‚りã¾ã›ã‚“。

  • Android 㨠iOS ã§åˆ¥ã€…ã®å®Ÿè£…ãŒå¿…è¦

  • Expo マãƒãƒ¼ã‚¸ãƒ‰ãƒ¯ãƒ¼ã‚¯ãƒ•ローã¨ã¯äº’æ›æ€§ãŒãªã„ å„プラットフォームå‘ã‘ã«ãƒ—レースホルダーを定義ã—ã¾ã™ï¼š

  • iOS: AdaptyOnboardingPlaceholderView.xib ã‚’ Xcode プロジェクトã«è¿½åŠ ã—ã¾ã™ã€‚詳細ã¯ã“ã¡ã‚‰ã€‚

  • Android: res/layout ã« adapty_onboarding_placeholder_view.xml を作æˆã—ã€ãƒ—レースホルダーを定義ã—ã¾ã™ã€‚詳細ã¯ã“ã¡ã‚‰ã€‚

オンボーディングã§ã®ãƒªãƒ³ã‚¯ã®é–‹ãæ–¹ã®ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚ºã¯ã€Adapty SDK v3.15.1 以é™ã§ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã™ã€‚

デフォルトã§ã¯ã€ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°å†…ã®ãƒªãƒ³ã‚¯ã¯ã‚¢ãƒ—リ内ブラウザã§é–‹ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã‚¢ãƒ—リを切り替ãˆã‚‹ã“ã¨ãªãウェブページを閲覧ã§ãã€ã‚·ãƒ¼ãƒ ãƒ¬ã‚¹ãªãƒ¦ãƒ¼ã‚¶ãƒ¼ä½“é¨“ãŒæä¾›ã•れã¾ã™ã€‚

外部ブラウザã§ãƒªãƒ³ã‚¯ã‚’é–‹ãよã†ã«å¤‰æ›´ã—ãŸã„å ´åˆã¯ã€externalUrlsPresentation パラメータを WebPresentation.BrowserOutApp ã«è¨­å®šã—ã¦ã“ã®å‹•作をカスタマイズã§ãã¾ã™ã€‚

トラブルシューティング

システムUIãŒAndroidã®ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¨é‡ãªã‚‹

ã“ã®è¨­å®šã¯ãƒ™ã‚¢React Nativeプロジェクトã§ã®ã¿ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã™ã€‚

Expoマãƒãƒ¼ã‚¸ãƒ‰ãƒ¯ãƒ¼ã‚¯ãƒ•ローを使用ã—ã¦ã„ã‚‹å ´åˆã€ã“ã®Androidリソースを直接追加ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。ã“ã®è¨­å®šã‚’é©ç”¨ã™ã‚‹ã«ã¯ã€å¯¾å¿œã™ã‚‹Androidリソースを追加ã™ã‚‹ã‚«ã‚¹ã‚¿ãƒ Expo設定プラグインを作æˆã—ã€app.config.jsã«ç™»éŒ²ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ExpoãŒãƒã‚¤ãƒ†ã‚£ãƒ–Androidプロジェクトを管ç†ã—ã¦ã„ã‚‹ãŸã‚ã€ã“ã®æ‰‹é †ãŒå¿…è¦ã§ã™ã€‚

Androidã§AdaptyOnboardingViewを使用ã™ã‚‹ã¨ã€ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒãƒ¼ã‚„ナビゲーションãƒãƒ¼ãªã©ã®ã‚·ã‚¹ãƒ†ãƒ UIè¦ç´ ãŒãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®ä¸Šã«è¡¨ç¤ºã•れる場åˆãŒã‚りã¾ã™ã€‚ã“れを防ãã«ã¯ã€æ¬¡ã®boolean リソースをアプリã«è¿½åŠ ã—ã¦ãã ã•ã„:

  1. android/app/src/main/res/values ã«ç§»å‹•ã—ã¾ã™ã€‚bools.xml ファイルãŒãªã„å ´åˆã¯ä½œæˆã—ã¦ãã ã•ã„。

  2. 次ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’追加ã—ã¾ã™ï¼š

<resources>
    <bool name="adapty_onboarding_enable_safe_area_paddings">false</bool>
</resources>

ã“ã®å¤‰æ›´ã¯ã‚¢ãƒ—リ内ã®ã™ã¹ã¦ã®ã‚ªãƒ³ãƒœãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã«ã‚°ãƒ­ãƒ¼ãƒãƒ«ã«é©ç”¨ã•れã¾ã™ã€‚

次ã®ã‚¹ãƒ†ãƒƒãƒ—

オンボーディングを表示ã—ãŸã‚‰ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚¤ãƒ³ã‚¿ãƒ©ã‚¯ã‚·ãƒ§ãƒ³ã¨ã‚¤ãƒ™ãƒ³ãƒˆã®å‡¦ç†ã«ã¤ã„ã¦ç¢ºèªã—ã¾ã—ょã†ã€‚オンボーディングイベントを処ç†ã—ã¦ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã«å¿œç­”ã—ãŸã‚Šã‚¢ãƒŠãƒªãƒ†ã‚£ã‚¯ã‚¹ã‚’追跡ã—ãŸã‚Šã™ã‚‹æ–¹æ³•ã‚’å­¦ã¹ã¾ã™ã€‚

ÿÿÿÿ