Загрузка фотографий на собственную стену через iOS Graph API с указанием местоположения пользователя
Мне нужно опубликовать фотографию (снято с камеры) на стене пользователя в Facebook с указанием местонахождения пользователя. Теперь фотообъект Facebook имеет поле с именем place:
object containing id and name of Page associated with this location, and a location field containing geographic information such as latitude, longitude, country, and other fields (fields will vary based on geography and availability of information)
Теперь, как мне получить это место, прикрепить его с фотографией и загрузить в стену пользователя. Это мой код для загрузки фотографий:
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
resultImage, @"picture",
location, @"place",
nil];
[appDelegate.facebook requestWithGraphPath:@"me/photos"
andParams:params
andHttpMethod:@"POST"
andDelegate:self];
Но как мне получить параметр местоположения здесь? Кто-нибудь может помочь? Заранее спасибо.
3 ответа
Объект размещения может быть идентификатором страницы Facebook только желаемого местоположения в соответствии с этой документацией. Итак, вот как мне удалось получить местоположение пользователя при загрузке фотографии.
-(void)fbCheckForPlace:(CLLocation *)location
{
NSString *centerLocation = [[NSString alloc] initWithFormat:@"%f,%f",
location.coordinate.latitude,
location.coordinate.longitude];
NSLog(@"center location is : %@",centerLocation);
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"place", @"type",
centerLocation, @"center",
@"1000", @"distance",
nil];
[centerLocation release];
[appDelegate.facebook requestWithGraphPath:@"search" andParams:params andDelegate:self];
}
текущее местоположение получается путем вызова делегата CLLocation Manager и передается в вышеуказанном методе.
Затем, если этот запрос выполнен успешно, объекты объектов вставляются в изменяемый массив.
NSArray *resultData = [result objectForKey:@"data"];
for (NSUInteger i=0; i<[resultData count] && i < 5; i++)
{
[self.listOfPlaces addObject:[resultData objectAtIndex:i]];
}
И тогда запускается метод загрузки фото:
- (void)uploadPhotoWithLocation
{
NSString *placeId = [[self.listOfPlaces objectAtIndex:0] objectForKey:@"id"];
params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
self.resultImage, @"picture",
placeId, @"place",
nil];
[appDelegate.facebook requestWithGraphPath:@"me/photos"
andParams:params
andHttpMethod:@"POST"
andDelegate:self];
}
Я занял первое место поблизости из доступных заездов ([self.listOfPlaces objectAtIndex:0]
) и теперь приложение может успешно публиковать фотографии с текущего местоположения пользователей поблизости.
Вышеуказанный ответ Шабиба отличный (у меня недостаточно представителя, чтобы комментировать напрямую), но теперь вам также нужно указать параметр "fields" для успешного выполнения запроса графа для /search. Мой словарь параметров выглядит так:
NSDictionary *params = @{@"type" : @"place",
@"center" : centerLocation,
@"distance" : @"500",
@"fields" : @"id,name"};
API FB показывает: "место": "объект, содержащий идентификатор и имя страницы, связанные с этим местоположением, и поле местоположения, содержащее географическую информацию, такую как широта, долгота, страна и другие поля (поля могут различаться в зависимости от географии и наличия Информация)'
1) запустить сервис определения местоположения в iOS 2) получил текущее местоположение: широта, долгота
использовать две данные широты, долготы