Реактивное нативное приложение переходит в фоновый режим при нажатии на push-уведомление - PullRequest
0 голосов
/ 05 января 2019

Приложение работает на переднем плане. Затем я получил push-уведомление. После того, как я нажал на это push-уведомление, статус моего приложения меняется на передний план на фон. Затем он возвращается на передний план.

Я использую панель инструментов OneSignal для отправки образца push-уведомления. Это происходит в приложении для Android.

componentDidMount() {
        // One signal notification settings
        OneSignal.configure();
        OneSignal.setLogLevel(5, 0); // adb logcat debug (5) logs
        OneSignal.init('xxxxxxxxxxxx');
        OneSignal.inFocusDisplaying(2);
        OneSignal.addEventListener('ids', this.onIds);
        OneSignal.getPermissionSubscriptionState((status) => {
            if(status.userId)
                // update userID using props
    });
    }

onIds = (device) => {
    const userId = device.userId;
    if(userId)
       // update userID using props

    OneSignal.removeEventListener('ids', this.onIds);
}

Я не мог узнать, как это случилось. Я хочу остановить изменение статуса этого приложения, когда я нажимаю на push-уведомление. Скажите, пожалуйста, кто-нибудь имеет представление об этой проблеме.

lib версии,

react-native-onesignal: 3.2.11
react-native: 0.57.4
react: 16.6.0-alpha.8af6728

1 Ответ

0 голосов
/ 05 января 2019

Я думаю, вы должны использовать "AppState", чтобы указать, когда показывать push-уведомления, а после нажатия push-уведомления, что должно быть "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>
    );
  }

}

для получения дополнительной информации это

...