2012-09-11 9 views
17

Sto provando a postare nel feed dell'utente qualcosa di simile (inizialmente mostra solo un'immagine ma quando fai clic su "mostra altro" vedi tutte e cinque immagini)Come allegare 5 immagini a un post di Facebook con Facebook ios sdk 3.0

Post with 5 images

il mio codice simile a questo:

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]; 

questo solo messaggi un'immagine, ma ho bisogno di tutti i post 5 di loro.

MODIFICA: Stiamo già pubblicando 5 immagini in un post attraverso la libreria di janrain engagement, quindi è fattibile!

+2

Combina 5 immagini per uno poi inviare l'immagine in fb –

+0

Ogni immagine ha un URL diverso per puntare al ordina così c'è n o punto nel combinarli con un'immagine per me. – Moxy

+0

È lo screenshot di un post esistente su Facebook - o è solo il tuo mock-up di come vuoi che assomigli? – CBroe

risposta

0

ok nuova idea; che ne dici di mandarli tutti e cinque in un ciclo, ma tu mantenga il testo di stato e tutto il resto lo stesso. Non è possibile che Facebook li combini in 1 post?

+0

Ho bisogno che siano cliccabili con diversi URL su Facebook – Moxy

+1

ah ok, ecco perché non puoi combinarli. hmm proverò a guardarlo –

+0

ok nuova idea; che ne dici di mandarli tutti e cinque in un ciclo, ma tu mantenga il testo di stato e tutto il resto lo stesso. Non è possibile che Facebook li combini in 1 post? –

0

Facebook ha sparato con più immagini in un post qualche tempo fa. Quando sei stato in grado di farlo, , le persone creavano "banner" che consistevano nello di più immagini affiancate. Ora viene visualizzato solo 1 nella foto per qualsiasi post sul muro.

È possibile inviare più immagini, ma non sono sicure per impostazione predefinita. Facebook aggiungerà un link "altro", anche se potrebbe aver eliminato anche .

Fonte: How to publish a wall post with 2 pictures

Quindi non sarà in grado di alimentare vasi con più immagini. Un modo migliore è combinare 5 immagini in un'immagine.

+0

In questo momento è possibile poiché è possibile generarlo tramite la libreria Engage (non sappiamo come lo fanno). Ma stiamo migrando a Facebook iOS SDK quindi ho bisogno di un modo per farlo. – Moxy

+0

La biblioteca di Facebook non lo consente ora. Guarda come la libreria Engage sta facendo questo. Può essere che stanno facendo un'immagine da 5 immagini. Ma ho usato questa libreria. Quindi non ne so molto. –

+0

Ogni immagine in quel post è cliccabile e ha un URL diverso quindi non è un'immagine. Sono 5! Engage fornisce un'API diversa, quindi non posso sapere come ottenerlo. – Moxy

0

È possibile caricare più immagini in un'azione Open Graph, come descritto qui: https://developers.facebook.com/docs/opengraph/usergeneratedphotos/

codice di esempio da lì:

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 
+0

Questo è per le azioni non per i post. – Moxy

+0

corretto! Sebbene Open Graph sia un buon approccio a lungo termine per farlo in modi sempre più configurabili. –

+0

Abbiamo già implementato diverse azioni, ma abbiamo quel caso in cui abbiamo bisogno di un semplice feed post con azioni diverse. E dal momento che usiamo Engage (lo usiamo ancora sul sito web) per farlo, vogliamo farlo usando il sdk. – Moxy

0

Penso richieste lotti sono quello che stai cercando.

Da questo link:

Se la vostra applicazione richiede la possibilità di accedere a una notevole quantità di dati in un go unico - o è necessario apportare modifiche a più oggetti in una sola volta, è spesso più efficace batch le query anziché effettuare più richieste HTTP individuali.

Per abilitare questo, l'API Graph supporta Batching. Batching consente a di passare istruzioni per diverse operazioni in una singola richiesta HTTP. È anche possibile specificare le dipendenze tra le operazioni correlate (descritto in una sezione seguente). Facebook elaborerà ognuna delle tue operazioni indipendenti in in parallelo e elaborerà le tue operazioni dipendenti in modo sequenziale. Una volta completate tutte le operazioni, verrà restituita una risposta consolidata e la connessione HTTP verrà chiusa.

...

Caricamento di dati binari

dati binari possono essere specificati come parte della porzione multipart/MIME richiesta lotto API. L'API grafico batch consente di caricare più elementi binari come parte di una chiamata batch. Per fare ciò, è necessario aggiungere tutti gli elementi binari come allegati multipart/mime alla richiesta e ogni operazione deve fare riferimento ai relativi elementi binari utilizzando la proprietà "attached_files" nell'operazione. La proprietà "attached_files" può contenere un elenco separato da virgole di nomi di allegati nel suo valore .

Ecco un link in un tutorial per la creazione di richieste batch utilizzando il sdk iOS.

1

È necessario utilizzare direttamente l'API di Facebook Connect: l'SDK di iOS non espone questo tipo di funzionalità.

Si dovrebbe avere uno sguardo alla sezione Pubblicazione del Graph Photo API che suggerisce questo URL per caricare un'immagine (non dimenticate di chiedere per la credenziale publish_stream):

POST https://graph.facebook.com/USER_ID/photos 

message=[optional description] 
source=[the image's data] 
place=[optional image's location] 

Con iOS Facebook Connect SDK che ci darebbe questa chiamata, data si dispone di un Facebook un'istanza denominata facebook e un'istanza UIImage chiamato immagine:

[facebook requestWithMethodName:@"/USER_ID/photos" 
         andParams:[NSDictionary dictionaryWithObjectsAndKeys: 
           UIImageJPEGRepresentation(image, 0.7), @"source", 
           @"My puppy is so cute!!!", @"message", 
           nil] 
        andHttpMethod:@"POST" 
        andDelegate:self];