Compruebe si la aplicación ionic está en modo de servicio de desarrollo(navegador)


Utilizo ionic serve para ejecutar mi aplicación en localhost.

¿Cómo puedo saber cuando estoy en navegador y no en android?

Lo intenté:

navigator.platform // MacIntel
navigator.platforms // undefined
ionic.Platform.is('BROWSER') // false
navigator.userAgent // ...iPhone... => i'm in chrome device mode

¡Gracias!

Author: Shalev Shalit, 2015-05-07

6 answers

Probablemente hay más de una forma de hacerlo, pero una simple es que cordova solo se definirá en Android/iOS para que pueda hacer

if (window.cordova) {
  // running on device/emulator
} else {
  // running in dev mode
}

Editar

Algunos editores de texto y analizadores de TypeScript pueden quejarse de que Property 'cordova' does not exist on type 'Window'. Para solucionar esto, puede usar lo siguiente:

if ((<any>window).cordova) {
  // running on device/emulator
} else {
  // running in dev mode
}

Al enviar explícitamente a type any puede evitar errores de transpiler, y aún así lograr lo que está tratando de hacer.

 66
Author: Mirko N.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-11 05:29:17

Encontré que puedo usar

ionic.Platform.platforms[0] == "browser"

Para comprobar si la aplicación se está ejecutando en un navegador o no.

Lo importante, ionic.Platform.platforms se establece solo después de que se dispara el evento $ionicPlatform.ready.

 6
Author: Ygalbel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-11 13:06:31

Comprobando si ventana.ubicación.hostname es igual a localhost también funcionará.

if(window.location.hostname === "localhost"){
    return 'http://localhost:8100/api/';
} else {
    return 'https://some-api.com/';
}
 6
Author: Jack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-29 17:16:46

Use

if(ionic.Platform.isWebView()){
  console.log('i am in a browser webview!');
}

O

console.log(ionic.Platform.platform());

Eso te dirá en qué plataforma estás. Webview o Android o ios o lo que sea.

 3
Author: Jess Patton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-06 16:02:44

Por ahora, en mi aplicación Ionic 1 (usando la última versión 3.9.x, pero con type tipo iónico 1), iónico.Plataforma.platform () cuando estoy en desktop devuelve "linux", no"browser". Y ventana.cordova ahora existe en el navegador, pero se puede comprobar si la ventana.cordova.platformId = = 'browser'. Parece que funciona aquí.

 0
Author: felipeaf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-27 01:23:11

Solo una pequeña corrección a Mirko N. respuesta.

Typescript realmente devolverá error si usa cordova directamente o como un hijo del objeto window.

La respuesta correcta es comprobar si window tiene cordova como propiedad propia.

if(window.cordova) //returns error "Property 'cordova' does not exist on type 'Window'."

if(window.hasOwnProperty('cordova')) //Proper Check

introduzca la descripción de la imagen aquí

 0
Author: ProllyGeek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-22 13:36:26