如何知道我的应用何时聚焦或不聚焦——反应原生?

Posted

技术标签:

【中文标题】如何知道我的应用何时聚焦或不聚焦——反应原生?【英文标题】:How to know, when did my app focused or unfocused- react native? 【发布时间】:2019-10-29 09:18:54 【问题描述】:

我正在开发一个 react-native 应用程序。

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

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

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

React 生命周期方法,例如:

componentDidMountcomponentDidUpdate

不工作。

【问题讨论】:

【参考方案1】:

您需要的是应用的当前状态。然后你可以使用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>;
  

【讨论】:

【参考方案2】:

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

AppState 可以告诉你应用是在前台还是后台,并在状态发生变化时通知你。

active - 应用正在前台运行。

background - 应用在后台运行。

[iOS] 不活动 - 这是在前台和后台之间转换时以及在不活动期间(例如进入多任务视图或来电时)出现的状态。 p>

我用它来恢复和停止应用中的背景音乐。

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

【讨论】:

以上是关于如何知道我的应用何时聚焦或不聚焦——反应原生?的主要内容,如果未能解决你的问题,请参考以下文章

聚焦云原生,云原生数据库标准发布在即

聚焦云原生,微服务拆分设计规范指南权威解读

云原生技术服务商「时速云」获C1轮融资,聚焦云原生应用及数据平台

「应用管理与交付」为什么会成为云原生新的价值聚焦点?

「应用管理与交付」为什么会成为云原生新的价值聚焦点?

KubeMeet|聊聊新锐开源项目与云原生新的价值聚焦点