菜鸟教程小白 发表于 2022-12-13 16:26:02

iOS - MQTT 客户端框架确实连接/工作


                                            <p><p>我正在构建一个 iOS 应用程序,我想使用 MQTT 来订阅/发布消息到 MQTT 服务器。在研究 MQTT 库后,<a href="https://github.com/ckrey/MQTT-Client-Framework" rel="noreferrer noopener nofollow">I found this library</a>这似乎足以满足我的目的。请注意,我已经使用 CloudMQTT 在线制作了一个 MQTT 服务器。在弄清楚如何使 CocoaPods 工作,以及如何在我的 Podfile 上添加依赖项之后,我终于启动并运行了它。在我的第一个 View 的 <code>viewDidLoad</code> 函数中,我尝试通过将此行添加到我的 <code>.h</code> 文件来连接到我的 MQTT 服务器:</p>

<pre><code>@interface VBViewController : UIViewController&lt;MQTTSessionDelegate&gt;
</code></pre>

<p>在我的 <code>.m</code> 文件中,在 <code>viewDidLoad</code> 函数中,我这样做了:</p>

<pre><code>MQTTCFSocketTransport *transport = [ init];
transport.host = @&#34;mPortNumber.cloudmqtt.com&#34;;
transport.port = portNumber;

session = [ init];
session.transport = transport;

session.delegate=self;

;

[session subscribeToTopic:@&#34;username/messagesFolder/#&#34; atLevel:2 subscribeHandler:^(NSError *error, NSArray&lt;NSNumber *&gt; *gQoss){
    if (error) {
      NSLog(@&#34;Subscription failed %@&#34;, error.localizedDescription);
    } else {
      NSLog(@&#34;Subscription sucessfull! Granted Qos: %@&#34;, gQoss);
    }
}];
</code></pre>

<p>但是,在运行它时,订阅失败/成功消息都没有出现。我认为我可能使用了错误的端口号,所以我使用了提供的所有三个端口,简单端口、SSL 端口和 Websockets 端口。在这些都不起作用之后,我尝试通过使用斜杠来更改文件夹目录,但这也不起作用。</p>

<p>我也尝试发送和接收消息,但也没有成功。</p>

<p>由于我还没有更新我的 iOS 开发者许可证,所以我正在使用模拟器。我不想为了弄清楚这个简单的事情而破坏我所有的 10 个部署。这可能是无法连接到我的 MQTT 服务器的原因吗?我会怀疑,因为模拟器可以连接到互联网并使用 Safari 浏览,所以它几乎可以连接到互联网。</p>

<p>我在初始化/导入 MQTT 方法方面是否遗漏了什么?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>使用 <code>connectAndWaitTimeout</code> 时不会收到任何回调。 </p>

<p>尝试使用注释中指定的 <code>connectWithConnectHandler(connectHandler: MQTTConnectHandler!)</code>,你会得到:</p>

<pre><code>/**
@return nothing and returns immediately. To check the connect results, register as an MQTTSessionDelegate and
- watch for events
- watch for connect or connectionRefused messages
- watch for error messages
or use the connectHandler block
*/
</code></pre>

<p>还要确保您不需要加密即可成功连接。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iOS - MQTT 客户端框架确实连接/工作,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/37238831/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/37238831/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS - MQTT 客户端框架确实连接/工作