react-native
Notificación de inserción
Buscar..
Introducción
Podemos agregar notificaciones push para reaccionar a la aplicación nativa usando el módulo npm react-native-push-notification de zo0r . Esto permite un desarrollo multiplataforma.
Instalación
npm install --save reaccion-native-push-notification
enlace nativo reactivo
Observaciones
Consulte GitHub Repo de este módulo para más detalles.
Configuración simple de notificaciones push
Crear nuevo proyecto PushNotification
react-native init PushNotification
Poner siguiente en index.android.js
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
Button
} from 'react-native';
import PushNotification from 'react-native-push-notification';
export default class App extends Component {
constructor(props){
super(props);
this.NewNotification = this.NewNotification.bind(this);
}
componentDidMount(){
PushNotification.configure({
// (required) Called when a remote or local notification is opened or received
onNotification: function(notification) {
console.log( 'NOTIFICATION:', notification );
},
// Should the initial notification be popped automatically
// default: true
popInitialNotification: true,
/**
* (optional) default: true
* - Specified if permissions (ios) and token (android and ios) will requested or not,
* - if not, you must call PushNotificationsHandler.requestPermissions() later
*/
requestPermissions: true,
});
}
NewNotification(){
let date = new Date(Date.now() + (this.state.seconds * 1000));
//Fix for IOS
if(Platform.OS == "ios"){
date = date.toISOString();
}
PushNotification.localNotificationSchedule({
message: "My Notification Message", // (required)
date: date,// (optional) for setting delay
largeIcon:""// set this blank for removing large icon
//smallIcon: "ic_notification", // (optional) default: "ic_notification" with fallback for "ic_launcher"
});
}
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Push Notification
</Text>
<View style={styles.Button} >
<Button
onPress={()=>{this.NewNotification()}}
title="Show Notification"
style={styles.Button}
color="#841584"
accessibilityLabel="Show Notification"
/>
</View>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
Button:{
margin: 10,
}
});
AppRegistry.registerComponent('PushNotification', () => App);
Navegando a la escena desde Notificación
Este es un ejemplo simple para demostrar que, ¿cómo podemos saltar / abrir una pantalla específica en función de la notificación? Por ejemplo, cuando un usuario hace clic en la notificación, la aplicación debería abrirse y pasar directamente a la página de notificaciones en lugar de a la página de inicio.
'use strict';
import React, { Component } from 'react';
import {
StyleSheet,
Text,
View,
Navigator,
TouchableOpacity,
AsyncStorage,
BackAndroid,
Platform,
} from 'react-native';
import PushNotification from 'react-native-push-notification';
let initialRoute = { id: 'loginview' }
export default class MainClass extends Component
{
constructor(props)
{
super(props);
this.handleNotification = this.handleNotification.bind(this);
}
handleNotification(notification)
{
console.log('handleNotification');
var notificationId = ''
//your logic to get relevant information from the notification
//here you navigate to a scene in your app based on the notification info
this.navigator.push({ id: Constants.ITEM_VIEW_ID, item: item });
}
componentDidMount()
{
var that = this;
PushNotification.configure({
// (optional) Called when Token is generated (iOS and Android)
onRegister: function(token) {
console.log( 'TOKEN:', token );
},
// (required) Called when a remote or local notification is opened or received
onNotification(notification) {
console.log('onNotification')
console.log( notification );
that.handleNotification(notification);
},
// ANDROID ONLY: (optional) GCM Sender ID.
senderID: "Vizido",
// IOS ONLY (optional): default: all - Permissions to register.
permissions: {
alert: true,
badge: true,
sound: true
},
// Should the initial notification be popped automatically
// default: true
popInitialNotification: true,
/**
* (optional) default: true
* - Specified if permissions (ios) and token (android and ios) will requested or not,
* - if not, you must call PushNotificationsHandler.requestPermissions() later
*/
requestPermissions: true,
});
}
render()
{
return (
<Navigator
ref={(nav) => this.navigator = nav }
initialRoute={initialRoute}
renderScene={this.renderScene.bind(this)}
configureScene={(route) =>
{
if (route.sceneConfig)
{
return route.sceneConfig;
}
return Navigator.SceneConfigs.FadeAndroid;
}
}
/>
);
}
renderScene(route, navigator)
{
switch (route.id)
{
// do your routing here
case 'mainview':
return ( <MainView navigator={navigator} /> );
default:
return ( <MainView navigator={navigator} /> );
}
}
}
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow