我正在开发一个银行react-native应用程序,尝试实现一个功能,每次应用程序从后台/非活动状态进入活动状态时,用户都需要验证TOUCHID。
我所做的是检查AppState:
if (OldappState.match(/inactive|background/) &&
nextAppState === 'active'
) {
checkLocalAuth()
}
它工作正常,但我发现一个有趣的问题:当应用程序请求权限时,AppState将变为
inactive
,当用户授予权限时AppState变为active
,这与上述操作的行为完全相同.
但是我在请求许可时不想请求TOUCHID,那么如何区分这两种情况呢?
在 Android 上,
background
状态意味着 React Native Activity 位于后台,而不需要整个应用程序。
为了解决这个问题,我创建了一个为 React Native 实现 Android Lifecycle API 的包:https://github.com/douglasjunior/react-native-applifecycle
为什么要使用这个?
React Native 提供的原始 AppState API 在 Android 和 iOS 之间的行为不同,特别是在后台状态方面:
- 在 iOS 上,
状态表示整个应用程序处于后台。background
- 在 Android 上,
状态表示 React Native Activity 位于后台,这可能不一定意味着整个应用程序都位于后台。background
通过使用
,您可以跨两个平台无缝处理这些差异,确保仅当整个应用程序处于后台时才会调度状态react-native-applifecycle
。background