2017-06-16 2 views
0

Je suis totalement nouveau au développement Phonegap et j'essaie quelque chose qui semble plutôt simple mais qui ne fonctionne pas. J'ai suivi les guides "Getting started" de Phonegap et j'ai installé l'application "PhoneGap Developer" sur mon téléphone Android. J'ai créé une application et je la desserve avec phonegap serve. J'ai retiré la valeur par défaut js/index.js et appelle à app.initialize() et inclut les composants suivants ajoutés à la index.html à sa place:phonegap window.location = url ne fonctionne pas

<script> 
    function onDeviceReady() { 
     if (navigator.connection.type == Connection.NONE) { 
      navigator.notification.alert(
       'An internet connection is required to continue'); 
     } else { 
      navigator.notification.alert("HERE!"); 
      window.location = "https://google.com"; 
     } 
    } 
    document.addEventListener("deviceready", onDeviceReady, false); 
</script> 

Si j'accéder à l'application avec un navigateur Chrome, il se charge correctement, donne le message pop-up, et charge ensuite Google. Si j'essaie d'utiliser l'application Android PhoneGap Developer, il apparaît avec le message, puis ne fait rien.

Dans le config.xml j'ai essayé de mettre tout en permissive que possible juste pour le faire fonctionner:

<access origin="*" /> 
<allow-navigation href="*" /> 
<allow-intent href="*" /> 

Sur la console du serveur, je reçois l'avertissement suivant:

[phonegap] [console.warn] Content Security Policy has been modified to be: <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' gap: ws: https://ssl.gstatic.com;style-src 'self' 'unsafe-inline' data: blob:;media-src *;img-src * 'self' data: content:;script-src * 'unsafe-inline' 'unsafe-eval' data: blob:;"> 

I ne suis pas assez familier avec les politiques CSP pour déterminer si cette politique limite réellement le chargement de «google.com» ou non ...

Répondre

2

Phonegap application développeur est une application Phonegap lui-même, de sorte qu'il utilise c'est propre config.xml au lieu d'utiliser le vôtre. Vous pouvez voir sur le github repo qu'il n'y a pas de règles de navigation autorisées. Donc, il ne permettra pas de naviguer vers google ou tout autre site.

Ce que vous avez à faire pour exécuter votre propre application au lieu de "prévisualiser" sur l'application de développeur Phonegap.

C'est la commande pour exécuter votre application phonegap run android

En outre, vous devrez peut-être installer le plugin whitelist avec phonegap plugin add cordova-plugin-whitelist ou en ajoutant <plugin name="cordova-plugin-whitelist" spec="~1.3.2" /> à votre config.xml, comme l'application Developer Phonegap est livré avec tous les plug-ins de base installés , mais votre application ne l'a peut-être pas affichée sur le modèle.

+0

Une idée pour laquelle l'outil de développement ne permet pas toute la navigation pour faciliter le développement? Cela me semble vraiment étrange. –

+0

Je ne sais pas, mais à mon avis, c'est une mauvaise pratique de créer des applications Cordova/Phonegap qui naviguent vers des sites externes à l'intérieur de la webview Cordova. Pour naviguer vers des sites externes, vous avez le plugin inAppBrowser. – jcesarmobile

+0

Je serais d'accord avec vous en général, mais c'est un outil de dev-only. –