Реагирует ли 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 ответ
Как упомянул @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