怎么知道,我的应用什么时候专注于或不关注本机?

时间:2019-10-29 09:18:54

标签: ios react-native

我正在开发一个本机应用程序。

在其中一个屏幕中,有一个按钮,单击该按钮后,会向用户发送电子邮件并打开默认的电子邮件应用程序。

现在,电子邮件中包含一个链接,单击该链接,用户将返回我的应用程序。

我怎么知道用户已经从电子邮件应用程序返回到我的应用程序?

反应生命周期方法,例如:

componentDidMountcomponentDidUpdate

不起作用。

2 个答案:

答案 0 :(得分:0)

您需要的是应用程序的当前状态。然后,您可以使用AppState来解决它。

AppState可以告诉您应用是在前台还是在后台,并在状态更改时通知您。

AppState通常用于确定处理推送通知时的意图和适当行为。

示例

import React, {Component} from 'react';
import {AppState, Text} from 'react-native';

class AppStateExample extends Component {
  state = {
    appState: AppState.currentState,
  };

  componentDidMount() {
    AppState.addEventListener('change', this._handleAppStateChange);
  }

  componentWillUnmount() {
    AppState.removeEventListener('change', this._handleAppStateChange);
  }

  _handleAppStateChange = (nextAppState) => {
    if (
      this.state.appState.match(/inactive|background/) &&
      nextAppState === 'active'
    ) {
      console.log('App has come to the foreground!');
    }
    this.setState({appState: nextAppState});
  };

  render() {
    return <Text>Current state is: {this.state.appState}</Text>;
  }
}

答案 1 :(得分:0)

您可以尝试使用AppState API:https://facebook.github.io/react-native/docs/appstate

  

AppState可以告诉您该应用是在前台还是在后台,并在状态更改时通知您。

     

活动-该应用正在前台运行。

     

后台-该应用在后台运行。

     

[iOS]无效-这是在前台和后台之间进行转换时以及在不活动期间(例如,进入多任务处理视图或来电时)发生的状态。

我已使用它在应用程序中恢复和停止背景音乐。

这是苹果官方文档的链接:https://developer.apple.com/documentation/uikit/app_and_environment/managing_your_app_s_life_cycle