无法从[UIActivityViewController excludedActivityTypes]中排除UIActivityTypePostToFacebook。

30

我希望创建一个 UIActivityViewController,其中会排除一些原生分享功能,包括 Facebook 和 Twitter 的分享。但是 Facebook 分享仍然作为一个 ShareExtension 可用。

我创建了以下内容:

activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems  applicationActivities:applicationActivities];

通过设置排除的活动类型,将Facebook排除在外。

activityViewController.excludedActivityTypes = @[
                                                 UIActivityTypeAddToReadingList,
                                                 UIActivityTypeAssignToContact,
                                                 UIActivityTypePrint,
                                                 UIActivityTypeSaveToCameraRoll,
                                                 UIActivityTypeCopyToPasteboard,
                                                 UIActivityTypeAirDrop,
                                                 UIActivityTypePostToFacebook,
                                                 UIActivityTypePostToTwitter
                                                 ];

在我的iPhone上运行时,尽管已经被排除,Facebook图标仍然出现。

调查发现,活动控制器的完成处理程序返回activityType = com.facebook.Facebook.ShareExtension而不是UIActivityTypePostToFacebook。此外,在活动控制器中选择更多按钮时,Facebook有一个切换选项,就像其他使用共享约定的应用程序一样。

为什么Facebook在这里使用shareExtention,而Twitter则没有,在使用排除活动时为什么无法将其排除?

注意:我已在几台设备上进行了测试,但该问题仅存在于运行8.1.3的某个设备上。

谢谢


在iOS 8.1.1上出现了相同的问题。看起来可能是苹果端的错误。 - ilyashev
看起来你正在查看 Facebook 分享扩展(这是 Facebook iOS 应用程序的一部分)。你是否已安装 Facebook 应用程序(以及哪个版本)? - amudi
是的,这是Facebook分享扩展。实际上我在我的问题中提到了它。但关键是,如果Facebook使用分享扩展,那么就不可能禁用Facebook分享,因此: excludedActivityTypes = @[UIActivityTypePostToFacebook, etc. 是无法使用的。 - Seamus
我正在运行Facebook 30.0版本,更新于5月7日。(我允许自动更新) - Seamus
将com.facebook.Facebook.ShareExtension添加到excludedActivityTypes中是否有帮助? - Xcoder
4
我的应用程序中有类似的情况。看起来在iOS 8.3上已经修复,在iOS <= 8.2上会出现。还在调查,但很确定@ilyashev是正确的,这是一个苹果的错误。 - charmingToad
2个回答

5
尝试这种方式。
// sharing items in an array lets say sharingItems
NSArray *sharingItems = @[@"hello", @"how", @"are", @"You."];

//making UIActivityViewController object lets say avc
UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];

//exclude UIActivityTypePostToFacebook 
avc.excludedActivityTypes = @[UIActivityTypePostToFacebook];

//presenting UIActivityViewController in our case avc
[self presentViewController:avc animated:YES completion:nil];

请查看下面的图片,Facebook未包含在内

In image Facebook not included

当添加 avc.excludedActivityTypes = @[UIActivityTypePostToFacebook]; 后,Facebook 再次出现在分享选项中。

When commenting  avc.excludedActivityTypes = @[UIActivityTypePostToFacebook]; Facebook again becomes visible in share option


0
//Hope this helps . This is how it is done in Swift 3.

  //  When Including the FB Option the code is as follow:

      func otherSharing() {

            let activityItem: [AnyObject] = [returnFinalImage() as AnyObject]


            let avc = UIActivityViewController(activityItems: activityItem as [AnyObject], applicationActivities: nil)
             avc.excludedActivityTypes = [UIActivityType.addToReadingList, UIActivityType.assignToContact, UIActivityType.print, UIActivityType.saveToCameraRoll, UIActivityType.copyToPasteboard, UIActivityType.airDrop, UIActivityType.postToTwitter]
            self.present(avc, animated: true, completion: nil)
        }

    //When Excluding the FB Option the code is as follow:

        func otherSharing() {

            let activityItem: [AnyObject] = [returnFinalImage() as AnyObject]


            let avc = UIActivityViewController(activityItems: activityItem as [AnyObject], applicationActivities: nil)
             avc.excludedActivityTypes = [UIActivityType.addToReadingList, UIActivityType.assignToContact, UIActivityType.print, UIActivityType.saveToCameraRoll, UIActivityType.copyToPasteboard, UIActivityType.airDrop, UIActivityType.postToFacebook, UIActivityType.postToTwitter]
            self.present(avc, animated: true, completion: nil)
        }

    //I have Added Screen shot : [![enter image description here][1]][1]


      [1]: https://istack.dev59.com/IGzqC.webp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接