【问题标题】:Facebook is not shown in UIActivityViewController but twitter doesFacebook 未显示在 UIActivityViewController 中,但 twitter 显示
【发布时间】:2015-04-26 15:10:28
【问题描述】:

我的 iOS 是 8.1.2,我正在使用 UIActivityViewController 进行社交分享。 我单击一个按钮并允许 UIActivityViewController 呈现

- (IBAction)UIActivityTypeButtonClick:(id)sender {

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

我收到了

我收到 MessageTwitterMailWhatsApp更多 > 按钮。
点击更多我明白了。

FACEBOOK 在哪里。我的 iPhone 中有 Facebook 应用程序,并且在设置中也使用我的 ID 进行了设置。但是facebook从来没有出现在这里。推特确实如此。这是一个错误还是什么?请推荐

谢谢

【问题讨论】:

    标签: ios objective-c facebook ios8 uiactivityviewcontroller


    【解决方案1】:

    我第一次看到这一点是在 4 月 24 日 Facebook 更新他们的应用程序时。只要安装了 Facebook 应用程序,就无法与 Facebook 共享纯文本。删除后,它再次可用。

    如果您尝试将 URL 或图像与纯文本一起共享,您将看到 Facebook 作为一个选项,但文本字段将为空白。图片或 URL 将毫无问题地附加。

    我在 github 上发布了一个重现此问题的示例项目:

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

    这不是答案,但很明显问题是由 Facebook 应用程序引起的。

    编辑:

    这并不理想,但我创建了一个解决方法。不要忘记,您需要附加图片或 URL 才能使其正常工作。

    1. 检测用户是否安装了 Facebook 应用。如果他们这样做,那么给他们某种类型的信息性消息。

      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. 创建 UIActivityItemProvider 的子类并覆盖

      - (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. 告诉用户他们必须粘贴到 Facebook 文本字段才能分享。

    4. 把责任归咎于 Facebook。

    【讨论】:

    • 但是当我们删除 fb 应用时,我们如何在 fb 上分享呢?有点混乱?能不能详细点!!谢谢。
    • 我试了样例。删除 Fb 后,我在 activityviewcontroller 中获得了 fb 应用程序。但是,这是什么意思?它将在哪里发布?请帮助!谢谢
    • @Rajan 您可以在 iOS 设置应用程序中登录 Facebook。如果您在此处登录并且没有 Facebook 应用程序,则 Facebook 应用程序无法阻止您将纯文本附加到帖子中。在 iOS 7 中,这似乎不是问题。
    【解决方案2】:

    我确认 djr 报告的内容 - 如果您的 FB 应用程序文本不再共享。我删除了 FB 应用程序,现在共享文本和图像作品。

    【讨论】:

    • 但是当我们删除 fb 应用时,我们如何在 fb 上分享呢?有点混乱?能不能详细点!!谢谢。
    • 大声思考:问题可能是当您拥有该应用程序时,Facebook 发送给您的activityType 现在类似于com.facebook.extensions.post。它曾经是UIActivityTypePostToFacebook(如果您没有安装FB,仍然是这种情况)。 Gmail 等也一样。
    【解决方案3】:

    Facebook 希望您使用他们的 SDK。他们阻止了设置初始文本的能力。 (不知道如何。)在类似的帖子中查看我的答案:

    UIActivityViewController for Facebook not Showing Default Text

    所需的解决方案(来自 Facebook)是使用他们的 SDK。

    【讨论】:

      【解决方案4】:
      NSString* text=@"I am sharing this text";
      NSURL *myWebsite = [NSURL URLWithString:@"http://www.website.com/"];
      //  UIImage * myImage =[UIImage imageNamed:@"myImage.png"];
      NSArray* sharedArray=@[text,myWebsite];
       UIActivityViewController * activityVC=[[UIActivityViewController alloc]initWithActivityItems:sharedArray applicationActivities:nil];
      NSArray *excludedActivities = @[];
      
      activityVC.excludedActivityTypes=excludedActivities;
      [self presentViewController:activityVC animated:YES completion:nil];
      

      【讨论】:

      • 这会在 UIActivityViewController 中包含 FB 还是排除?我在排除活动中没有任何内容。检查我有问题的代码
      • 在 sharedArray 中再传递一个参数来共享,如 NSURL 或 UIImage 并尝试它应该可以工作。
      【解决方案5】:

      要显示 facebook 分享按钮,您必须将图像添加到活动项目数组中......这可能是苹果方面的一个错误,但我还没有看到任何关于这个问题的公开雷达。

      另外请注意,由于某种原因,无法将 iOS 8.3 文本添加到 facebook。添加文本时,您只会看到一个空白文本字段。

      UIImage *image = [UIImage imageNamed:@"__some_image__file"];
      
      UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[image]
                                                                                           applicationActivities:nil];
      
      [self presentViewController:activityViewController animated:YES completion:nil];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-28
        • 2014-03-22
        • 1970-01-01
        • 2013-09-30
        • 2015-07-07
        • 1970-01-01
        相关资源
        最近更新 更多