You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OneSignal更新后Flutter出现三类错误求助

解决OneSignal更新后Flutter项目的三类API错误

错误1:类型‘OneSignal’未定义getter‘shared’

OneSignal Flutter SDK 4.x+版本移除了shared单例属性,所有原通过OneSignal.shared调用的方法,直接改为通过OneSignal类调用静态方法:

  • 旧代码:
OneSignal.shared.setAppId("YOUR_APP_ID");
  • 新代码:
OneSignal.initialize("YOUR_APP_ID");

替换项目中所有OneSignal.shared的调用,直接使用OneSignal类调用对应静态方法。

错误2:未定义类‘OSNotificationOpenedResult’

该类在新版本中被OSNotificationOpenedEvent替代,同时通知打开回调的方法名也有变更:

  • 旧代码:
OneSignal.shared.setNotificationOpenedHandler((OSNotificationOpenedResult result) {
  // 处理通知打开逻辑
});
  • 新代码:
OneSignal.setNotificationOpenedHandler((OSNotificationOpenedEvent event) {
  // 通过event.notification获取通知内容,event.action获取用户操作
});

全局替换代码中的OSNotificationOpenedResult为OSNotificationOpenedEvent。

错误3:未定义类‘OSNotificationReceivedEvent’

该类是新版本中前台通知处理的标准参数类型,若出现未定义提示,需检查两点:

  1. 确认已导入最新SDK包:
import 'package:onesignal_flutter/onesignal_flutter.dart';
  1. 替换旧版前台通知处理方法:
  • 旧代码:
OneSignal.shared.setNotificationReceivedHandler((OSNotification notification) {
  // 处理前台收到通知逻辑
});
  • 新代码:
OneSignal.setNotificationWillShowInForegroundHandler((OSNotificationReceivedEvent event) {
  // 通过event.notification获取通知内容,event.complete()控制是否显示通知
});

额外操作

  1. 检查pubspec.yaml中onesignal_flutter版本,确保使用最新稳定版,例如:
onesignal_flutter: ^5.0.0
  1. 执行flutter pub get更新依赖,再运行flutter clean清理缓存后重启项目。

内容的提问来源于stack exchange,提问作者Serge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 20:48:23