Google api 密钥不适用于我的 ios 应用程序
Posted
技术标签:
【中文标题】Google api 密钥不适用于我的 ios 应用程序【英文标题】:Google api key not work on my ios app 【发布时间】:2014-03-14 17:44:29 【问题描述】:我已在使用 phonegap 开发的 ios 应用程序中插入地理定位。 当我打开我的 map.html 页面时,设备应该在谷歌地图上显示我的位置。现在,当我打开 map.html 时,我收到一个使用我的 gps 的请求,然后出现一条错误消息:“Google 已禁用此应用程序使用 Google Maps API。提供的密钥不是有效的 Google API 密钥,或者它是未经授权在本网站上使用 Google Maps API javascript v3。如果您是此应用的所有者,您可以在此处找到更多信息:https://developers.google.com/maps/documentation/javascript/tutorial#api_key"
所以问题是api密钥,我已经阅读了文档并在网上搜索过,但我无法解决。我正在使用我的 ipad 作为设备使用 xcode 测试应用程序,它不在苹果商店。如果我使用浏览器密钥,我不知道我需要使用哪个链接,如果我尝试使用 ios 密钥,它就不起作用。我尝试插入在 phonegap 安装期间生成的捆绑包标识符(com.example.pas-si)和我用于在我的 ipad 上测试应用程序的苹果证书(it.quidfarm.approva) . 我已经从开发者控制台激活了正确的 api,我不会遇到配额问题,因为该应用程序仅在我的设备上。 我认为有一些基本设置我没有以正确的方式设置。
我已经使用 Phonegap 完成了我的应用程序,并使用本指南安装了地理定位 http://www.devx.com/wireless/implement-google-maps-api-on-phonegap-using-the-device-api.html 这是我的 map.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
<title>Pas.si</title>
</head>
<body>
<div data-role="page" id="page" style="background-color:transparent;" >
<!-- ....Menu and other Html stuffs -->
<div id="content">
<div id="geolocation" style="width: 600px; height: 300px;">
</div>
<script type="text/javascript" src="phonegap.js"></script>
<script type="text/javascript" src="js/mappa.js"></script>
<script src="http://maps.googleapis.com/maps/api/js?key=MY-API-KEY&sensor=false">
</script>
<script type="text/javascript">
app.initialize();
</script>
</div> <!-- END #content -->
<!-- .... other Html stuffs -->
</div> <!-- END #page -->
<!-- Java to shows a menu - not for geolocalization -->
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript">
$('#menu').click(function()
$('#listamenu').toggleClass('classmenub classmenua');
);
</script>
</body>
</html>
这是我的 map.js
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
var app =
// Application Constructor
initialize: function()
this.bindEvents();
,
// Bind Event Listeners
//
// Bind any events that are required on startup. Common events are:
// 'load', 'deviceready', 'offline', and 'online'.
bindEvents: function()
document.addEventListener('deviceready', this.onDeviceReady, false);
,
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicity call 'app.receivedEvent(...);'
onDeviceReady: function()
// Get our current location
navigator.geolocation.getCurrentPosition(app.onSuccess, app.onError);
,
// Current location was found
// Show the map
onSuccess: function(position)
var longitude = position.coords.longitude;
var latitude = position.coords.latitude;
var latLong = new google.maps.LatLng(latitude, longitude);
var mapOptions =
center: latLong,
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP
;
var map=new google.maps.Map(document.getElementById("geolocation"), mapOptions);
,
// Current location could not be determined
// Show error
onError: function(error)
alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n');
,
;
我正在使用 phonegap 3.3、Xcode 5.0.2。在装有 OS 10.8.5 的 Mac Book pro 上
谢谢你,对不起我的英语不好,希望你能理解这个问题。
【问题讨论】:
v3 api 不需要 apikey(它是可选的,只有在流量很大时才需要),尝试删除 apikey 参数,看看是否有任何改变。 它有效...这个选项我从来没有想过.... -.- 谢谢!! 太棒了!如果您开始达到 API 限制,您可能需要重新审视这一点,但限制确实很高。我已将此添加为其他人找到的答案。 【参考方案1】:由于 GoogleMaps API v3 不需要 API 密钥,您现在可以将其移除。
将来,如果您达到使用限制,您可能需要重新添加它。在这种情况下,您需要进一步了解如何将应用程序命名空间添加到 API 密钥实例。
【讨论】:
它一直在问,即使没有钥匙。以上是关于Google api 密钥不适用于我的 ios 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
新的 Google API 密钥“Google Maps API v3”不适用于 Google Places API?
Firebase API 密钥限制不适用于 Android 应用程序包名称和 SHA1 指纹