Переопределите UIActivityViewController, чтобы переключиться на приложение Facebook (для открытых графических историй)

Существует два вида истории в Facebook: стандартное содержание «ссылок» или более богатые истории Open Graph.

iOS предоставляет UIActivityController , который позволяет вам делиться контентом «link», но не позволяет выполнять совместное использование Open Graph. Для этого я использую FBSDKShareKit , который выполняет это, переключаясь на приложение Facebook, если оно установлено).

Я хочу лучше всего из двух миров: представить UIActivityController , и всякий раз, когда выбирается Facebook (см. Изображение), я хочу, чтобы он переключился на приложение Facebook. Это возможно?

Кнопка Facebook

One Solution collect form web for “Переопределите UIActivityViewController, чтобы переключиться на приложение 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]; 

Теперь реализуем метод -facebookItemWasSelected в вашем UIViewController и скажите ему, что он реализует FacebookActivityItemDelegate. В этом методе просто отпустите ActivityViewController и реализуйте свою собственную форму с помощью FacebookSDK!

  • Разве Facebook нарушил UIActivityViewController на iOS с последним обновлением приложения?
  • iOS 6, как Сообщения, а не фотографии (UIActivityViewController и UIDocumentInteractionController)
  • настройка UIActivityViewController
  • iOS: как поделиться текстом и изображением в социальных сетях?
  • UIActivityViewController с NSURL для аудиофайла показывает только airdrop
  • UIActivityViewController не показывает FB и Twitter на iOS 7
  • Обмен через Facebook через UIActivityViewController не показывает все элементы активности в диалоговом окне общего доступа
  • Отчеты UIActivityViewController «Таймер выключения удаленного контроллера»
  • iOS: предупреждение "попытка представить ViewController, чей вид не находится в иерархии окон"
  • iOS 11 UIActivityViewController завершает печать PDF
  • UIActivityViewController исключает всю UIActivityCategoryAction
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.