Folo推送通知:Expo Notifications集成实践
你是否曾因错过重要信息而困扰?在信息爆炸的时代,及时获取关键内容变得尤为重要。Folo作为下一代信息浏览器,通过集成Expo Notifications实现了高效的推送通知功能,让你不再错过任何重要更新。本文将详细介绍Folo中Expo Notifications的集成实践,帮助你了解如何在移动应用中实现可靠的推送通知系统。
项目依赖与配置
Folo移动应用基于Expo构建,其通知功能主要依赖expo-notifications库。在项目的package.json中可以看到相关依赖配置:
{
"dependencies": {
"expo-notifications": "0.31.3",
"@react-native-firebase/messaging": "22.2.1",
"expo-device": "7.1.4",
"expo-application": "6.1.4"
}
}
这些依赖库分别提供了通知管理、Firebase云消息传递、设备信息获取等核心功能,为Folo的推送通知系统提供了坚实的基础。
通知功能模块结构
Folo的通知功能分散在多个模块中,主要包括通知图标、设置界面和视图组件等。
通知图标
通知功能使用了专门的图标组件,位于notification_cute_re.tsx文件中:
export const NotificationCuteReIcon = ({
width = 24,
height = 24,
color = "#10161F",
}: NotificationCuteReIconProps) => {
return (
<Svg width={width} height={height} fill="none" viewBox="0 0 24 24">
<Path
d="M11.204 2.043A7.587 7.587 0 0 0 5.993 5.02a7.874 7.874 0 0 0-1.239 2.554c-.19.731-.201.862-.235 2.766-.042 2.377-.053 2.432-.738 3.86-.433.9-.485 1.043-.521 1.422-.037.388.031.738.219 1.131.273.567.743.965 1.382 1.169.111.035.628.058 1.712.074l1.553.024.094.268a4.044 4.044 0 0 0 1.94 2.248c.451.231.77.335 1.235.406.484.072.726.072 1.21 0a4.015 4.015 0 0 0 3.175-2.654l.094-.268 1.553-.024c1.084-.016 1.601-.039 1.712-.074.639-.204 1.109-.602 1.382-1.169.188-.393.256-.743.219-1.131-.036-.376-.088-.517-.522-1.422-.682-1.423-.7-1.516-.739-3.88-.032-1.886-.043-2.013-.233-2.746-.228-.88-.709-1.854-1.3-2.633-.318-.42-1.004-1.104-1.406-1.402-1.008-.747-2.088-1.219-3.26-1.423-.536-.093-1.574-.13-2.076-.073m1.576 2.016c1.99.289 3.716 1.689 4.379 3.551.294.828.323 1.076.359 3.11.034 1.894.048 2.041.267 2.808.136.477.326.936.677 1.636.164.327.298.621.298.653 0 .031-.028.086-.063.12-.056.057-.719.063-6.697.063s-6.641-.006-6.697-.063c-.035-.034-.063-.089-.063-.12 0-.032.134-.326.298-.653.351-.7.541-1.159.677-1.636.219-.767.233-.914.267-2.808.017-.99.051-1.895.077-2.04.219-1.253.688-2.169 1.559-3.043.731-.734 1.463-1.166 2.442-1.442a5.559 5.559 0 0 1 2.22-.136m.94 13.982c0 .022-.13.173-.29.335-.309.313-.566.467-.938.564a2.073 2.073 0 0 1-1.423-.165c-.2-.101-.789-.649-.789-.734 0-.027.578-.041 1.72-.041s1.72.014 1.72.041"
fill={color}
fillRule="evenodd"
/>
</Svg>
)
}
apps/mobile/src/icons/notification_cute_re.tsx
这个SVG图标用于在应用中展示通知相关的UI元素,其设计风格与Folo的整体UI保持一致。
通知视图定义
在views.tsx文件中,Folo定义了通知视图的相关配置:
[FeedViewType.Notifications]: {
icon: AnnouncementCuteFiIcon,
}
apps/mobile/src/constants/views.tsx
这段代码将通知视图与对应的图标关联起来,确保在应用的视图切换中能够正确显示通知相关的界面元素。
通知设置界面
Folo提供了专门的通知设置界面,位于Notifications.tsx文件中:
export const NotificationsScreen = () => {
return (
<View className="flex-1 items-center justify-center">
<Text>Notifications Settings</Text>
</View>
)
}
apps/mobile/src/modules/settings/routes/Notifications.tsx
虽然目前这个界面还比较简单,但它为用户提供了一个集中管理通知设置的入口。
通知功能实现
Folo的通知功能不仅包括UI展示,还涉及到通知的触发和处理。在summary.tsx文件中,我们可以看到通知相关的交互逻辑:
Haptics.notificationAsync(Haptics.NotificationFeedbackType.Success)
apps/mobile/src/modules/ai/summary.tsx
这段代码在AI总结功能完成时触发触觉反馈,虽然不是传统意义上的推送通知,但它展示了Folo如何使用系统通知机制来增强用户体验。
在EntryNormalItem.tsx中,我们可以看到通知视图的渲染逻辑:
view === FeedViewType.Notifications ? "p-2" : "p-4",
view === FeedViewType.Notifications ? "top-[35]" : "top-[43]",
<FeedIcon fallback feed={feed} size={view === FeedViewType.Notifications ? 14 : 16} />
view === FeedViewType.Notifications ? "text-base" : "text-lg",
{view !== FeedViewType.Notifications && !!entry.description && (
{view !== FeedViewType.Notifications && <ThumbnailImage entryId={entryId} />}
apps/mobile/src/modules/entry-list/templates/EntryNormalItem.tsx
这些代码展示了Folo如何根据不同的视图类型(包括通知视图)来调整UI元素的样式和布局,确保通知内容以最佳方式呈现给用户。
总结与展望
Folo通过集成Expo Notifications和Firebase Messaging,构建了一个功能完善的推送通知系统。从依赖配置到UI实现,再到交互逻辑,Folo的通知功能体现了现代移动应用开发的最佳实践。
目前,通知设置界面还比较简单,未来可以考虑添加更多自定义选项,如通知类型过滤、通知声音设置等。此外,还可以进一步优化通知的展示方式,提供更丰富的交互体验。
希望本文能够帮助你了解Folo中推送通知功能的实现细节,如果你有任何问题或建议,欢迎通过社区渠道与我们交流。别忘了点赞、收藏本文,关注Folo项目获取更多更新!
下一期,我们将介绍Folo中的AI摘要功能,敬请期待!
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00