2016-07-15 4 views
6

Ich versuche, Google Places API für iOS zu verwenden. Ich habe einen API-Schlüssel erstellt und dann versuche ich ein paar Methoden aufzurufen. Ich habe den api-Schlüssel in der App eingegeben, aber als ich den Anruf erhalte ich einen diesen FehlerGoogle Places Api iOS Tageslimit für nicht authentifizierte Verwendung überschritten Fehler

lookup place id query error: The operation couldn’t be completed. (com.google.places.server.ErrorDomain error -1.) 
Error Domain=com.google.places.server.ErrorDomain Code=-1 "(null)" UserInfo={NSUnderlyingError=0x7f8bf861ca80 {Error 

Domain = com.google.GTLJSONRPCErrorDomain-Code = 403 „(Tageslimit für Unauthenticated Nutzung überschreitet. Fortsetzung Verwendung erfordert Anmeldung.) " UserInfo = {Fehler = Tägliches Limit für nicht authentifizierte Verwendung überschritten. Fortsetzung Verwendung erfordert eine Anmeldung, NSLocalizedFailureReason = (Tageslimit für nicht authentifizierte Nutzung überschritten Fortsetzung Verwendung erfordert eine Anmeldung..), GTLStructuredError = GMSx_GTLErrorObject 0x7f8bf2be6060:. {Nachricht: „. Täglich Grenzwert für nicht authentifizierte Nutzung überschritten Fortsetzung Verwendung erfordert Anmeldungen“ Daten: [1] Code: 403}}}}

ich die api Schlüssel in meiner AppDelegate bieten GMSServices.provideAPIKey ("MY_API_KEY") mit und ich an die App ve bestimmten Ort Zugriff. Ich habe sicherlich meine Nutzungsbeschränkungen nicht überschritten (mein Kontingent zeigt 0 von 1000), da ich nicht in der Lage war, mit der API zu sprechen. Ich habe den Schlüssel einige Male neu erstellt und ich habe auch andere Schlüssel mit anderen Google Mail-Konten erstellt, aber nichts funktioniert ...

Meine Vermutung ist entweder etwas stimmt nicht mit dem IOS-Simulator-Speicherort (Ich habe eine GPX-Datei zur Verfügung gestellt übergeben Sie einen benutzerdefinierten Ort) oder etwas ist falsch von googels Seite.

Die beiden Proben, die ich in meinem Code haben, sind:

   let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" 

      placesClient.lookUpPlaceID(placeID, callback: { (place: GMSPlace?, error: NSError?) -> Void in 
       if let error = error { 
        print("lookup place id query error: \(error.localizedDescription)") 
        print(error) 
        return 
       } 

       if let place = place { 
        print("Place name \(place.name)") 
        print("Place address \(place.formattedAddress)") 
        print("Place placeID \(place.placeID)") 
        print("Place attributions \(place.attributions)") 
       } else { 
        print("No place details for \(placeID)") 
       } 
      }) 

und

   placesClient.currentPlaceWithCallback({ (placeLikelihoods, error) -> Void in 
       guard error == nil else { 
        print("Current Place error: \(error!.localizedDescription)") 
        return 
       } 

       if let placeLikelihoods = placeLikelihoods { 
        for likelihood in placeLikelihoods.likelihoods { 
         let place = likelihood.place 
         print("Current Place name \(place.name) at likelihood \(likelihood.likelihood)") 
         print("Current Place address \(place.formattedAddress)") 
         print("Current Place attributions \(place.attributions)") 
         print("Current PlaceID \(place.placeID)") 
        } 
       } 
      }) 

placesClient ein var als GMSPlacesClient instanziiert ist(). Fehle ich hier etwas? Der Rest des Codes ist ein typisches Xcode-Einzelanwendungsprojekt.

+1

Es heißt "tägliche Grenze für nicht authentifizierte Verwendung überschritten". Das würde bedeuten, dass Sie tatsächlich nicht eingeloggt sind. Das bedeutet, dass das Tageslimit pro IP-Adresse gilt, nicht Ihr Kontingent. – fishinear

+0

Könnten Sie bitte mehr Details geben? Wo muss ich mich anmelden? Ich habe meine App erstellt und meinen API-Schlüssel bekommen. Dann verwende ich diesen Schlüssel in meinem Code, um mit der API zu verbinden. An welchem ​​Punkt sollte ich mich einloggen? –

Antwort

17

Beantworten Sie meine eigene Frage hier!

Stellt sich heraus, der Fehler war ganz meiner (wie es normalerweise ist). Ich war die placesClient var wie diese zu GMSPlacesClient.sharedClient

var placesClient = GMSPlacesClient() 

in Googles Beispiel (check it here) der placesClient var als optionales GMSPlacesClient erklärt und dann in viewDidLoad gesetzt Einstellung(). Leider habe ich diesen Teil verpasst. Der Code ist wie

var placesClient: GMSPlacesClient? 

override func viewDidLoad() { 
    super.viewDidLoad() 
    placesClient = GMSPlacesClient.sharedClient() 
} 
+0

es hat funktioniert, danke – Alexi

Verwandte Themen