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

iOS模拟器运行Flutter应用报错:未设置iOS通知配置求助

解决方案

1. 修复「iOS settings must be set」错误

在main.dart中初始化FlutterLocalNotificationsPlugin时,必须传入iOS平台的初始化设置,否则会触发该异常。修改初始化代码如下:

import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter/material.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
      FlutterLocalNotificationsPlugin();

  // 配置iOS初始化参数
  const IOSInitializationSettings iosSettings = IOSInitializationSettings(
    requestAlertPermission: true,
    requestBadgePermission: true,
    requestSoundPermission: true,
  );

  // 合并多平台初始化设置
  const InitializationSettings initializationSettings = InitializationSettings(
    iOS: iosSettings,
    // 安卓平台设置按需添加
    // android: AndroidInitializationSettings('@mipmap/ic_launcher'),
  );

  // 初始化插件
  await flutterLocalNotificationsPlugin.initialize(initializationSettings);

  runApp(const YourApp());
}

2. 修复「no valid “aps-environment” entitlement string」警告

这个警告和推送权限配置有关,处理步骤如下:

  • 用Xcode打开项目的ios/Runner.xcworkspace
  • 选中左侧的Runner目标,切换到Signing & Capabilities标签页
  • 点击+ Capability,搜索并添加Push Notifications能力
  • 确保Signing Team已正确配置(使用有效的开发者账号)
  • 若仅在模拟器运行,该警告可忽略;若需彻底消除,可在Info.plist中添加:
    <key>APS Environment</key>
    <string>development</string>
    

3. 修正AppDelegate.swift的通知代理配置

当前代码中UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate存在类型转换问题,需修改AppDelegate使其遵循协议:

import UIKit
import Flutter
import flutter_downloader
import GoogleMaps
import flutter_local_notifications

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate, UNUserNotificationCenterDelegate { // 添加协议遵循
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    FlutterLocalNotificationsPlugin.setPluginRegistrantCallback { (registry) in
      GeneratedPluginRegistrant.register(with: registry)
    }

    GeneratedPluginRegistrant.register(with: self)

    if #available(iOS 10.0, *) {
      UNUserNotificationCenter.current().delegate = self // 移除as?类型转换
    }
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

完成以上修改后,重新运行项目即可解决这两个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:38:37