Frosty Logo

Frosty

一款支持 BTTVFFZ7TV 的 Twitch iOS 和 Android 客户端。采用 Flutter 构建。

CI Issues Last Commit License Release

Apple App Store Badge Google Play Store Badge

Buy Me A Coffee

Followed Streams Categories Section Search Section Channel (Video/Chat) View Emote Menu Settings Section

功能

  • 浏览关注的流、热门流和热门分类
  • 搜索频道和分类
  • 观看直播流并聊天
  • 支持 BTTV、FFZ 和 7TV 的表情符号/徽章
  • 表情符号菜单和自动完成
  • 本地聊天用户消息历史记录
  • 带过滤器的聊天者列表
  • 剧院模式和全屏模式
  • 画中画模式(仅限 iOS)
  • 睡眠定时器
  • 屏蔽和举报用户
  • 浅色、深色和黑色(OLED)主题
  • 可定制的设置

动机

许多用户在使用官方 Twitch 应用时遇到的一个主要问题是,像 BetterTTV (BTTV)FrankerFaceZ (FFZ)7TV 等服务的表情符号并未得到官方支持。Twitch 与这些服务无关,因此它们没有被官方集成。

因此,这些服务的数百万用户在使用官方 Twitch 应用时,体验并不理想。在流聊天中,表情符号应该出现的位置只显示文本(想象一下只能看到 :emoji_code: 而不是表情符号本身)。

Frosty 旨在为iOS 和 Android 带来这些表情符号和其他通用生活质量功能。

开发设置

  1. 前往 Twitch 开发控制台 并注册一个新应用,以获取 **客户端 ID** 和 **客户端密钥**,并添加一个 **OAuth 重定向 URL**。

  2. 将仓库克隆到目录。

  3. 导航到 lib/constants/constants.dart 并用你的 **客户端 ID** 和 **客户端密钥** 替换 clientIdsecret 常量(或者更好的是,如果你使用 VSCode,请使用 --dart-define 将它们定义为环境变量)。

  4. 导航到 android/app/src/main/AndroidManifest.xml 并在 flutter_web_auth 意图过滤器下,将 android:scheme 的值替换为你 **OAuth 重定向 URL** 中的 scheme。

  5. 运行 flutter pub get 获取所有依赖项。

  6. 选择一个模拟器或设备并运行应用程序!

常见问题

我可以更改流的质量吗?

在 Android 上,您可以通过在设置中关闭自定义流叠加层,然后点击右下角的齿轮图标来更改流的质量。

在 iOS 上,不幸的是,本机播放器无法提供质量选项,并且依赖于“自动”设置。由于没有官方 API 来获取直播流 URL,因此目前无法实现特定的质量选项。

为什么 Android 没有画中画 (PiP)?

我之前曾研究过为 Android 实现此功能,但 Android 上的网络浏览器不支持 Web 画中画 API。我使用 Web PiP API 是因为 Twitch API 的限制(流只是全屏的 Twitch 频道网站,而不是实际的视频播放器)。我*可能*可以通过使用原生 Android 代码来解决这个问题,但我首先需要学习它。

为什么某些动画和滚动看起来很不流畅?

由于 Flutter 框架,首次安装和启动时可能会有一些卡顿和不流畅。在使用并浏览应用一段时间后,卡顿会通过着色器预热/缓存得到缓解,并且在后续启动时应该最小化。观看一个聊天相对快速的流几分钟通常可以解决这个问题。

为什么 Android 上的视频流无法播放?

如果您使用的是旧版本的 Android(低于 7.1.1),由于依赖 Twitch 的 Web 播放器,视频流将无法正常播放。旧版 Android 使用较旧版本的本机网络浏览器(WebView),导致与新网站存在许多兼容性问题。

为什么即使我订阅了频道或拥有 Turbo 也会收到广告?

即使您已登录应用,仍需要登录 WebView,以便在播放流时识别您。您可以进入设置,然后在“账户”部分点击“登录 WebView”按钮来完成此操作。

为什么流和聊天之间会有延迟?

在 Android 上,延迟应该很小。如果存在延迟,请尝试刷新播放器。

在 iOS 上,由于原生播放器,延迟似乎高达 15 秒,因此不幸的是这已超出我的控制范围。目前您可以做的最好的事情就是刷新或暂停/播放流,直到延迟最小化。

更新:从 1.4.0 版本开始,有一个新的消息延迟选项,允许您设置渲染每条消息之前的延迟(以秒为单位)。

为什么某些 GIF 播放起来慢或非常快?

这似乎是由 Flutter 框架本身引起的(参见 此处此处)。

为什么 ProMotion (120Hz) 不起作用?

这是由 Flutter 框架引起的,并且正在处理中(参见 此处)。

更新:随着 Flutter 3 和应用程序 1.3.0 版本,ProMotion *应该*可以正常工作。

为什么 Twitch 的功能“X”也没有在此应用中?

我仅限于 Twitch API 中可用的功能,因此 Twitch 网页或移动应用中的某些功能(例如,对预测进行投票和类别观看者计数)目前不幸无法使用。

与广告拦截或使用私有 API 相关的其他功能可能不会被官方实施,因为它们会违反 Twitch 的服务条款。我目前的最高优先级是留在应用商店并专注于为这些构建制作功能。

我会尽量添加尽可能多的功能,但由于学业和个人原因,我偶尔可能需要休息或时间有限。

我可以在哪里报告错误或请求新功能?

您可以在 此处 使用适当的标签(例如,“bug”或“feature request”)打开一个新问题,我会对其进行查看。

许可证

Frosty 根据 AGPL-3.0-or-later 获得许可。

GitHub

查看 Github