我是移动应用程序开发(apache cordova)领域的新手。
我在开发天气应用程序时遇到了谷歌地理编码api的问题。该代码在我的系统上运行良好,但在android设备上不起作用。
我无法在我的android手机中获取json结果对象,同时使用任何位置的pin代码检索纬度和经度。
如果有任何调试过程来找出错误所在,有人能帮我吗!?
下面是我用来获取位置坐标的查询字符串。
http://maps.googleapis.com/maps/api/geocode/json?address=50001&传感器=真实
提前谢谢。
以下是我在元标记中所做的更改,其中我提到了从中提取数据的源。。
以下是在apachecordova(index.html)中创建新项目时出现的默认元标记
<meta http-equiv="Content-Security-Policy" content="* 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
下面是index.html中修改后的元标记,我们需要提到从中获取数据的api源。
<meta http-equiv="Content-Security-Policy" content="* 'self' data: gap: https://ssl.gstatic.com https://query.yahooapis.com https://maps.googleapis.com https://api.openweathermap.org/ 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
对于调试,Chrome远程调试器/检查工具非常出色,可以让您查看设备上的JS控制台,并像检查任何其他网页一样检查Cordova应用程序中的web视图。
要使用这些,您需要在Android设备上打开开发者/远程USB调试,并通过USB电缆将其连接到计算机。然后Chrome应该能够将其视为可远程检查的web视图。
有关设置Chrome远程调试器的详细信息,请访问此处。
您的实际问题可能是内容安全策略/白名单插件。默认情况下,index.html中的内容安全策略元标记(由Cordova CLI在Cordova 5或更高版本中创建)将不允许远程Ajax请求。。。您可以使用connect-src子句将其配置为允许连接到要连接的一组服务器,或者使用*允许任何连接。为了安全起见,最好明确列出要连接的源。
要做到这一点,请在<head>
元素的index.html中添加类似的内容:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://maps.googleapis.com">
这将为maps.googleapis.com启用Ajax。这里有一篇全面的博客文章讨论内容安全策略。