android - [Cordova][Android] 在发布版本上运行时套接字未连接
问题描述
我目前正在尝试在 google play store 上发布一个 cordova 应用程序...但是,当我从商店运行发布版本时,应用程序不会连接到套接字。
我将 LaravelEcho 与 SocketIo 客户端一起使用。
- 科尔多瓦 - 9.0.0 (cordova-lib@9.0.1)
- 角度 - 8.1.2
- socket.io - 2.1.4
- laravel 回声 - 1.6.1
在我搜索问题后,我发现了一些关于权限的结果,但我已经有了。
<uses-permission android:name="android.permission.INTERNET" />
是否可以在发布模式下调试应用程序?
更新
这就是我导入 NgxLaravelEchoModule 的方式
NgxLaravelEchoModule.forRoot({
userModel: 'App.Models.User',
notificationNamespace: 'App\\Notifications',
options: {
broadcaster: 'socket.io',
host: environment.socketsURL
}
}),
更新
我设法找出套接字模块抛出的错误消息
xhr poll error
解决方案
我花了几个小时寻找这个问题的答案(我知道这篇文章很旧,但也许它可以帮助某人)。没有一个人能回答这个问题。不过,我相信真正的答案是,默认情况下,Android 不喜欢 http。相反,一个解决方案是在任何 socket.io 客户端上使用 https。但这很烦人。
更好的解决方案是在 Android 应用程序上允许 http。在您的 AndroidManifest.xml 中,找到“应用程序”。默认情况下应该是这样的:
<application android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true">
附加android:usesCleartextTraffic="true"
到此以获得以下内容:
<application android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:usesCleartextTraffic="true">
编译您的 apk 并在 Android 设备上运行它。瞧!您现在可以连接到发布版本上的套接字。
推荐阅读
- flutter - 使用颤振 2.0.0 构建旧项目的问题
- contract - 打包智能合约:初始化核心配置时出现致命错误
- javascript - Javascript 过滤器方法返回原始数组,即使返回 false
- c# - Print name and id of radio button?
- r - 如何在 R 传单中将 SP 对象绘制为 SF
- flask - 为什么我的表单数据没有添加到 flask-sqlalchemy 和 jinja 模板中的数据库中?
- system-verilog - 一个实例静态类型强制转换形式子类如何使用变量和函数?
- javascript - 如何将多个列表合并为一个列表?
- vba - 使用 VBA 将 MS Access 报告转换为 PDF 时,字符上出现间歇性框
- spring-boot - 为什么 Kafka Producer 在 Spring Boot 中发布带有双引号的字符串消息