为 Flutter 设置消息收件箱
Flutter 的 Message Inbox(“铃铛图标”应用收件箱)作为一个独立的 pushwoosh_inbox 包提供,请将其与基础的 pushwoosh_flutter 包一起安装。
前提条件
Anchor link to- 基础 Pushwoosh Flutter SDK 已集成并能发送推送。
将 pushwoosh_inbox 添加到您的 pubspec.yaml 文件中。请在 pub.dev 上查看当前版本:
dependencies: pushwoosh_inbox: '^2.3.24'显示收件箱
Anchor link toimport 'package:pushwoosh_inbox/pushwoosh_inbox.dart';
PushwooshInbox.presentInboxUI();这将打开一个原生屏幕(在 iOS 上是视图控制器,在 Android 上是 Activity),并采用 SDK 的默认外观。
自定义样式
Anchor link to向 presentInboxUI() 传递一个 PWInboxStyle 对象。每个字段都是可选的,如果未设置,则保留其默认值。图像字段是 Flutter 资产路径,必须在您的 pubspec.yaml 文件中声明:
| 字段 | 自定义内容 |
|---|---|
dateFormat | 日期格式,例如 "dd.MMMM.yyyy" |
defaultImage | 没有图片的消息旁的默认图标 |
unreadImage | 未读消息标记(仅限 iOS) |
listErrorImage | 列表加载失败时显示 |
listEmptyImage | 列表没有消息时显示 |
listErrorMessage | 错误文本(未本地化) |
listEmptyMessage | 空列表文本(未本地化) |
barTitle | 收件箱屏幕的标题 |
defaultTextColor | 默认文本颜色(仅限 iOS) |
accentColor | 强调色 |
backgroundColor | 背景颜色 |
highlightColor | 选择颜色 |
titleColor | 消息标题颜色 |
readTitleColor | 已读消息的标题颜色(仅限 Android) |
descriptionColor | 消息描述颜色 |
readDescriptionColor | 已读消息的描述颜色(仅限 Android) |
dateColor | 消息日期颜色 |
readDateColor | 已读消息的日期颜色(仅限 Android) |
dividerColor | 分隔线颜色 |
barBackgroundColor | 标题栏的背景颜色 |
barAccentColor | 标题栏的返回按钮颜色 |
barTextColor | 标题栏的文本颜色 |
imageTypeColor | 未读操作图标颜色,例如深层链接或 URL(仅限 Android) |
readImageTypeColor | 已读操作图标颜色(仅限 Android) |
PWInboxStyle style = PWInboxStyle();style.barTitle = "Messages";style.barBackgroundColor = "#3AD29F";style.accentColor = "#6750A4";style.listEmptyMessage = "No messages yet";style.defaultImage = "assets/images/logo.png";PushwooshInbox.presentInboxUI(style: style);以编程方式管理消息
Anchor link to加载消息列表、读取计数,并对单个消息执行操作,而无需打开内置屏幕。这对于自定义收件箱 UI 或未读标记非常有用:
try { List<InboxMessage> messages = await PushwooshInbox.loadMessages(); for (final message in messages) { print("${message.title}: ${message.message}"); }
int? unread = await PushwooshInbox.unreadMessagesCount(); int? total = await PushwooshInbox.messagesCount(); int? notActedOn = await PushwooshInbox.messagesWithNoActionPerformedCount();} catch (error) { print("Failed to load inbox data: $error");}
PushwooshInbox.readMessage(messageCode);PushwooshInbox.deleteMessage(messageCode);PushwooshInbox.performAction(messageCode); // runs the message's default action, e.g. opening a URLloadCachedMessages() 在 Android 上返回上一次本地缓存的列表,而无需进行网络调用。在 iOS 上,它目前的行为与 loadMessages() 相同,仍然会调用网络。