Реагирует ли native на наличие жизненного цикла функции, когда приложение не используется или работает в фоновом режиме? - PullRequest
0 голосов
/ 30 мая 2018

Реагирует ли в native native жизненный цикл функции, когда приложение не используется или находится в фоновом режиме?

Мне нужен жизненный цикл функции в Reaction-native работает, когда пользователь не использует приложение или приложение в фоновом режиме.,Я хочу проверить базу данных на получение компонента уведомленийDidMount работает, но пользователь должен открыть приложение и закрыть его снова

Мне нужна функция или жизненный цикл всегда работает

Это мой код уведомления:

import React, { Component } from 'react';
import { View, NetInfo, Image, AppState, DeviceEventEmitter } from 'react-native';
import { Container, Text } from 'native-base';
import { RootNavigator } from './src/root';
import { Provider } from 'react-redux';
import { createStore } from 'redux';
import resducers from './src/reducers/index';
import PushController from'./PushController';
import PushNotification from 'react-native-push-notification';
import PushNotificationAndroid from 'react-native-push-notification';

const store = createStore(resducers);

export default class App extends Component<Props> {
  constructor(Props){
    super(Props);
    this.state={
      connection:null,
    }
    this.handleAppStateChange = this.handleAppStateChange.bind(this);
    this.sendNotification = this.sendNotification.bind(this);
  }

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

  componentWillMount(){
    NetInfo.isConnected.addEventListener("connectionChange",this.handleConnectionChange);
    NetInfo.isConnected.fetch().done((isConnected)=>this.setState({connection:isConnected}));

    PushNotificationAndroid.registerNotificationActions(['Accept','Reject','Yes','No']);
    DeviceEventEmitter.addListener('notificationActionReceived', function(e){
      console.log ('notificationActionReceived event received: ' + e);
      const info = JSON.parse(e.dataJSON);
      if (info.action == 'Yes') {
        alert('Accept');
      } else if (info.action == 'No') {
        alert('Reject')
      }
      // Add all the required actions handlers
    });
  }

  componentWillUnMount(){
    NetInfo.isConnected.removeEventListener("connectionChange",this.handleConnectionChange);
    AppState.removeEventListener('change',this.handleAppStateChange);
  }

  handleConnectionChange=(isConnected)=>{
    this.setState({connection:isConnected});
  }

  handleAppStateChange(appState){
    if(appState==='background'){
      PushNotification.localNotificationSchedule({
        message:'Scheduled notification delay message',
        date:new Date(Date.now()+(2000))
      })
    }
  }
  sendNotification(){
    PushNotification.localNotification({
      message:'You Pushed the notification button',
      title:'My Notification Title',
      ongoing:true,
      vibrate:true,
      playSound:true,
      actions:'["Yes","No"]',
      color:'red'
    })
  }

  handeView(){
    if(this.state.connection!==null && this.state.connection){
      return <RootNavigator />
    }else {
      return <View style={{flex:1, alignItems:"center", justifyContent:"center"}}>
         <Image source={require("./images/connection.gif")} style={{height: 150, width: 150, resizeMode : "stretch"}}/>
         <Text style={{ fontFamily:"IRANSans", fontSize:18, textAlign:"center", color:"#b0b5bb" }}>لطفا اتصال اینترنت خود را بررسی کنید ...</Text>
      </View>
    }
  }

  render() {
    return (
      <Provider store={store}>
         <Container>
             {this.handeView()}
             {this.sendNotification()}
         </Container>
      </Provider>
    );
  }
}

1 Ответ

0 голосов
/ 21 сентября 2018

Как упомянул @dentemm, это необходимо для запуска в собственном коде, поэтому вы можете попробовать использовать этот модуль https://github.com/jamesisaac/react-native-background-task

Примечание: Для уведомлений обычно мы используем внешнюю службу для отправки уведомленийпользователю что-то вроде Firebase, Amazone SNS или Google Cloud Messages уведомление дойдет до пользователя, даже если ваше приложение полностью закрыто, потому что ОС обработает уведомление и откроет ваше приложение и запустит для вас функцию, когда пользователь щелкнет по нему,для более подробной информации вы можете проверить этот учебник https://medium.com/differential/how-to-setup-push-notifications-in-react-native-ios-android-30ea0131355e

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...