UIActivityViewController ТОЛЬКО для Facebook, Twitter и Instagram

Я пытаюсь получить 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, но я не уверен в этом.

Спасибо

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
5 229
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Есть вариант, доступный для 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
}

Также в расширении я получаю сообщение об ошибке «Для объявления 'static var' требуется выражение инициализатора или спецификатор получателя / установщика»

Reimond Hill 20.03.2018 12:39

Ооо, да. Извините .. По недоразумению обновлю ответ.

Sagar Chauhan 20.03.2018 12:49

@ReimondHill, пожалуйста, проверьте сейчас. Я обновил свой ответ

Sagar Chauhan 20.03.2018 12:55

яблоко обеспечивает поддержку некоторых из 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-адрес, он также не будет отображаться в качестве опции.

просто для протокола, это уже не так (подтверждено сегодня)

Anushk 16.06.2020 06:29

Другие вопросы по теме