应用程序在Android和iOS模拟器中可用,但在发布后不起作用

2022-03-28 00:00:00 mqtt javascript react-native

问题

我创建了一个App,它是一个MQTT代理客户端。当我使用iOS/Android模拟器进行开发时,我与Broker的连接工作正常。然而,当我发布一个apk版本时,我的应用程序无法连接。它有套接字问题(AMQJS0007E套接字错误:未定义)。

我已经尝试过此解决方案github solution

屏幕截图

应用程序在模拟器中运行

[]

正在运行的应用程序发布版本

[]

this.client.connect({
    timeout: 10,
      onSuccess: () => {
        this.isConnected = true;
    
        onSuccessHandler();
      },
    
      useSSL: false,
    
      onFailure: this.onFailure,
    
      reconnect: true,
    
      keepAliveInterval: 20,
    
      cleanSession: true,

});


解决方案

Android:无法向服务器发送数据。明文通信至 网络安全策略不允许。

从Android 9(API级别28)开始,禁用明文支持 默认情况下。*

您需要修改才能添加新文件res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">test.mosquitto.org</domain>
    </domain-config>
</network-security-config>

然后修改您的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:networkSecurityConfig="@xml/network_security_config"
        ...>
        ...
    </application>
</manifest>

相关文章