Estoy tratando de usar un paquete de notificación (react-native-alarm-notification) en mi proyecto React Native, pero tengo algunos problemas. Después de la instalación, intentar ejecutar scheduleAlarm() da como resultado el siguiente error:
[Rechazo de promesa no manejado: TypeError: null no es un objeto (evaluando 'RNAlarmNotification.scheduleAlarm')].
No estoy completamente seguro de cuál es el problema, ya que los parámetros 'requeridos' de ScheduleAlarm están llenos y no estoy seguro de qué objeto nulo arroja un error. Intentar completar todos los parámetros posibles en scheduleAlarm aún arroja un valor nulo, al igual que dar solo una fecha de alarma y asumir que se asignan valores predeterminados. Sin embargo, rastrear la ubicación del error muestra que el error proviene de los módulos regenerator-runtime y react-native que provienen de la compilación predeterminada del proyecto React, no del paquete de notificación.
¿Alguien tiene una solución al problema?
Función.js:
import { StatusBar } from 'expo-status-bar'; import React, {useState} from 'react'; import { StyleSheet, Text, View, TextInput, Button } from 'react-native'; import ReactNativeAN from 'react-native-alarm-notification'; export default function ShowTasks() { async function alarmTest(){ console.log("Alarm test start"); const fireDate = ReactNativeAN.parseDate(new Date(Date.now() + 10000)); const alarmNotifData = { title: "My Notification Title", message: "My Notification Message", channel: "my_channel_id", small_icon: "../icon.png", scheduleType:"once", data: { foo: "bar" }, fire_date:fireDate, }; const alarm = await ReactNativeAN.scheduleAlarm({...alarmNotifData}); console.log("Alarm test finish"); } return ( <View> <Button onPress={() => {alarmTest();}} title= 'Click here to test alarm.'> </Button> <StatusBar style="auto" /> </View> ); }
La reconstrucción de la aplicación resolvió mi problema:
npx react-native run-android
Para Android, el paquete se vinculará automáticamente en la compilación. pero si no es así, debe vincularlo manualmente.
Realice los siguientes cambios:
android/app/src/main/java//MainApplication.java
add import com.emekalites.react.alarm.notification.ANPackage; on the imports section add packages.add(new ANPackage()); in List<ReactPackage> getPackages();
Android/aplicación/build.gradle
add implementation project(':react-native-alarm-notification') in the dependencies block
android/configuraciones.gradle
agregar:
include ':react-native-alarm-notification' project(':react-native-alarm-notification').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-alarm-notification/android')
Consulte la documentación aquí