Как определить и исключить сторонний ActivityType (например, «Отправить в Kindle», «Chrome») в UIActivityViewController? - PullRequest
1 голос
/ 17 мая 2019

Как обсуждено здесь & здесь , возможно исключить другие ActivityType опции, используя UIActivityViewController 'excludedActivityTypes, помимо тех, которые предварительно определены.

Однако как узнать идентификаторы для любого данного ActivityType (в идеале программно во время сборки / выполнения, если это возможно), чтобы их потом можно было исключить?

Например, я хочу отключить Отправить на Kindle и Chrome .

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Чтобы узнать ActivityType стороннего действия, выберите это действие после отображения вашего UIActivityViewController.

Когда вызывается обработчик завершения, закрытие / блокирование завершения, которое вы предоставили контроллеру активности, имеет параметр с типом ActivityType, сообщающий вам, какой из них был выбран.

Например:

activityVC.completionWithItemsHandler = { activity, success, items, error in
    print("activity: \(activity), success: \(success), items: \(items), error: \(error)")
}

Теперь вы знаете ActivityType для этого действия. Обновите свой код, чтобы добавить это значение в список, который вы передаете excludedActivityTypes.

0 голосов
/ 17 мая 2019

FYI, как определено отличным ответом @ rmaddy , это конкретные идентификаторы для Send для Kindle и Chrome , если кому-то интересно:

let kindleActivity = UIActivity.ActivityType(rawValue: "com.amazon.Lassen.SendToKindleExtension")
let chromeActivity = UIActivity.ActivityType(rawValue: "com.google.chrome.ios.ShareExtension")

Есть много других примеров, уже определенных в этом ответе на связанный вопрос .

К сожалению, даже когда они добавляются в массив для excludedActivityTypes, они все равно, похоже, отображаются в UIActivityViewController. Любые отзывы о том, почему и как это можно исправить, очень приветствуются!

...