如何设置 flutter_socket_io 插件以在 iOS 上工作
Posted
技术标签:
【中文标题】如何设置 flutter_socket_io 插件以在 iOS 上工作【英文标题】:How to setup flutter_socket_io plugin to work on iOS 【发布时间】:2019-03-20 18:17:13 【问题描述】:我正在尝试使用flutter_socket_io 插件在flutter 中侦听来自socketio 服务器的事件。我已按照插件页面上的指南并成功在 android 上工作。但是在 ios 上我得到一个异常
MissingPluginException(在通道flutter_socket_io上找不到方法socketInit的实现)
我还将 SocketObj 文件夹复制到 ios/Runner
,如插件自述文件中所述。但是,项目 io/Runner 文件夹中没有 AppDelegate.m 文件,只有 AppDelegate.swift 存在。我相信这是因为我在创建项目时选择添加 swift 支持。请帮忙。
【问题讨论】:
我面临同样的问题。我设法解决了除此之外的所有其他问题。你找到解决办法了吗? @JoãoSoares 我改用 (pub.dartlang.org/packages/adhara_socket_io)。它似乎在 Ios 和 android 上运行良好,不需要复制任何文件。 adhara 没有断开套接字的方法。如果您继续进行热重启,它会继续建立新连接而不会杀死旧连接。你没遇到过这个问题吗? @Joao Soares,我遇到了这个问题。为了解决这个问题,我在颤振应用程序中创建了一个计时器(10 秒),并向服务器发送心跳,在热重载后,旧套接字的计时器不再工作,所以服务器在之后断开旧套接字,比如说, 30 秒。 【参考方案1】:除了复制插件提供的 SocketObj 文件夹之外,您可能错过了将插件的 AppDelegate.m 与项目的 AppDelegate.m 合并,并且您还需要在项目的 podfile 中添加 pod 'Socket.IO-Client-Swift', '~> 13.3.0'
$PROJECT_ROOT/ios/Podfile
再说一次,flutter_socket_io 插件的设置似乎很乏味。您可能需要考虑其他套接字插件,例如 socket_io_client
【讨论】:
以上是关于如何设置 flutter_socket_io 插件以在 iOS 上工作的主要内容,如果未能解决你的问题,请参考以下文章