ITADN
Dimillian/IceCubesApp
Dimillian/IceCubesApp · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

IceCubesApp

Download on the App Store

Swift Version License: AGPL v3

IceCubesApp 是一款用于访问去中心化社交网络 Mastodon 的开源应用!它完全使用 SwiftUI 构建,使其快速、轻量且易于使用。

您可以连接到任何 Mastodon 实例,浏览您的时间线,与其他用户互动,并发布更新和媒体。

它是多平台的,适用于 iOS、macOS、iPadOS 和 visionOS。 它在 macOS 和 iPadOS 上拥有带侧边栏的专用 UI。

功能

时间线

  • 导航栏标题菜单可让您轻松切换主页、本地、联合和热门时间线。
  • 您还可以轻松访问您的列表、关注的标签和标签组。
  • 标签组是由多个标签组成的自定义时间线,这是 Ice Cubes 独有的功能。
  • 引用帖子!
  • 您还可以添加远程本地时间线。这是一个用于浏览其他实例公共时间线的实用功能。另一个 Ice Cubes 独有功能。
  • Ice Cubes 严重依赖 Mastodon 的流式事件来执行诸如在主页时间线中实时显示新帖子以及编辑和删除您的帖子等操作。
  • 时间线同步是半自动的;您的位置会被发送到 Mastodon 标记 API,从另一台运行 Ice Cubes 的设备,您可以恢复您的主页时间线位置。
  • 主页时间线使用第三方库 Bodega 进行缓存。一个轻量级 SQLite 封装器。当前位置保存在用户默认设置中,因此当您切换账户或启动应用时,您的缓存主页时间线和位置将被恢复。然后新帖子将被获取并显示,并带有未读计数器。
  • 标签组、远程时间线和草稿的 iCloud 同步。
  • 服务器端过滤器支持。
  • 创建并切换到您的列表。

Code -> Status & Timeline 包

编辑器 / 撰写器

  • 功能完整的帖子编辑器。
  • 您可以撰写最多 5 个帖子的串帖。
  • 最多上传 4 张图片。
  • 使用 OpenAI API 的 AI 辅助工具,用于文本纠错、标签生成等。
  • 使用 AI 生成图片描述!
  • 支持自定义表情符号。
  • 添加投票和内容警告。
  • 从草稿中保存/恢复。
  • 使用 Apple 语言检测功能,在发布前建议语言。

Code -> Status package -> StatusEditor component Code -> OpenAIClient

通知

  • 完全支持推送通知。
  • Ice Cubes 在 Mastodon 和 APNS 之间运行其代理,这对于 Mastodon 将推送通知路由到用户设备是必需的。
  • 推送通知永远不会且无法被代理读取。
  • 推送通知的内容/正文在设备上解码。参见 NotificationServiceSupport
  • 推送通知内容丰富,并使用 Apple INSendMessageIntent API 显示联系人图片。
  • 推送通知按活动类型分组,例如提及、收藏、转发等。
  • 应用内的通知也会进行分组/堆叠。
  • 您可以在应用内选择想要接收的推送通知类型。
  • 点击通知时,会路由到正确的帖子并切换到相应的账户。

Code -> 通知包和 NotificationService 扩展。

探索 / 搜索

  • 专为热门用户、标签、帖子和链接提供的专用探索/搜索标签页。
  • 可从顶部区域轻松访问所有这些类别。
  • 您可以搜索所有内容,或按用户、标签和帖子进行筛选。
  • 查看热门标签活动的图表。
  • 从每个类别查看更多内容以访问全屏视图。

Code -> Explore 套餐

直接消息

  • 用于直接/私信的专用标签页。
  • 类似聊天的界面
  • 您可以使用内联编辑器进行快速聊天,或使用完整编辑器。

Code -> 对话包

个人资料

  • 支持丰富的个人资料。
  • 完全访问并调整您的隐私设置。
  • 编辑您的个人资料,从个人简介到自定义字段。
  • 为任何个人资料添加仅您可见的自定义服务器端备注。
  • 将任何个人资料的简介翻译成您的语言。
  • 轻松访问以编辑您的服务器端时间线过滤器。
  • 轻松访问以在应用外分享您的个人资料。

Code -> 账户包

多账户

  • 支持无限数量的 Mastodon 账户。
  • 轻松浏览/发现实例并登录!
  • 在 iOS 上的任何屏幕均可切换账户。
  • 在 macOS/iPadOS 侧边栏中只需单击即可切换账户。
  • 全面支持服务器端和客户端账户设置。
  • 在设置中滑动即可删除账户。
  • 使用 Apple 的 WebAuthenticationSession 进行安全身份验证
  • 账户令牌安全地存储在钥匙串中。

Code -> 账户 & AppAcount 包

其他

  • 您可以通过应用内的小费和 Github 赞助来支持此项目。
  • 大量的自定义设置。
  • 您可以调整显示设置,例如字体、行距、状态操作按钮等...
  • 许多内置主题。
  • 创建您的主题。
  • 自定义您的滑动手势。
  • 自定义您的标签栏条目。
  • 支持声音和触觉反馈。

关于架构的说明

该项目被拆分为不同的 Swift Packages,以简化代码库的管理和维护。每个包专注于特定的应用方面,例如 UI、网络通信或数据模型。这种模块化方法便于协作,并确保代码组织有序且易于理解。

它是学习 SwiftUI 的一个很好的起点。该应用涵盖了 SwiftUI 的许多基本概念,例如构建布局、处理数据以及处理用户交互。通过探索代码,您可以了解如何在日常生活中使用 SwiftUI。此外,IceCubesApp 的开源性质意味着您可以看到实际应用是如何构建的,并了解使用 SwiftUI 的最佳实践。

大部分架构是简单的 MVVM,这里没有使用 redux ;)

谢谢!

构建项目

要构建该项目,你需要克隆仓库,并创建所附 .xcconfig 文件的副本以生成你的配置,之后才能编译项目。否则,你将收到错误。

步骤如下:

  1. 克隆仓库
  2. 在包含 IceCubesApp.xcconfig.template 的同一文件夹中,运行此命令:
cp IceCubesApp.xcconfig.template IceCubesApp.xcconfig
  1. 填写 DEVELOPMENT_TEAMBUNDLE_ID_PREFIX 的值。前者应为您的 Apple Team ID(您可以通过登录 Apple Developer Portal 找到)。后者是您的域名的反向表示,或您用作项目前缀的任何内容。
  2. 保存您的更改,然后您应该能够编译该项目且不会有任何问题。