Chandan Kumar Jha
Chandan Kumar Jha

Reputation: 325

Google Place Search API in IOS

I have implemented the google place search API in IOS and enabled the API in the developer console and used the below code but its shows error that "This IP, site or mobile application is not authorized to use this API key. Request received from IP address 122.173.223.114, with empty refer"

After regenerate the API key its shows API key is expired and after sometime its shows the same above errors. Please help someone.

  -(void) queryGooglePlaces: (NSString *) googleType {
// Build the url string to send to Google. NOTE: The kGOOGLE_API_KEY is a constant that should contain your own API key that you obtain from Google. See this link for more info:
// https://developers.google.com/maps/documentation/places/#Authentication
NSString *url = [NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/place/search/json?location=%f,%f&radius=%@&types=%@&sensor=true&key=%@", appDel.objLocationManager.location.coordinate.latitude, appDel.objLocationManager.location.coordinate.longitude, [NSString stringWithFormat:@"%i", appDel.currenDist],googleType, kGOOGLE_API_KEY];


//Formulate the string as a URL object.
NSURL *googleRequestURL=[NSURL URLWithString:url];

// Retrieve the results of the URL.
dispatch_async(kBgQueue, ^{
    NSData* data = [NSData dataWithContentsOfURL: googleRequestURL];
    [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
});
 }
     -(void)fetchedData:(NSData *)responseData {
//parse out the json data

if (responseData==nil) {

}else{
NSError* error;
NSDictionary* json = [NSJSONSerialization
                      JSONObjectWithData:responseData

                      options:kNilOptions
                      error:&error];

//The results from Google will be an array obtained from the NSDictionary object with the key "results".
NSArray* places = [json objectForKey:@"results"];

//Write out the data to the console.
NSLog(@"Google Data: %@", json);
}
 }

Upvotes: 0

Views: 856

Answers (1)

iAnkit
iAnkit

Reputation: 1970

I did it with use of AFNetworking class Try this one,

#define kGoogleAutoCompleteAPI @"https://maps.googleapis.com/maps/api/place/autocomplete/json?key=%@&input=%@"


-(void)getAutoCompletePlaces:(NSString *)searchKey
{
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    // set request timeout
    manager.requestSerializer.timeoutInterval = 5;

    NSString *url = [[NSString stringWithFormat:kGoogleAutoCompleteAPI,GoogleDirectionAPI,searchKey] stringByReplacingOccurrencesOfString:@" " withString:@"+"];

    NSLog(@"API : %@",url);
    [manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject)
     {
         NSLog(@"JSON: %@", responseObject);
         [MBProgressHUD hideHUDForView:self.view animated:YES];

         NSDictionary *JSON = responseObject;
         predictions = [NSMutableArray array];

         // success
         AutomCompletePlaces *places = [AutomCompletePlaces modelObjectWithDictionary:JSON];
         [arrSuggestionData removeAllObjects];

         if (!arrSuggestionData) {
             arrSuggestionData = [NSMutableArray array];
         } 
         for (Predictions *pred in places.predictions)
         {
             [arrSuggestionData addObject:pred.predictionsDescription];
         }

         [self.Tbl_suggestion reloadData];

     } failure:^(AFHTTPRequestOperation *operation, NSError *error)
     {
         NSLog(@"Error: %@", error);
     }];
}

Upvotes: 3

Related Questions