Как подключить 5 изображений к сообщению в Facebook, используя Facebook ios sdk 3.0
Я пытаюсь отправить сообщение пользователю что-то вроде этого (сначала он показывает только одно изображение, но когда вы нажимаете "показывать больше", вы видите все пять изображений)
![Post with 5 images]()
Мой код выглядит следующим образом:
NSMutableArray *properties = [[NSMutableArray alloc] initWithCapacity:5];
NSMutableArray *media = [[NSMutableArray alloc] initWithCapacity:5];
for (MyObject *object in self.myObjects) {
[properties addObject:[NSDictionary dictionaryWithObjectsAndKeys:object.name,@"text",
object.link,@"href", nil]];
NSString *imageUrlString = object.url.absoluteString;
[media addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"image",@"type",
imageUrlString,@"src",
object.link,@"href", nil]];
}
NSData *propertyData = [NSJSONSerialization dataWithJSONObject:properties
options:NSJSONWritingPrettyPrinted
error:nil];
NSString *propertiesString = [[NSString alloc] initWithData:propertyData
encoding:NSUTF8StringEncoding];
NSData *mediaData = [NSJSONSerialization dataWithJSONObject:media
options:NSJSONWritingPrettyPrinted
error:nil];
NSString *mediaString = [[NSString alloc] initWithData:mediaData
encoding:NSUTF8StringEncoding];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:myAppID, @"app_id",
link, @"link",
name, @"name",
caption, @"caption",
propertiesString, @"properties",
mediaString, @"media",
description, @"description", nil];
[FBRequestConnection startWithGraphPath:@"me/feed"
parameters:params
HTTPMethod:@"POST"
completionHandler:completionHandler];
Это только сообщение одного изображения, но мне нужно опубликовать все 5 из них.
ИЗМЕНИТЬ:
Мы уже размещаем 5 изображений в одном посте через janrain, участвуем в библиотеке, поэтому это выполнимо!
Ответы
Ответ 1
Вам нужно будет напрямую использовать API Facebook Connect: iOS SDK не предоставляет такую функциональность.
Вам следует взглянуть на раздел публикации Graph Photo API, который предлагает, чтобы этот URL-адрес загружал изображение (не забудьте запросить учетные данные publish_stream):
POST https://graph.facebook.com/USER_ID/photos
message=[optional description]
source=[the image data]
place=[optional image location]
С iOS Facebook Connect SDK, который даст нам этот вызов, если у вас есть экземпляр Facebook под названием facebook и экземпляр UIImage с именем image:
[facebook requestWithMethodName:@"/USER_ID/photos"
andParams:[NSDictionary dictionaryWithObjectsAndKeys:
UIImageJPEGRepresentation(image, 0.7), @"source",
@"My puppy is so cute!!!", @"message",
nil]
andHttpMethod:@"POST"
andDelegate:self];
Ответ 2
ok новая идея; как насчет того, чтобы вы отправили все пять из них в цикле, но вы сохраняете статус-текст и все остальное одинаковым. Разве не возможно, что facebook затем объединяет их в 1 сообщение?
Ответ 3
Facebook удалил несколько фотографий в сообщении некоторое время назад. когда вы смогли это сделать, люди создавали "баннеры", которые состояли нескольких снимков рядом. Теперь отображается только 1 фотография для любой стены.
Вы можете разместить больше фотографий, но по умолчанию они не будут уверены. Facebook добавит ссылку "больше", хотя они, возможно, покончили с это также.
Источник: Как опубликовать стеновое сообщение с 2 картинками
Таким образом, вы не сможете подавать горшки с несколькими изображениями.
Лучше всего объединить 5 изображений в одном изображении.
Ответ 4
Вы можете загружать несколько изображений в действие Open Graph, как описано здесь: https://developers.facebook.com/docs/opengraph/usergeneratedphotos/
Пример кода оттуда:
https://graph.facebook.com/me/nyccookbook:cook?
recipe=http://www.yourdomain.com/pizza.html&
image[0][url]=http://www.yourdomain.com/images/my_camera_pizza_pic.jpg&
image[0][user_generated]=true&
image[1][url]=http://www.yourdomain.com/images/my_camera_soda_pic_2.jpg&
image[1][user_generated]=true&
access_token=YOUR_ACCESS_TOKEN
Ответ 5
Я думаю, что пакетные запросы - это то, что вы ищете.
Из этого ссылка:
Если вашему приложению требуется доступ к значительным количествам данных за один проход - или вам нужно внести изменения в несколько объектов сразу, часто более эффективная партия ваших запросов, а не сделать несколько отдельных HTTP-запросов.
Чтобы включить это, Graph API поддерживает Batching. Пакетирование позволяет вам для передачи инструкций для нескольких операций в одном HTTP-запросе. Вы также можете указать зависимости между связанными операциями (описано в разделе ниже). Facebook будет обрабатывать каждый из ваших независимые операции параллельно и будут обрабатывать ваши зависимые операции последовательно. Как только все операции будут завершены, консолидированный ответ будет передан вам и HTTP соединение будет закрыто.
...
Загрузка двоичных данных
Двоичные данные могут быть указаны как часть части multipart/mime пакетный запрос API. API-интерфейс пакетного графика позволяет загружать несколько бинарные элементы как часть пакетного вызова. Для этого вам необходимо добавьте все двоичные элементы в виде вложений multipart/mime в ваш запрос и необходимость каждой операции ссылаться на свои двоичные элементы, используя свойство "attach_files" в операции. "Attach_files" свойство может принимать список имен вложений, разделенных запятыми, в своем значение.
Здесь ссылка в учебное пособие по созданию пакетных запросов с использованием iOS sdk.