ios - 覆盖 UIActivityViewController 以切换到 Facebook 应用程序(用于 Open Graph 故事)

标签 ios facebook facebook-opengraph uiactivityviewcontroller

有两种 Facebook 故事:标准“链接”内容或更丰富的 Open Graph 故事。

iOS 提供了 UIActivityController,它允许您共享“链接”内容,但不允许您执行 Open Graph 共享。为此,我使用了 FBSDKShareKit,它通过切换到已安装的 Facebook 应用程序来实现这一点。

I want best of both worlds, though: present a UIActivityController, and whenever Facebook is selected (see image), I want it to switch out to the Facebook app.这可能吗?

Facebook button

最佳答案

这是可能的 :) 只需创建一个新类 - 让我们说 FacebookActivityItem:

// .h
@protocol FacebookActivityItemDelegate <NSObject>
- (void)facebookItemWasSelected;
@end

@interface FacebookActivityItem : NSObject<UIActivityItemSource>
@property (nonatomic, weak) id <FacebookActivityItemDelegate> delegate;
@end

// .m
@implementation FacebookActivityItem

/// called to determine data type. only the class of the return type is consulted. it should match what -itemForActivityType: returns later
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
    return UIActivityTypePostToFacebook;
}

/// called to fetch data after an activity is selected. you can return nil.
- (nullable id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {

    if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {

        if (self.delegate != nil) {
            [self.delegate facebookItemWasSelected];
        }
    }

    return nil;
}

@end

现在在您的 UIViewController 中,将其实例添加到 UIActivityViewController:

FacebookActivityItem *fbActivityItem = [FacebookActivityItem new];
fbActivityItem.delegate = self;

self.activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[fbActivityItem] applicationActivities:nil];

现在在您的 UIViewController 中实现方法 -facebookItemWasSelected 并告诉它它实现了 FacebookActivityItemDelegate。在这个方法中,只需关闭 activityViewController 并使用 FacebookSDK 实现您的自定义表单!

关于ios - 覆盖 UIActivityViewController 以切换到 Facebook 应用程序(用于 Open Graph 故事),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33805158/

相关文章:

ios - 如何修复不为 iOS 构建的 React Native App

ios - 来自 App Scoped ID with Objective-C 的 Facebook 个人资料图片和名称

facebook - 如何使用应用程序访问 token 在 Rails 中发布 OpenGraph 操作

android - 在 WhatsApp 中显示链接的缩略图 || OG :image meta-tag doesn't work

ios - 在 iOS 的后台线程中绘图

objective-c - 在自定义 NSError 上的类型为 'code' 的对象上找不到属性 'NSError *'

ios - 如何在 iOS 中实现视频 DRM

javascript - Facebook Marketing API 广告素材

facebook - 如何强制 Facebook 访问 token 过期?

Facebook Open Graph Story 自定义操作不断被拒绝 - 请提供建议吗?