Я пытаюсь «заблокировать» приложение после того, как пользователь закрыл его - запрашивая TouchID / FaceID или код при повторном открытии. Получилось нормально работать с чем-то вроде:
const onAppStateChange = (nextAppState: string) => {
if (nextAppState === 'background') {
Navigation.showOverlay({
component: {
name: 'overlayName',
},
});
}
};
AppState.addEventListener('change', onAppStateChange);
Единственная проблема, с которой я столкнулся, заключается в том, что моментальный снимок приложения (изображение, отображаемое в многозадачном представлении на iOS) не содержит наложения, поскольку он был создан до добавления наложения.
Найдены ссылки на [view snapshotViewAfterScreenUpdates:YES];
здесь: https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StrategiesforHandlingAppStateTransitions/StrategiesforHandlingAppStateTransitions.html#//apple_ref/doc/uid/TP40007072-CH8-SW27
Но обработчик событий iOS для UIApplicationDidEnterBackgroundNotification
также запускается, прежде чем я могу добавить оверлей в RN-land. Очень хотелось бы справиться с этим (добавив оверлей) на стороне JS.
Кроме того, в настоящее время я смотрю только на iOS, но было бы неплохо решение для Android.