【问题标题】:[Cordova][Android] Sockets not connecting when running on release build[Cordova][Android] 在发布版本上运行时套接字未连接
【发布时间】:2020-02-14 13:23:19
【问题描述】:
我目前正在尝试在 google play store 上发布一个 cordova 应用程序...

但是,当我从商店运行发布版本时,应用程序不会连接到套接字。

我正在使用 LaravelEcho 和 SocketIo 客户端。

  • cordova - 9.0.0 (cordova-lib@9.0.1)
  • 角度 - 8.1.2
  • socket.io - 2.1.4
  • laravel-echo - 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

【问题讨论】:

  • 你能分享你的套接字实现吗?还告诉它是否在调试 APK 中工作?
  • 我更新了模块导入,是的,当我在调试模式下运行时它正在工作..

标签: android angular cordova sockets ionic-framework


【解决方案1】:

我花了好几个小时寻找这个问题的答案(我知道这篇文章很旧,但也许它可以帮助某人)。没有一个人能回答这个问题。不过,我相信真正的答案是,默认情况下,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 设备上运行它。瞧!您现在可以在发布版本上连接到您的套接字。

【讨论】:

    猜你喜欢
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 2020-08-29
    • 1970-01-01
    • 2012-11-17
    • 2016-10-02
    相关资源
    最近更新 更多