簡體   English   中英

覆蓋UIActivityViewController切換到Facebook應用程序(用於Open Graph故事)

[英]Override UIActivityViewController to switch out to Facebook app (for Open Graph stories)

有兩種Facebook故事:標准的“鏈接”內容,或更豐富的Open Graph故事。

iOS提供了UIActivityController ,它允許您共享“鏈接”內容,但不允許您執行Open Graph共享。 為此,我使用FBSDKShareKit ,如果安裝了Facebook應用程序,則可以實現此目的。

我想要兩全其美:提供一個UIActivityController ,每當選擇Facebook時(見圖),我希望它切換到Facebook應用程序。 這可能嗎?

Facebook按鈕

有可能:)只需創建一個新類 - 讓我們說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實現自定義表單!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM