2016-07-15 4 views
6

iOS向けにGoogleプレイスAPIを使用しようとしています。私はapiキーを作成してから、いくつかのメソッドを呼び出そうとしています。私はアプリでAPIキーを入力しましたが、私は電話をかけるとき、私はGoogleプレイスApi iOS不正使用の毎日の制限超過エラー

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 

ドメインがcom.google.GTLJSONRPCErrorDomainコード= 403「は 未認証の使用のために(デイリー制限を超え=このエラーを取得します。続き使用するにはサインアップが必要です)。 " UserInfo = {error = Unauthenticated Useの1日の制限を超えました。 。 続き使用が申し込みを必要とし、NSLocalizedFailureReason =(認証されていない使用のために値幅制限 超過続きを使用するサインアップが必要となる。)、 GTLStructuredError = GMSx_GTLErrorObject 0x7f8bf2be6060:{メッセージ:「非認証使用を毎日 制限を超えて続く使用を 申し込みを必要とします。」。データ:[1]コード​​:403}}}}

IはGMSServices.provideAPIKey( "MY_API_KEY")を使用して私のappdelegateでAPIキーを提供し、私は、アプリに位置アクセス与えまし。私はapiと話すことができなかったので、私の使用制限を超えていないことは確かです(私の割り当ては1000のうち0を示しています)。私は何度かキーを再生成しましたが、他のgmailアカウントでも他の鍵を作成しましたが、何もうまくいかなかった...

私の推測では、iosシミュレータの場所に問題があります。カスタムの場所を渡す)または何かがGoogle側から間違っている。私は私のコードを持っている

2つのサンプルは以下のとおりです。

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

   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がGMSPlacesClientとしてインスタンス化VAR()です。 ここに何か不足していますか? 残りのコードは、一般的なXcode単一アプリケーションプロジェクトです。

+1

のようになります。「1日の使用制限が超過しました」と表示されます。それはあなたが実際にログインしていないことを示します。つまり、IPアドレスごとの1日制限が適用され、割り当て制限は適用されません。 – fishinear

+0

詳細を教えてください。どこにログインする必要がありますか?私は私のアプリを作成し、私のAPIキーを得た。次に、コード内でそのキーを使用してapiと接続します。ログインする必要がありますか? –

答えて

17

ここに自分自身の質問に答える!

間違いは完全に鉱山だったことが分かります(通常はそうです)。私はGoogleの例では、この

var placesClient = GMSPlacesClient() 

ようplacesClientのVARを設定した(check it here)placesClientのVAR()は、オプションのGMSPlacesClientとして宣言され、その後のviewDidLoadではGMSPlacesClient.sharedClientに設定されています。残念ながら私はその部分を逃しました。コードは

var placesClient: GMSPlacesClient? 

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

その仕事、ありがとう – Alexi

関連する問題