Переопределите 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!

  • Можно ли исключить кнопку «Больше» в UIActivityViewController?
  • iOS ActivityView Twitter Неправильно изменяет длину URL-адреса
  • Тема для пользовательской UIActivity
  • Определите, какое расширение было использовано
  • iOS: предупреждение "попытка представить ViewController, чей вид не находится в иерархии окон"
  • «Назначить контакт» в UIActivityViewController не работает ...!
  • UIActivityViewController с NSURL для аудиофайла показывает только airdrop
  • Вернуть текст, URL и изображение в UIActivityItemProvider
  • Отобразить UIActivityViewController в ActionSheet not Popover
  • Как попасть в меню общего доступа?
  • Похоже, что Apple неправильно конвертирует строки в UIActivityViewController
  • Interesting Posts

    Ошибка нарушения правил в Xmpp ios?

    Прокрутка UICollectionView блокирует основной поток

    Как отлаживать «сообщение, отправленное на освобожденный экземпляр» в Xcode4?

    Фоновое изображение внешнего вида UINavigationBar, дублированное и размытое в iOS 7.1

    Полнотекстовый поиск на iOS5, iOS6 Unicode (русский, японский, китайский, корейский)

    Сделать UILabel высотой ноль, если метка пуста / раскадровки

    Ресурсы, расположенные в отдельном пакете, видимые в IB, но не во время выполнения

    Какой тип имеет диапазон для цикла?

    Как оживить текст uilabel между 3 значениями

    UIActivityView прикрепить файл к электронной почте

    Сравнение арабских строк со специальными символами ios

    Программно изменить название UIButton, название которого было установлено в IB, как указано

    Trigger.io Forge 2.2.0 iOS "Непубличные API"

    Ячейки UITableView освобождаются, когда не отображаются

    Настройка панорамирования в OpenAL (iOS)

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.