2015-04-26 22 views
15

iOS của tôi là 8.1.2 và tôi đang sử dụng UIActivityViewController để chia sẻ trên mạng xã hội. tôi bấm vào một nút và cho phép UIActivityViewController để trình bàyFacebook không được hiển thị trong UIActivityViewController nhưng twitter có

- (IBAction)UIActivityTypeButtonClick:(id)sender { 

NSString* [email protected]"I am sharing this text"; 
NSArray* [email protected][text]; 
UIActivityViewController * activityVC=[[UIActivityViewController alloc]initWithActivityItems:sharedArray applicationActivities:nil]; 
[email protected][]; 
[self presentViewController:activityVC animated:YES completion:nil]; 
} 

Tôi nhận này

enter image description here

Tôi nhận nhắn, Twitter, Thư, WhatsApp và một nút Thêm.
Khi nhấp vào Thêm Tôi hiểu điều này.

enter image description here Ở đâu là FACEBOOK. Tôi có ứng dụng facebook trong iPhone của mình và nó được thiết lập với ID của tôi trong cài đặt. Nhưng facebook không bao giờ xuất hiện ở đây. Twitter có. Đây có phải là lỗi hay không? Xin gợi ý cho

Cảm ơn

Trả lời

18

Lần đầu tiên tôi thấy điều này khi Facebook cập nhật ứng dụng của họ vào ngày 24 tháng 4. Chia sẻ văn bản thuần túy lên Facebook không hoạt động miễn là ứng dụng Facebook được cài đặt. Sau khi bạn xóa nó, nó có sẵn một lần nữa.

Nếu bạn cố gắng chia sẻ URL hoặc hình ảnh cùng với văn bản thuần túy, bạn sẽ thấy Facebook làm tùy chọn nhưng trường văn bản sẽ trống. Hình ảnh hoặc URL sẽ đính kèm mà không có sự cố.

tôi đã đăng một dự án mẫu mà tái tạo vấn đề này trên github:

https://github.com/djr/UIActivityViewController-Facebook

Đây không phải là một câu trả lời, nhưng nó khá rõ ràng rằng vấn đề là do ứng dụng Facebook.

CHỈNH SỬA:

Nó không lý tưởng, nhưng tôi đã tạo ra cách giải quyết khác. Đừng quên rằng bạn sẽ cần phải đính kèm một hình ảnh hoặc một URL để làm việc này.

  1. Phát hiện xem người dùng đã cài đặt ứng dụng Facebook chưa. Nếu có, hãy cung cấp cho họ một số loại thông báo thông tin.

    BOOL facebookIsInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]]; 
    BOOL isUserLoggedInWithFacebook = [SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]; 
    
    if(isUserLoggedInWithFacebook && facebookIsInstalled) 
    { 
        // Explain that they have to copy and paste in order to share on Facebook 
    } 
    
  2. Tạo một lớp con của UIActivityItemProvider và ghi đè

    - (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType 
    { 
        NSString *stringToShare = @"string to share"; 
    
        if([activityType isEqualToString:UIActivityTypePostToFacebook] || 
         [activityType isEqualToString:@"com.facebook.Facebook.ShareExtension"] || 
         [activityType.lowercaseString rangeOfString:@"facebook"].length) 
         // Because who knows when they are going to change the activityType string? 
        { 
         // Automatically copy the text for them 
         [[UIPasteboard generalPasteboard] setString:stringToShare]; 
        } 
    
        return stringToShare; 
    } 
    
  3. Nói với người dùng rằng họ phải dán vào trường văn bản Facebook để chia sẻ.

  4. Đổ lỗi cho nó trên Facebook.

+0

Nhưng khi chúng tôi xóa ứng dụng fb thì làm sao chúng ta có thể chia sẻ trên fb? Ít bối rối? Bạn có thể vui lòng xây dựng !! Cảm ơn. –

+0

Tôi đã thử mẫu. Khi bị xóa Fb tôi đã nhận các ứng dụng fb trong activityviewcontroller. Nhưng điều đó có nghĩa gì? Nó sẽ được đăng ở đâu? Xin hãy giúp !! Cảm ơn –

+0

@Rajan Bạn có thể đăng nhập vào Facebook trong ứng dụng Cài đặt iOS. Nếu bạn đăng nhập ở đó và không có ứng dụng Facebook, ứng dụng Facebook không thể ngăn bạn gắn văn bản thuần túy vào bài đăng. Trong iOS 7 nó không có vẻ là một vấn đề. – djr

1
NSString* [email protected]"I am sharing this text"; 
NSURL *myWebsite = [NSURL URLWithString:@"http://www.website.com/"]; 
// UIImage * myImage =[UIImage imageNamed:@"myImage.png"]; 
NSArray* [email protected][text,myWebsite]; 
UIActivityViewController * activityVC=[[UIActivityViewController alloc]initWithActivityItems:sharedArray applicationActivities:nil]; 
NSArray *excludedActivities = @[]; 

activityVC.excludedActivityTypes=excludedActivities; 
[self presentViewController:activityVC animated:YES completion:nil]; 
+0

điều này có bao gồm FB trong UIActivityViewController hoặc loại trừ không? Tôi không có nội dung nào bị loại trừ. Kiểm tra mã của tôi trong câu hỏi –

+0

trong sharedArray vượt qua một đối số nhiều hơn để chia sẻ như NSURL hoặc UIImage và thử nó sẽ làm việc. –

+0

@ArpitLokwani tôi muốn chỉ chia sẻ văn bản chứ không phải URL hoặc hình ảnh nhưng không hoạt động .. –

1

Để hiển thị nút chia sẻ facebook bạn phải thêm một hình ảnh đến các mảng các hạng mục hoạt động ... Đây có thể là một lỗi về phía táo nhưng tôi đã không thấy bất kỳ radar mở về vấn đề này.

Cũng lưu ý trên văn bản iOS 8.3 không thể được thêm vào facebook vì một lý do nào đó. khi thêm văn bản, bạn chỉ được hiển thị cho một trường văn bản trống.

UIImage *image = [UIImage imageNamed:@"__some_image__file"]; 

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[image] 
                        applicationActivities:nil]; 

[self presentViewController:activityViewController animated:YES completion:nil]; 
3

Tôi xác nhận những gì djr được báo cáo - nếu bạn có văn bản ứng dụng FB không còn được chia sẻ nữa. Tôi đã xóa ứng dụng FB và giờ đây chia sẻ cả văn bản và hình ảnh hoạt động.

+0

Nhưng khi chúng ta xóa ứng dụng fb thì làm thế nào chúng ta có thể chia sẻ trên fb? Ít bối rối? Bạn có thể vui lòng xây dựng !! Cảm ơn. –

+0

Suy nghĩ to: Sự cố có thể là 'activityType' Facebook gửi cho bạn khi bạn có ứng dụng bây giờ giống như 'com.facebook.extensions.post'. Nó từng là 'UIActivityTypePostToFacebook' (và vẫn là trường hợp nếu bạn không cài đặt FB). Tương tự cho Gmail, v.v. – Webdevotion

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