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摘要功能,敬请期待!
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00