所以我有这个需要使用谷歌地图的行动扩展。通常,当您想在iOS应用中使用Google地图时,可以在AppDelegates didFinishLaunchingWithOptions
功能中添加密钥。
在App扩展程序中,您没有AppDelegate文件来执行此操作,因此我在哪里放置它?
我试过把它放进去:
override func viewDidLoad() {
GMSServices.provideAPIKey("KEY")
GMSPlacesClient.provideAPIKey("KEY")
super.viewDidLoad()
}
我也试过把它放在super.viewDidLoad()
之后,但这没有任何区别。
当我确定我有一个有效的位置时,我在地图上加载了一个视图:
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
self.currentCoordinate = Coordinate(longitude: locations[0].coordinate.longitude, latitude: locations[0].coordinate.latitude)
let mapCameraPosition:GMSCameraPosition = GMSCameraPosition.cameraWithLatitude(self.currentCoordinate.latitude, longitude: self.currentCoordinate.longitude, zoom: 12)
let mapFrame:CGRect = CGRect(x: 0, y: 0, width: mapView.frame.width, height: 200)
let map:GMSMapView = GMSMapView.mapWithFrame(mapFrame, camera: mapCameraPosition)
self.mapView.addSubview(map)
}
视图我看起来like this:
在Google控制台中,我添加了主应用和扩展程序的捆绑包标识符,并限制使用这些ID到ID。我重新生成了API密钥并再次添加它。
我可以在应用运行时验证GoogleService-Info.plist
是否具有正确的API密钥...
我做错了什么?
更新
我已经验证了'GMSServices.provideAPIKey(“KEY”)和& 'GMSPlacesClient.provideAPIKey(“KEY”)'返回true。因此,结论是它不是API关键问题。根据{{3}}
,这似乎是一个已知问题答案 0 :(得分:0)
聚会晚了一点,但是我在“今日扩展”中遇到了Google Places SDK的类似问题。尽管成功提供了API密钥,但我仍然收到错误消息。
对我来说,解决方案是转到Google Cloud Platform,然后编辑api-key。我设置了一个限制,以仅接受来自注册了捆绑标识符的iOS应用程序的请求。我为“今日扩展”添加了丢失的捆绑包标识符并保存了。
尝试转到 Google云平台-> Google Maps-> API-> Maps SDK for iOS->凭据,然后编辑应用中使用的密钥。在“应用程序限制”下,您可以将“操作扩展”的捆绑软件标识符添加到捆绑软件标识符列表中。