Building Mumi VPN: Keeping an Android VPN Simple to Use
Building Mumi VPN: Keeping an Android VPN Simple to Use
VPN 应用程序看起来很简单:选择服务器,点击按钮,然后连接。作为 Mumi VPN 的开发者,我发现更有趣的工作是决定按钮周围的功能:哪些应用程序需要路由,如何处理中断,以及如何传达连接状态。Mumi 是一款使用 Flutter 和原生 Android 集成构建的 Android 应用程序。以下是其背后的部分决策。
Removing account creation from setup Mumi does not ask users to create an account, enter an email address, or remember a password. The goal is to keep the first connection straightforward. Users should not need to configure server settings manually before trying the app. That simplicity also creates a design constraint: the interface still needs to make the current connection state and remaining data understandable.
在设置中移除账户创建 Mumi 不要求用户创建账户、输入电子邮件地址或记住密码。其目标是保持首次连接的简便性。用户在尝试使用该应用程序之前,无需手动配置服务器设置。这种简洁性也带来了一个设计约束:界面仍然需要让用户能够理解当前的连接状态和剩余数据量。
Giving users control over app routing Not every app on a phone needs to use the same connection. Mumi includes split tunneling so users can choose which apps use the VPN and which connect directly. There are two common ways to present this choice: Only selected apps use the VPN. Selected apps bypass the VPN. The wording matters. A list of checked apps is ambiguous unless the screen clearly explains what selecting an app means. Apps that bypass the VPN use the regular network connection. They remain outside the VPN tunnel and still consume Wi-Fi or mobile data.
让用户控制应用程序路由 手机上的每个应用程序都不一定需要使用相同的连接。Mumi 包含了分流(split tunneling)功能,因此用户可以选择哪些应用程序使用 VPN,哪些直接连接。呈现这种选择有两种常见方式:仅选定的应用程序使用 VPN,或者选定的应用程序绕过 VPN。措辞很重要。除非屏幕清楚地解释了选择一个应用程序意味着什么,否则勾选的应用程序列表会产生歧义。绕过 VPN 的应用程序使用常规网络连接。它们保留在 VPN 隧道之外,并且仍然消耗 Wi-Fi 或移动数据。
Treating connection state carefully One important distinction in VPN development is that an active VPN service does not automatically mean the internet is reachable. The interface, Android service, network connection, and actual reachability can disagree during an interruption. Mumi includes automatic reconnection and an internet connectivity check. The practical goal is to help users recover from interruptions and understand whether the connection is usable.
谨慎对待连接状态 VPN 开发中一个重要的区别是,活跃的 VPN 服务并不自动意味着互联网是可访问的。在中断期间,界面、Android 服务、网络连接和实际的可达性可能会出现不一致。Mumi 包含了自动重连和互联网连接检查功能。其实际目标是帮助用户从中断中恢复,并了解连接是否可用。
Working with Android’s VPN settings Mumi supports Android’s Always-on VPN settings. Android also provides a “Block connections without VPN” option. This introduces an interaction worth testing: apps excluded through split tunneling may be blocked from accessing the internet rather than allowed to connect directly. For anyone building an Android VPN, I would include these cases in manual testing: Switching between Wi-Fi and mobile data. Using the app after the phone has been idle. Disconnecting and reconnecting while another app is open. Combining split tunneling with Android’s connection-blocking setting. Each case tests a different part of the experience.
使用 Android 的 VPN 设置 Mumi 支持 Android 的“始终开启的 VPN”设置。Android 还提供了一个“阻止无 VPN 连接”的选项。这引入了一个值得测试的交互:通过分流排除的应用程序可能会被阻止访问互联网,而不是被允许直接连接。对于任何构建 Android VPN 的人,我建议在手动测试中包含以下情况:在 Wi-Fi 和移动数据之间切换;在手机闲置后使用应用程序;在打开另一个应用程序时断开并重新连接;将分流与 Android 的连接阻止设置结合使用。每种情况都测试了体验的不同部分。
Making data usage visible Mumi offers a free data allowance, with rewarded ads and paid purchases available for additional data. With a traffic-based model, remaining data is part of the main experience. Users need to understand what is available and what happens when it runs out. Split tunneling can help users conserve VPN data by routing only the apps they need through the connection. It does not reduce the data those apps actually transfer.
使数据使用量可见 Mumi 提供免费的数据额度,并提供奖励广告和付费购买以获取额外数据。在基于流量的模式下,剩余数据是主要体验的一部分。用户需要了解可用额度以及用完后会发生什么。分流功能可以通过仅将需要的应用程序通过连接路由来帮助用户节省 VPN 数据。它不会减少这些应用程序实际传输的数据量。
Keeping the claims practical A VPN changes the network path for traffic routed through it. It does not make someone completely anonymous. Accounts, cookies, and app permissions can still identify users. I want Mumi’s descriptions to explain the app’s features without promising protection from everything.
保持声明的务实性 VPN 会改变通过其路由的流量的网络路径。它并不能使人完全匿名。账户、Cookie 和应用程序权限仍然可以识别用户。我希望 Mumi 的描述能够解释应用程序的功能,而不是承诺提供针对一切的保护。