Я пытаюсь получить UIActivityViewController для представления только вариантов для Facebook, Twitter и Instagram. Пока что я сделал:
let shareText = "Hello, world!"
let image = UIImage(named: "TheImage")
let activityViewController = UIActivityViewController(activityItems: [shareText,image], applicationActivities: nil)
activityViewController.excludedActivityTypes = [UIActivityType.addToReadingList,
UIActivityType.airDrop,
UIActivityType.assignToContact,
UIActivityType.copyToPasteboard,
UIActivityType.mail,
UIActivityType.message,
UIActivityType.openInIBooks,
UIActivityType.print,
UIActivityType.saveToCameraRoll
]
present(activityViewController, animated: true, completion: {})
Но UIActivityViewController по-прежнему дает мне нежелательные варианты.
Я также думал получить и подойти с NSExtensionItem, но я не уверен в этом.
Спасибо





Есть вариант, доступный для Facebook и Twitter, вам нужно просто добавить excludedActivityTypes. Вы упустили это.
Опция Instagram по-прежнему недоступна для типов активности
let image = UIImage(named: "TheImage")
let activityViewController = UIActivityViewController(activityItems: [shareText,image], applicationActivities: nil)
activityViewController.excludedActivityTypes = [.addToReadingList,
.airDrop,
.assignToContact,
.copyToPasteboard,
.mail,
.message,
.openInIBooks,
.print,
.saveToCameraRoll,
.postToWeibo,
.copyToPasteboard,
.saveToCameraRoll,
.postToFlickr,
.postToVimeo,
.postToTencentWeibo,
.markupAsPDF
]
present(activityViewController, animated: true, completion: {})
Я надеюсь, что это поможет вам.
Доступен следующий список типов действий.
extension UIActivityType {
@available(iOS 6.0, *)
public static let postToFacebook: UIActivityType
@available(iOS 6.0, *)
public static let postToTwitter: UIActivityType
@available(iOS 6.0, *)
public static let postToWeibo: UIActivityType // SinaWeibo
@available(iOS 6.0, *)
public static let message: UIActivityType
@available(iOS 6.0, *)
public static let mail: UIActivityType
@available(iOS 6.0, *)
public static let print: UIActivityType
@available(iOS 6.0, *)
public static let copyToPasteboard: UIActivityType
@available(iOS 6.0, *)
public static let assignToContact: UIActivityType
@available(iOS 6.0, *)
public static let saveToCameraRoll: UIActivityType
@available(iOS 7.0, *)
public static let addToReadingList: UIActivityType
@available(iOS 7.0, *)
public static let postToFlickr: UIActivityType
@available(iOS 7.0, *)
public static let postToVimeo: UIActivityType
@available(iOS 7.0, *)
public static let postToTencentWeibo: UIActivityType
@available(iOS 7.0, *)
public static let airDrop: UIActivityType
@available(iOS 9.0, *)
public static let openInIBooks: UIActivityType
@available(iOS 11.0, *)
public static let markupAsPDF: UIActivityType
}
Ооо, да. Извините .. По недоразумению обновлю ответ.
@ReimondHill, пожалуйста, проверьте сейчас. Я обновил свой ответ
яблоко обеспечивает поддержку некоторых из UIActivityTypes по умолчанию, которые включают в себя как Facebook, так и Twitter в соответствии с вашими требованиями.
Вы можете получить полный список UIActivityTypes здесь: https://developer.apple.com/documentation/uikit/uiactivitytype
По умолчанию все UIActivityTypes появляются в UIActivityController. Действия, которые вы не хотите отображать в UIActivityController, должны быть добавлены в exclude list, т. Е.
activityViewController.excludedActivityTypes = [.postToFlickr, .postToVimeo]
Кроме того, всякий раз, когда на устройстве устанавливается App, включающий Share App Extension, он также добавляется к UIActivityController.
Пример:
WhatsApp. Каждый раз, когда вы устанавливаете WhatsApp на свое устройство, он будет отображаться как Share App Extension в UIActivityController.
Вы не можете удалить их, а можете только скрыть их с помощью опции UIActivityController'sБолее.
Сообщите мне, если у вас по-прежнему возникнут какие-либо проблемы.
На данный момент (март 2019 г.) опция публикации в Instagram будет отображаться только в том случае, если вы установите изображение и только это изображение в ActivityItems. Если вы добавите туда ТЕКСТ или URL-адрес, опция Instagram не появится.
Twitter, с другой стороны, примет ТЕКСТ и ИЗОБРАЖЕНИЕ, но если вы также передадите URL-адрес, он также не будет отображаться в качестве опции.
просто для протокола, это уже не так (подтверждено сегодня)
Также в расширении я получаю сообщение об ошибке «Для объявления 'static var' требуется выражение инициализатора или спецификатор получателя / установщика»