Android\

Issue

I’m currently trying to publish a cordova app on google play store…

However when I run the release build from the store the app does not connect to the sockets.

I am using LaravelEcho with SocketIo client.

  • cordova – 9.0.0 (cordova-lib@9.0.1)
  • angular – 8.1.2
  • socket.io – 2.1.4
  • laravel-echo – 1.6.1

After I searched the problem I found some results about a permission, but I already have that.

<uses-permission android:name"android.permission.INTERNET" />

Is it possible to debug the app in the release mode?

update

This is how I imported the NgxLaravelEchoModule

NgxLaravelEchoModule.forRoot({ userModel: 'App.Models.User', notificationNamespace: 'App\\Notifications', options: { broadcaster: 'socket.io', host: environment.socketsURL } }),

update

I managed to pint an error message thrown by socket module

xhr poll error

Solution

I spent hours upon hours searching for the answer to this question (and I know this post is old but perhaps it could help someone). Not one person could answer this. Though, I believe the true answer is that, by default, Android does not like http. Instead, a solution is to use https on whatever your socket.io client is. But that’s annoying to setup.

A better solution is to allow http on the Android application. In your AndroidManifest.xml, find “application”. It should look like this by default:

<application android:hardwareAccelerated"true" android:icon"@mipmap/ic_launcher" android:label"@string/app_name" android:supportsRtl"true">

Append android:usesCleartextTraffic"true" to this to get the following:

<application android:hardwareAccelerated"true" android:icon"@mipmap/ic_launcher" android:label"@string/app_name" android:supportsRtl"true" android:usesCleartextTraffic"true">

Compile your apk and run it on an Android device. And voila! You can now connect to your sockets on the release build.

Answered By – Xyl

Leave a Comment