2016-05-03 25 views
5

Đã gần 2 ngày mà tôi đang tìm kiếm giải pháp cho vấn đề của mình nhưng tôi đã không thành công, tôi muốn chia sẻ GIF (hình ảnh động) trên Facebook, Twitter, Email, WhatsApp, sử dụng "UIActivityViewController".iOS Share GIF (ảnh động) không hoạt động

Đây là mã của tôi:

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

Khi tôi chia sẻ trong email của mình sinh động và làm việc của mình hoàn hảo, nhưng trong Twitter, Facebook, Whatsapp GIF không động và nó giống như một hình ảnh ... Tôi đã đọc tất cả các câu hỏi về Stack-overflow về cùng một vấn đề Giống như this hoặc this hoặc this nhưng nó không hoạt động đối với tôi.

Trả lời

3

Cho đến nay trên cơ sở nghiên cứu ngày phát hiện ra rằng:

TWITTER: Đối với cổ phiếu một GIF trên twitter đã phải sử dụng twitter API và tạo một yêu cầu nhiều phần dữ liệu để đạt được mục tiêu và làm việc của mình rất tốt.

FACEBOOK: Tôi đã chia sẻ một số GIF trên Facebook sử dụng FACEBOOKSHAREKIT, nhưng tôi không biết lý do tại sao đôi khi GIFs đang hoạt hình, đôi khi không.

INSTAGRAM: Để chia sẻ gif trên Instagram phải chuyển đổi GIFS thành MP4 (hoặc bất kỳ định dạng video nào khác được Instagram chấp nhận) rồi lưu nó vào thư viện ảnh rồi chia sẻ, Nó hơi xoắn nhưng hoạt động rất tốt.

WHATSAPP: Nó không hỗ trợ GIF.

Để thực hiện tất cả điều này, tôi không thể sử dụng "UIActivityViewController", vì vậy, hãy quyết định tạo trang chia sẻ tùy chỉnh. nếu ai biết điều gì đó để thêm vào đây, để giúp tôi và những người khác, hãy nói cho tôi biết (đặc biệt là về Facebook). Cảm ơn trước

1

gặp vấn đề tương tự và đã google rất nhiều nhưng vẫn không phải là một giải pháp hoàn hảo, tốt nhất mà tôi đã đưa ra là ở đây:

Sử dụng UIActivityItemProvider và mở rộng - (id) mục {} cho UIActivityType khác nhau:

Twitter: Chia sẻ Twitter UIActivityViewController mặc định chưa hỗ trợ tính năng này sẽ "giảm tỷ lệ" dưới dạng JPG tĩnh. Tuy nhiên bằng cách nào đó nó hoạt động cho GIF ít hơn 100kb (thử nghiệm trong iOS 9) và tôi không biết tại sao. Vì vậy, tôi phải sử dụng SLRequest để tải lên GIF như được dạy trong here. Khi SLRequest được thực hiện và trả về, loại bỏ UIActivityViewController. Nhược điểm của điều đó là không có bảng chia sẻ xem trước và người dùng không thể nhập tin nhắn của riêng họ nữa.

Facebook: Nó thực sự dễ dàng hơn nhiều!Chỉ cần tải lên GIF để Giphy, sau đó cung cấp URL Giphy để UIActivityViewController thay vì các nội dung tập tin, Facebook sẽ nhận ra nó và hiển thị các ảnh GIF

- (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; 
    } 
} 

mã đầy đủ là trong GitHub của tôi, tôi thực sự là một newb iOS nên một số chuyên gia hãy sửa lại cho tôi và mã nếu có thể GIF file

+0

giải pháp của bạn cho facebook là tốt, thật không may cho đến nay đây là cách duy nhất để chia sẻ gifs trên facebook. – Sattar

0

// Chia sẻ: 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

là nó thực sự làm việc ... ??? –

+0

có mã số làm việc ,,, –

+1

ok sir thank you ... –

Các vấn đề liên quan