使用expo-notifications调用scheduleNotificationAsync报TypeError非函数错误如何解决
报错根因
出现TypeError: Notifications.scheduleNotificationAsync is not a function,本质是两处配置错误:
- 导入路径错误:原代码
import * as Notifications from 'expo'是Expo旧版本写法,引入的是已被废弃的核心包内置通知API,该API中不存在scheduleNotificationAsync方法 - 方法参数缺失:
scheduleNotificationAsync需要传入通知内容、触发规则两类必填配置,仅传入单块内容配置也会导致调用异常
修复操作步骤
- 安装独立通知依赖:在项目根目录执行
npx expo install expo-notifications,新版Expo已将通知能力从核心包拆分为独立模块,无法通过核心包直接调用相关方法 - 修正导入语句:将原有从
expo包的导入,替换为从独立通知模块导入的写法:// 错误导入写法 // import * as Notifications from 'expo'; // 正确导入写法 import * as Notifications from 'expo-notifications'; - 补全方法调用的必填参数:完整可运行的示例代码如下,其中
trigger为通知触发规则,可根据业务需求修改为定时、固定时间点等不同触发逻辑:import * as Notifications from 'expo-notifications'; // 配置前台通知展示规则,Android端需依赖该配置初始化通知渠道 Notifications.setNotificationHandler({ handleNotification: async () => ({ shouldShowAlert: true, shouldPlaySound: true, shouldSetBadge: false, }), }); const enableNotifications = async () => { await Notifications.scheduleNotificationAsync({ content: { title: 'Notification', body: 'This is a notification' }, // 示例为1秒后触发通知 trigger: { seconds: 1 } }); }
内容的提问来源于stack exchange,提问作者Shreyashi
相关产品推荐
相关产品推荐

