2016-05-03 22 views
5

Sono quasi 2 giorni che cerco di trovare una soluzione al mio problema ma non ho avuto successo, voglio condividere GIF (immagine animata) su Facebook, Twitter, Email, WhatsApp, utilizzando "UIActivityViewController".iOS Condividi GIF (immagine animata) non funzionante

Questo è il mio codice:

NSURL *imagePath = [NSURL URLWithString:@"http://sth.gif"]; 
NSData *animatedGif = [NSData dataWithContentsOfURL:imagePath]; 

NSArray *sharingItems = [NSArray arrayWithObjects: animatedGif,stringToShare, nil]; 
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil]; 

quando condivido in Email suo animato e il suo lavoro perfetto, ma a Twitter, Facebook, WhatsApp Gif non sono animato e la sua come un'immagine ... ho già leggi tutte le domande di overflow dello stack relative allo stesso problema Come this o this o this ma non funziona per me.

risposta

3

di base Finora nei giorni di ricerca ha scoperto che:

TWITTER: Per condividono una GIF su twitter ha dovuto usare Twitter API e creare una richiesta di più parti per raggiungere l'obiettivo e il suo lavoro molto bene.

FACEBOOK: ho fatto condividere alcune GIF su Facebook utilizzando FACEBOOKSHAREKIT, ma non so il motivo per cui a volte Gif sono animate, a volte no.

INSTAGRAM: Per condividere gif su Instagram dovuto convertire GIF in MP4 (o qualsiasi altri formati video accettati da Instagram) quindi salvarlo nel rullino fotografico poi condividerlo, è poco contorto, ma il suo lavoro molto bene.

WHATSAPP: Non supporta affatto GIF.

Per fare tutto ciò non è stato possibile utilizzare "UIActivityViewController", quindi ho deciso di creare una pagina di condivisione personalizzata. se qualcuno sa qualcosa da aggiungere qui, per aiutare me e altri per favore dimmi (specialmente su Facebook). Grazie in anticipo

1

incontrato il problema simile e su Google un sacco ma ancora non una soluzione perfetta, la migliore mi è venuta è qui:

Usa UIActivityItemProvider ed estendere - (id) item {} per differenti UIActivityType:

Twitter: la condivisione di Twitter di UIActivityViewController predefinita non lo supporta ancora che lo "ridimensiona" come un JPG fermo. Tuttavia in qualche modo funziona per GIF meno di 100kb (testato in iOS 9) e non so perché. Pertanto, devo usare SLRequest per caricare la GIF come insegnata in here. Quando SLRequest viene eseguito e restituito, ignorare UIActivityViewController. Lo svantaggio di questo non è un foglio di condivisione di anteprima e gli utenti non possono più digitare il proprio messaggio.

Facebook: In realtà è molto più semplice!Basta caricare il GIF in Giphy, quindi fornire l'URL Giphy a UIActivityViewController posto del contenuto dei file, Facebook lo riconoscerà e mostrare l'immagine GIF animata

- (id)item 
{  
    if ([self.activityType isEqualToString:UIActivityTypePostToFacebook]) { 
     // Upload to Giphy 
     ... 
     return [NSURL URLWithString:giphyURL]; 
    } 
    if ([self.activityType isEqualToString:UIActivityTypePostToTwitter]) { 
     // Use SLRequest to share instead 
     ... 
     // Dismiss the UIActivityViewController (I am using Unity) 
     [UnityGetGLViewController() dismissViewControllerAnimated:NO completion: NULL]; 
     return nil; 
    } 
} 

codice completo è nel mio GitHub, sono in realtà un newb iOS così alcuni esperti si prega di me e il codice, se possibile

+0

la soluzione per Facebook è buono, purtroppo fino ad ora questo è l'unico modo per condividere gif su facebook. – Sattar

0

// Condividi GIF file corretto: WhatsApp

NSURL *imageUrl =[self.ImageArray objectAtIndex:currentPhotoIndex]; 
    NSString *path=imageUrl.absoluteString; 
    NSArray *strings = [path componentsSeparatedByString:@"/"]; 
    NSString *mygif=[strings objectAtIndex:strings.count-1]; 

    NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *dataPath = [documentsPath stringByAppendingPathComponent:@"/MrHRamani"]; 

    NSString *filePath = [dataPath stringByAppendingPathComponent:mygif]; 

    NSURL *urll=[NSURL fileURLWithPath:filePath]; 
    NSLog(@"imag %@",imageUrl); 
    self.documentationInteractionController.delegate = self; 
    self.documentationInteractionController.UTI = @"net.whatsapp.image"; 
    self.documentationInteractionController = [self setupControllerWithURL:urll usingDelegate:self]; 
    [self.documentationInteractionController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES]; 
+1

funziona davvero ... ??? –

+0

sì codice di lavoro ,,, –

+1

ok signore grazie ... –

Problemi correlati