【问题标题】:can't exclude UIActivityTypePostToFacebook from [UIActivityViewController excludedActivityTypes]无法从 [UIActivityViewController excludeActivityTypes] 中排除 UIActivityTypePostToFacebook
【发布时间】:2015-07-16 16:47:38
【问题描述】:

我希望创建一个UIActivityViewController,它将排除一些本地共享功能,包括 Facebook 和 Twitter 共享。但 Facebook 分享仍可作为 ShareExtention 使用。

我创建以下内容:

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 上有同样的问题。似乎它可能是一个苹果方面的错误。
  • 您似乎看到了 Facebook 分享扩展程序(它是 Facebook iOS 应用程序的一部分)。您是否安装了 Facebook 应用(以及哪个版本)?
  • 是的,它是 Facebook 分享扩展。我实际上在我的问题中引用了这个。但关键是,如果 Facebook 使用共享扩展,则无法禁用 Facebook 共享,因此:excludedActivityTypes = @[UIActivityTypePostToFacebook 等不可用。
  • 我正在运行 Facebook 版本 30.0,于 5 月 7 日更新。 (我允许自动更新)
  • 我的应用也有类似的情况。看起来在 iOS 8.3 上它是固定的,在 iOS

标签: ios objective-c facebook uikit uiactivityviewcontroller


【解决方案1】:
//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://i.stack.imgur.com/IGzqC.jpg

【讨论】:

    【解决方案2】:

    试试这个方法

    // 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 不包括在内

    当评论avc.excludedActivityTypes = @[UIActivityTypePostToFacebook]; Facebook 再次在分享选项中可见

    【讨论】:

      猜你喜欢
      • 2018-03-14
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多