如何区分react-native中的两个appState:应用程序转到后台,或应用程序请求权限

问题描述 投票:0回答:1

我正在开发一个银行react-native应用程序,尝试实现一个功能,每次应用程序从后台/非活动状态进入活动状态时,用户都需要验证TOUCHID。

我所做的是检查AppState:

    if (OldappState.match(/inactive|background/) &&
      nextAppState === 'active'
    ) {
      checkLocalAuth()
    }

它工作正常,但我发现一个有趣的问题:当应用程序请求权限时,AppState将变为

inactive
,当用户授予权限时AppState变为
active
,这与上述操作的行为完全相同.

但是我在请求许可时不想请求TOUCHID,那么如何区分这两种情况呢?

android ios react-native mobile frontend
1个回答
0
投票

在 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 上,
    background
    状态表示 React Native Activity 位于后台,这可能不一定意味着整个应用程序都位于后台。

通过使用

react-native-applifecycle
,您可以跨两个平台无缝处理这些差异,确保仅当整个应用程序处于后台时才会调度状态
background

© www.soinside.com 2019 - 2024. All rights reserved.