iOS开发中如何用TLS的方式连亚马逊的MQTT服务器
亚马逊提供的SDK中,嵌入式c、java、c++都是可以用TLS的方式连的,只需要ca、crt、key文件即可连上,唯独iOS不行,不支持。连填证书的地方都没有,网络上讲的也都是其它方式需要在亚马逊的后台填一堆东西,考虑到安全性,还是得用tls的方式,没办法只能寻找第三方SDK。走了n多的弯路,终于搞定,把思路写出来
先是找到了mosquitto,是一个mqtt broker。也就是一个连接工具,它支持mqtt服务端和客户端,支持tls连接,然后找到了用它封装而成的支持tls的客户端代码c的oc的都有。然而运行之后可以连接成功,一旦subscribe或者publish就报错,异常断开,报MOSQ_ERR_NOMEM。半天没头绪,后来想想是不是它用的mosquitto太老了,就下了最新的拿来对比了一下,发现代码差别挺大的,就替换了一下,然后业务层的代码:mosq = mosquitto_new(cstrClientId, cleanSession, (__bridge void *)(self)); 这句注意最后一个参数。这样就可以了,用mac版的MQTTX给手机发消息,Payload的类型选Plaintext,就可以发送成功了,代码过几天上传,先写到这里