😁

ReactNativeでアプリがBackgroundに移行した時にイベント発火

2020/12/13に公開

取得できるアプリの状態

アプリの状態には以下の種類があります。

①background: 起動しているが、ホーム画面の状態
②inactive: backgroundとforegoundの間の状態
③active: foregound状態で実際にアプリの画面が表示されている状態

アプリがBackgroundに移行した時に発火

React NativeのAppStateを使用して取得する

import React, {useState, useEffect} from 'react';
import {AppState} from 'react-native';

const AppStateExample = () => {

  // AppState.currentStateで現在の状態を取得できる
  const [appState, setAppState] = useState(AppState.currentState);
  
  // AppState.addEventListenerでAppStateが変更された時に発火する
  useEffect(() => {
    AppState.addEventListener('change', _handleAppStateChange);

    return () => {
      AppState.removeEventListener('change', _handleAppStateChange);
    };
   }, []);

 
  const _handleAppStateChange = (nextAppState) => {
    setAppState(nextAppState);
    
    // ここをactiveやinactiveに変えることでそれぞれの状態の時に発火できる
    if (nextAppState === 'background') {
      console.log('バックグラウンド時に実行')
    }
  }
}

Discussion