基于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
相关产品推荐
相关产品推荐

