2016-07-15 107 views
6

Sto tentando di utilizzare Google Places API per iOS. Ho creato una chiave API e quindi sto cercando di chiamare alcuni metodi. Ho inserito la chiave API in app, ma quando faccio la chiamata ho ottenere un questo erroreGoogle Places Api Limite giornaliero iOS per errore non autenticato Errore

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 = Codice com.google.GTLJSONRPCErrorDomain = 403 "(Limite giornaliero per non autenticato Usa superata. Continua l'utilizzo richiede la registrazione.) " UserInfo = {error = Limite giornaliero per l'utilizzo non autenticato superato. uso continuato richiede iscrizione, NSLocalizedFailureReason = (limite giornaliero per non autenticato Usa superato uso continuato richiede l'iscrizione..), GTLStructuredError = GMSx_GTLErrorObject 0x7f8bf2be6060:. {Messaggio: ". Giornaliera limite per non autenticato Usa superato uso continuato richiede iscrizione" Dati: [1] il codice: 403}}}}

fornisco la chiave api nel mio AppDelegate utilizzando GMSServices.provideAPIKey ("MY_API_KEY") e 'ho dato accesso posizione per l'applicazione. Non ho certamente superato i miei limiti di utilizzo (la mia quota indica 0 su 1000) poiché non sono stato in grado di parlare con l'api. Ho rigenerato la chiave alcune volte e ho anche creato altre chiavi con altri account Gmail ma niente ha funzionato ...

La mia ipotesi è qualcosa che non va bene con la posizione del simulatore di ios (ho fornito un file gpx a passare una posizione personalizzata) o qualcosa non va da parte di Google.

I due campioni che ho nel mio codice sono:

   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)") 
       } 
      }) 

e

   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 è una var istanziato come GMSPlacesClient(). Mi manca qualcosa qui? Il resto del codice è un tipico progetto di applicazione singola Xcode.

+1

Si dice "Limite giornaliero per l'utilizzo non autenticato superato". Ciò indicherebbe che non sei effettivamente collegato. Ciò significa che si applica il limite giornaliero per indirizzo IP, non la tua quota. – fishinear

+0

Puoi fornire maggiori dettagli per favore? Dove devo effettuare il login? Ho creato la mia app e ottenuto la mia chiave API. Quindi uso quella chiave nel mio codice per connettermi con l'API. In quale punto devo accedere? –

risposta

17

Rispondere alla mia domanda qui!

Risulta che l'errore è stato completamente mio (come di solito è). Stavo impostando il placesClient var come questo

var placesClient = GMSPlacesClient() 

Nell'esempio di Google (check it here) il placesClient var viene dichiarato come GMSPlacesClient optional e poi in viewDidLoad è impostato su GMSPlacesClient.sharedClient(). Purtroppo ho perso quella parte. Il codice è come

var placesClient: GMSPlacesClient? 

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

ha funzionato, grazie – Alexi