如何设置 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 上工作的主要内容,如果未能解决你的问题,请参考以下文章

如何模仿或设置 Chrome Headless 插件

如何将 QML 插件设置为 Loader 的源

如何从自定义插件设置 Gradle Artifactory Publish 插件默认配置/属性

如何设置具有 IDE 支持的 Cordova 插件项目?

如何进入 PHP Inspection 插件的设置?

如何在 Mac 插件中使用 ioctl() 设置 RTS?