Expo集成react-native-alarm-notification调用scheduleAlarm报null错误如何解决
报错解决方案:react-native-alarm-notification调用scheduleAlarm报null对象错误
你遇到的报错本质是
react-native-alarm-notification原生模块未成功链接到项目运行环境,你看到的错误抛在regenerator-runtime层只是因为async异步调用的错误栈向上传递,并非runtime本身存在问题,你之前尝试的补全参数、调整日期等操作都无法解决问题,因为故障根源和参数配置无关。
可选解决方案
方案1:继续使用react-native-alarm-notification
这个库是原生依赖库,不支持Expo Go默认开发环境,需要构建自定义Expo开发客户端才能正常运行:
- 第一步:执行命令生成原生工程目录:
npx expo prebuild - 第二步:补充原生权限配置
安卓端需要在android/app/src/main/AndroidManifest.xml中添加闹钟、通知相关权限:<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> - 第三步:修复代码中的参数错误:
small_icon不能传入相对路径,需要将图标放到安卓原生资源目录android/app/src/main/res/drawable下,参数值直接传文件名不带后缀,比如图标是ic_notification.png就填"ic_notification" - 第四步:不要使用Expo Go运行,执行命令编译运行自定义客户端:
- 安卓:
npx expo run:android - iOS:
npx expo run:ios
- 安卓:
方案2:更换为Expo官方原生支持的通知库(更推荐)
无需处理原生链接和配置,直接使用expo-notifications即可实现定时通知/闹钟调度能力,完全适配所有Expo版本:
- 安装命令:
npx expo install expo-notifications - 只需要在代码中申请通知权限后,调用
scheduleNotificationAsync方法即可实现定时通知,和你当前的需求完全匹配
内容的提问来源于stack exchange,提问作者RedRoach51
相关产品推荐
相关产品推荐

