es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

WebRTC onicecandidate no se está llamando en Cordova para android, pero sí se está llamando en el navegador.

Estoy trabajando en un proyecto de intercambio de archivos que funciona con WebRTC, Cordova y Framework7. Mi código funciona perfectamente bien en un navegador, pero cada vez que intento ejecutar el mismo código a través de un emulador de Android con Cordova, la función onicecandidate de WebRTC parece no ser llamada y no obtengo ningún mensaje de error. Si es posible, no deseo utilizar ninguna biblioteca de terceros y simplemente reutilizar el mismo código JavaScript que ya he escrito.

function createPeerConn() {
let conf = {
    iceServers: [{ urls: "stun:stun.l.google.com:19302" }],
};
myConn = new RTCPeerConnection(conf, { optional: [] });
myConn.onicecandidate = function (event) {
    if (event.candidate) {
        socket.emit("candidate", event.candidate);
        console.log("create peer con called.")
    }
};
openDataChannel();
} 
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Posible solución:

    Parece ser un problema común con WebRTC en aplicaciones de Cordova que podría estar relacionado con los permisos o la configuración de la red. Aquí hay algunas posibles soluciones para solucionar el problema:

    1. Verificar la configuración de lista blanca de Cordova:

    Asegúrese de agregar todos los dominios y puertos necesarios a la configuración de lista blanca en el archivo config.xml, por ejemplo:

    <access origin="*"></access>
    <allow-navigation href="*"></allow-navigation>
    <allow-intent href="*"></allow-intent>
    <allow-intent href="http://*/*"></allow-intent>
    <allow-intent href="https://*/*"></allow-intent>
    <allow-intent href="tel:*"></allow-intent>
    <allow-intent href="sms:*"></allow-intent>
    
    1. Verificar los permisos de red:

    Asegúrese de agregar los permisos de red necesarios al archivo AndroidManifest.xml, por ejemplo:

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    
    1. Verificar la compatibilidad con WebRTC:

    Asegúrese de que el emulador de Android admita WebRTC y que no haya conflictos con otros complementos o bibliotecas. Pruebe en diferentes dispositivos y versiones si es posible.

    1. Intentar usar un complemento o biblioteca:

    Si las soluciones anteriores no funcionan, considere utilizar un complemento o biblioteca compatible con WebRTC para Cordova, como cordova-plugin-iosrtc or cordova-plugin-webrtc.

    1. Depurar y probar:

    Utilice console.log y otras herramientas de depuración para rastrear el problema y verificar si hay errores o advertencias. Pruebe diferentes escenarios y configuraciones para reducir el problema. Si todo lo demás falla, considere buscar ayuda en foros o comunidades en línea.

Comments are closed.