Настройка бортовых экранов в React Native
Онбординговые экраны — очень эффективный способ узнать, как использовать приложение, факты о приложении, а некоторые функции приложения можно наглядно продемонстрировать новым пользователям. Это возможно, поскольку это первый экран, с которым пользователь взаимодействует сразу после установки и открытия приложения.
Ожидается, что после первоначального запуска приложения экраны регистрации не появятся. В этом уроке я покажу вам, как настроить входящие экраны для приложений Android и iOS в React Native.
Полный исходный код этого руководства доступен на Github. Чтобы следовать этому руководству, необходимы базовые знания React Native, и на вашем компьютере должен быть установлен React Native. Также необходимо настроить симулятор Android и iOS для тестирования приложения.
Клонировать простое приложение
Вы должны отправиться на Github и клонировать демонстрационный проект. Это приложение я буду использовать для этого урока. Я настроил React Navigation для навигации по приложению. Для получения дополнительной информации и того, как начать работу с React Navigation, нажмите здесь. Вы также можете увидеть, как использовать React Navigation в своих проектах, нажав здесь.
После того, как вы клонировали проект, вы должны открыть его в своем редакторе кода, а в терминале вы должны выполнить приведенные ниже команды, которые установят модули узла для проекта и настроят приложение для iOS.
установка нпм
#Настройка iOS
cd ios && pod install
#Вернитесь в основную папку
cd ..
После завершения этого процесса вы должны создать приложение на своих эмуляторах Android и iOS, используя приведенный ниже код.
#Сборка на Android
npx react-native run-android
# Сборка на iOS
npx react-native run-ios
Ваше приложение должно отображаться следующим образом:
Настройка бортовых экранов
Теперь я перейду к установке библиотеки, которую буду использовать для демонстрации реализации экранов адаптации в вашем проекте React Native.
Конкретная библиотека, которую я буду использовать, — это React Native Onboarding Swiper. Эта библиотека React Native довольно надежна и настраиваема. Чтобы двигаться вперед, вы должны установить библиотеку, используя команду ниже.
npm i react-native-onboarding-swiper
cd ios && pod install
После установки библиотеки важно запустить pod install
для загрузки необходимых файлов для правильной работы iOS.
Как только вы установите библиотеку, вы должны создать свои приложения для Android и iOS, используя вышеупомянутую команду. Это также очень важный шаг, который поможет вам избежать ошибок, возникающих из-за того, что ваши приложения не синхронизированы с только что установленной библиотекой.
Когда ваша сборка будет завершена, откройте уже созданную папку экрана и в этой папке откройте OnboardingScreen.js. Здесь будут созданы Onboarding Swipes.
Чтобы создать Onboarding Swipes, у компонента Onboarding должны быть некоторые обязательные свойства. Компонент «страницы» — это массив, который содержит другие необходимые реквизиты, такие как backgroundColor, изображение, заголовок и подзаголовок.
Вы должны создать больше объектов в массиве pages
, чтобы иметь несколько встроенных свайпов.
Создание ознакомительных свайпов
Первое, что нужно сделать, это создать папку в корневом каталоге проекта, назовите ее assets
, так как именно там будут расположены изображения, которые будут добавлены на начальный экран, а затем добавьте несколько изображений в папку. Затем импортируйте React Native Onboarding Swiper в свой проект, используя приведенный ниже код.
импортировать Onboarding из «React-Native-Onboarding-Swiper»;
Это должно быть добавлено чуть ниже импорта в верхней части страницы. В функции OnboardingScreen удалите представление и верните приведенный ниже код подключения.
‹Onboarding
pages={[
{
backgroundColor: '#a6e4d0',
image: ‹Image source={require('../assets/list.png') } /›,
title: 'Добро пожаловать',
subtitle: 'Добро пожаловать на первый слайд Onboarding Swiper.',
},
]}
/ ›
У вас может не отображаться то же изображение, что и у меня, но ваши приложения должны отображаться так на Android и iOS:
Чтобы добавить больше экранов, вы должны создать больше объектов в массиве. Пример того, что я сделал, таков:
pages={[
{
backgroundColor: '#a6e4d0',
image: ‹Image source={require('../assets/list.png')} /›,
title: 'Добро пожаловать',
subtitle: 'Добро пожаловать на первый слайд Onboarding Swiper.',
},
{
backgroundColor: '#fdeb93',< br /> image: ‹Image source={require('../assets/megaphone.png')} /›,
title: 'Исследуйте',
subtitle: 'Это второй слайд Onboarding Swiper.',
},
{
backgroundColor: '#e9bcbe',
image: ‹Image source={require('../assets/like.png ')} /›,
title: 'Все готово',
subtitle: 'Это третий слайд Onboarding Swiper.',
},
После того, как вы добавите это, ваше приложение должно иметь возможность пролистывать и отображаться следующим образом:
Если вы нажмете кнопки «Пропустить» и «Готово», вы обнаружите, что они не будут выполнять никаких действий, и чтобы это исправить, вам нужно захватить реквизиты onSkip
и onDone
, которые вы будете использовать для перехода пользователя на первую страницу, если он нажимаются. Первая страница в этом демонстрационном приложении — домашняя; следовательно, я буду переходить на домашнюю страницу. Код должен быть добавлен в компонент адаптации.
‹Onboarding
//Для обработки перехода на главную страницу при нажатии кнопки «Пропустить»
onSkip={() =› navigation.replace(«Home»)}
//Для обработки перехода на главную страницу после нажатия кнопки "Готово"
onDone={() =› navigation.replace("Home")}
pages={[
…
]}
/›
Как только это будет добавлено, вы должны попробовать нажать «Пропустить и готово», что приведет вас на домашнюю страницу.
Вы можете дополнительно настроить эти свайпы, используя реквизиты, указанные здесь. Сейчас я сделаю небольшую настройку, например, использую текст вместо значка для кнопки «Готово». Затем я изменю способ отображения индикаторов смахивания.
Начиная с Готово, вы должны включить TouchableOpacity
в качестве импорта из React Native; затем создайте функцию Done, которая будет назначена реквизиту DoneButtonComponent
в компоненте Onboarding. См. код ниже:
const Done = ({…props}) =› (
‹TouchableOpacity
{…props}
›
‹Стиль текста={{fontSize:16, marginHorizontal:20}} ›Готово‹/Текст›
‹/TouchableOpacity›
)
Теперь внутри компонента Onboarding включите приведенный ниже код, чтобы назначить только что созданную функцию Done для файла DoneButtonComponent
. Теперь кнопка «Готово» будет отображаться в виде текста, а не значка.
‹Подключение
…
DoneButtonComponent={Done}
pages=[{
…
]}
/›
Теперь кнопка «Готово» будет отображаться в виде текста, а не значка. Ваши приложения должны отображаться следующим образом:
Следующее, что я настрою в этом уроке, — это индикатор экрана загрузки. Для этого я создам еще одну функцию. Эта функция Dot преобразует квадратные индикаторы в прямоугольные индикаторы и делает выбранный слайд синим, а другие стороны черными.
const Dots = ({selected}) =› {
let backgroundColor;
backgroundColor = selected ? 'blue' : 'black'
return (
‹View
style={{
width:24,
height:6,
marginHorizontal:3 ,
backgroundColor
}}
/›
)
}
Этот код должен отображать ваше приложение следующим образом:
Повтор сеанса с открытым исходным кодом
OpenReplay – это пакет для воспроизведения сеансов с открытым исходным кодом, который позволяет вам видеть, что пользователи делают в вашем веб-приложении, помогая вам быстрее устранять неполадки. OpenReplay размещается на собственном сервере для полного контроля над вашими данными.
Начните получать удовольствие от отладки — начните использовать OpenReplay бесплатно.
Создание пользовательского потока
Экран адаптации, который вы только что настроили в соответствии с руководством, всегда будет отображаться первым, как только ваше приложение будет открыто, и это не то, как должен работать экран регистрации.
При создании пользовательского потока вы хотите настроить вводный экран так, чтобы он появлялся только при первой установке вашего приложения, и это то, что я покажу вам сейчас.
Как это будет работать, так это то, что когда пользователь устанавливает или открывает ваше приложение в первый раз, приложение показывает пользователю экран адаптации, и как только пользователь взаимодействует с экранами адаптации, приложение сохраняет строковые данные на устройство. Приложение всегда будет проверять этот код; если код существует, вводный экран отображаться не будет; следовательно, пользователь попадет прямо на домашнюю страницу. Если приложение открывается в первый раз, кода не будет; поэтому будет отображаться экран загрузки.
Чтобы приложение сохраняло строковые данные из приложения, я буду использовать AsyncStorage
. Этот пакет помогает хранить файлы и делает их доступными в автономном режиме. Узнать больше о AsyncStorage
можно здесь.
Вам следует установить React Native AsyncStorage и пересобрать приложение для Android и iOS. Код для этого приведен ниже:
npm i @react-native-async-storage/async-storage
cd ios && pod install
После установки пересоберите приложение для Android и iOS с помощью команды, указанной ранее в этой статье.
Как только это будет сделано, откройте файл app.js. В app.js вы должны импортировать AsyncStorage вверху страницы с кодом ниже.
импортировать AsyncStorage из @react-native-async-storage/async-storage;
Я создам переменную состояния для первого запуска приложения и функцию для обновления первого запуска с помощью хука React useState. После этого с помощью React useEffect Hook я создам асинхронную функцию, которая будет проверять строковый элемент appLaunched в AsyncStorage при каждом открытии приложения. Если строковый элемент имеет значение null, приложение открывается в первый раз; функция setFirstLaunch обновит firstLaunch до true, и отобразится экран загрузки.
С другой стороны, если строковый элемент appLaunched
найден в AsyncStorage, то функция setFirstLaunch обновит состояние firstLaunch до false, и экран загрузки не будет отображаться; вместо этого пользователь будет направлен прямо на домашнюю страницу. Код ниже.
const App = () =› {
const [firstLaunch, setFirstLaunch] = React.useState(null);
React.useEffect(() =› {
асинхронная функция setData() {< br /> const appData = await AsyncStorage.getItem("appLaunched");
if (appData == null) {
setFirstLaunch(true);
AsyncStorage.setItem("appLaunched", " false”);
} else {
setFirstLaunch(false);
}
}
setData();
}, []);
возврат…
};
Обратите внимание, что мне пришлось создать функцию внутри блока useEffect
, потому что процесс должен работать асинхронно, следовательно, нужна асинхронная функция. Однако асинхронная функция вызывается непосредственно внутри блока useEffect, чтобы выполнить указанное действие.
Последний процесс, который вы должны сделать, — настроить навигацию приложения для отображения экрана регистрации, если состояние firstLaunch истинно, а если состояние firstLaunch ложно, оно должно направить пользователя на домашнюю страницу. Код ниже.
return (
firstLaunch != null && (
‹NavigationContainer›
‹Stack.Navigator›
{firstLaunch && (
‹Stack.Screen
options= {{ headerShown: false }}
name="Onboarding"
component={OnboardingScreen}
/›
)}
‹Stack.Screen name="Home" component={HomeScreen} /›
‹/Stack.Navigator›
‹/NavigationContainer›
)
);
После обновления блока возврата до указанного выше, вы должны протестировать приложение. Ваше приложение должно отображать экран подключения, и если вы нажмете кнопки «Пропустить» или «Готово», вы не увидите экран подключения при повторном запуске приложения на Android и iOS.
Вам следует очистить данные приложения в эмуляторе Android и удалить приложение из симулятора iOS, а затем перестроить приложение с помощью npx react-native run-ios и npx react-native run-android. Вы должны увидеть начальные экраны один раз; после этого он больше не должен появляться.
Заключение
Экраны адаптации, которые являются очень эффективным и интересным способом информирования новых пользователей о ключевых способах использования вашего приложения, не должны быть упущены в процессе разработки. Я смог проиллюстрировать, насколько это возможно и просто реализовать в вашем приложении React Native, и я надеюсь, что то, чем я здесь поделился, поможет вам. Пожалуйста, свяжитесь с нами, если вы столкнетесь с какими-либо проблемами; Я буду очень рад помочь.
СОВЕТ ОТ РЕДАКТОРА. Возможно, вы захотите дополнить адаптацию голосовым текстом, как показано в нашей статье Общайтесь со своим приложением с помощью искусственного интеллекта Алана.
Первоначально опубликовано на https://blog.openreplay.com 28 августа 2022 г.