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

基于Flutter的iOS自定义分类推送通知实现问题

iOS自定义分类推送通知样式调整(基于flutter_local_notification)

我需要用flutter_local_notification包实现iOS自定义分类推送通知,目标样式如第一张参考图所示,但目前应用显示的样式与预期不符,需调整现有代码达到目标效果。

现有代码

final List<DarwinNotificationCategory> darwinNotificationCategories1 =
    <DarwinNotificationCategory>[
      DarwinNotificationCategory(
        darwinNotificationCategoryText,
        actions: <DarwinNotificationAction>[
          DarwinNotificationAction.text(
            'text_1',
            'Action 1',
            buttonTitle: 'Send',
            placeholder: 'Placeholder',
          ),
        ],
      ),
      DarwinNotificationCategory(
        darwinNotificationCategoryPlain,
        actions: <DarwinNotificationAction>[
          DarwinNotificationAction.plain('id_1', 'Action 1'),
          DarwinNotificationAction.plain(
            'id_2',
            'Action 2 (destructive)',
            options: <DarwinNotificationActionOption>{
              DarwinNotificationActionOption.destructive,
            },
          ),
          DarwinNotificationAction.plain(
            navigationActionId,
            'Action 3 (foreground)',
            options: <DarwinNotificationActionOption>{
              DarwinNotificationActionOption.foreground,
            },
          ),
          DarwinNotificationAction.plain(
            'id_4',
            'Action 4 (auth required)',
            options: <DarwinNotificationActionOption>{
              DarwinNotificationActionOption.authenticationRequired,
            },
          ),
        ],
        options: <DarwinNotificationCategoryOption>{
          DarwinNotificationCategoryOption.hiddenPreviewShowTitle,
        },
      )
    ];
final DarwinInitializationSettings initializationSettingsDarwin =
DarwinInitializationSettings(
  requestAlertPermission: true,
  requestBadgePermission: false,
  requestSoundPermission: false,
  onDidReceiveLocalNotification:
      (int id, String? title, String? body, String? payload) async {
    //   didReceiveLocalNotificationSubject.add(
    //     ReceivedNotification(
    //       id: id,
    //       title: title,
    //       body: body,
    //       payload: payload,
    //     ),
    //   );
  },
  notificationCategories: darwinNotificationCategories1,
);

var initializationSettings = InitializationSettings(
    android: initializationSettingsAndroid, iOS: initializationSettingsDarwin);

调整方案

  • 指定推送分类ID:发送通知时必须在DarwinNotificationDetails中设置categoryIdentifier,对应你定义的分类ID(如darwinNotificationCategoryPlain),否则系统不会应用自定义分类样式。示例代码:
    await flutterLocalNotificationsPlugin.show(
      0,
      "测试通知",
      "自定义分类通知内容",
      NotificationDetails(
        iOS: DarwinNotificationDetails(
          categoryIdentifier: darwinNotificationCategoryPlain, // 关联目标分类
        ),
      ),
    );
    
  • 调整分类布局选项:
    • 若目标样式需要折叠/展开的操作组,可修改DarwinNotificationCategory的options,例如添加DarwinNotificationCategoryOption.customDismissAction,或调整预览相关选项;
    • iOS通知操作按钮最多显示4个,超过会自动折叠到「更多」菜单,可根据目标样式调整操作按钮的数量和顺序;
  • 文本输入操作验证:如果目标样式包含内联输入框,确认DarwinNotificationAction.text的配置正确,且推送时关联了对应的darwinNotificationCategoryText分类ID;
  • 重启应用生效:iOS的通知分类注册需要应用重启才能生效,修改分类配置后需重启应用测试;
  • 检查系统权限:确保用户已开启应用的通知权限,且系统设置中允许通知预览、操作按钮等相关选项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:33:14