You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift项目本地部署Supabase后Realtime Channel无法监听数据变更

问题分析与解决建议

本地Supabase使用HTTP协议确实会导致Realtime Channel无法正常工作,原因及解决方法如下:

核心原因

  • Realtime功能依赖WebSocket协议:本地HTTP环境下,Supabase Realtime使用的是ws://协议,而iOS的App Transport Security(ATS)即使开启了Allow Arbitrary Loads,对WebSocket的非安全连接(ws://)依然可能存在限制——Allow Arbitrary Loads主要放宽HTTP/HTTPS普通请求的限制,对WebSocket的管控逻辑有区别。
  • 查询功能不受影响的原因:普通数据查询使用HTTP/HTTPS请求,Allow Arbitrary Loads已允许这类非安全连接请求,因此可以正常工作。

解决方法

1. 给本地Supabase配置HTTPS(推荐方案)

  • 生成自签名SSL证书,配置本地Supabase实例使用HTTPS。此时Realtime会自动使用wss://协议,符合ATS安全要求,无需额外绕开限制。
  • iOS端需信任该自签名证书:将证书安装到设备后,进入「设置」-「通用」-「关于本机」-「证书信任设置」,开启对应证书的信任开关。

2. 调整ATS配置以允许ws://连接(仅开发环境使用)

  • 在Info.plist中添加更具体的ATS例外配置,针对本地Supabase的域名允许非安全WebSocket连接:
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>your-local-supabase-domain.com</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSIncludesSubdomains</key>
                <true/>
            </dict>
        </dict>
    </dict>
    
    替换your-local-supabase-domain.com为你本地Supabase的实际域名或IP(比如localhost)。

3. 检查本地Supabase的Realtime配置

  • 确认本地Supabase的Realtime服务已正确启用,并且目标表已开启Realtime监听权限:
    • 在Supabase Dashboard的「Realtime」面板中,检查对应表是否已添加到监听列表。
    • 确保表的RLS(行级安全)规则允许Realtime连接的用户进行相关操作。

内容的提问来源于stack exchange,提问作者Asif Syeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:42:19