У меня есть следующий код в моем расширении общего доступа, чтобы получить общий URL-адрес.
if let item = extensionContext?.inputItems.first as? NSExtensionItem {
for (index, _) in (item.attachments?.enumerated())! {
if let itemProvider = item.attachments?[index] as? NSItemProvider {
if itemProvider.hasItemConformingToTypeIdentifier("public.url") {
itemProvider.loadItem(forTypeIdentifier: "public.url", options: nil, completionHandler: { (url, error) -> Void in
if let shareURL = url as? NSURL {
// send url to server to share the link
print (shareURL.absoluteString!)
По какой-то причине приложение YouTube для iOS возвращает false для itemProvider.hasItemConformingToTypeIdentifier("public.url")
.
А ниже мой Info.plist для расширения общего доступа.
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<string>
SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url"
).@count == 1
).@count == 1
</string>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
</dict>
Как я могу получить URL-адрес видео YouTube, опубликованного в моем расширении общего доступа?
ItemProvider
не может предложить вам URL-адрес, какие типы он может предложить? Если вы спросите у поставщика предметов,registeredTypeIdentifiers
какие UTI будут даны? - person Scott Thompson   schedule 13.05.2017itemProvider.registeredTypeIdentifiers[0] as! String
возвращает"public.plain-text"
- person Charlie Fish   schedule 13.05.2017item.attachments?.count
возвращает1
. Работаем над тем, чтобы увидеть, что он содержит сейчас. - person Charlie Fish   schedule 13.05.2017https://www.youtube.com/watch?v=VIDEOIDHERE&feature=share
. Есть ли лучший способ настроить мой код, чтобы получить этот простой текст, ЕСЛИ он находится в форме URL? Я не хочу получать случайный текст. Я хочу получить его только в том случае, если это URL-адрес. - person Charlie Fish   schedule 13.05.2017URL
, используяinit?(string: String)
, если текст не является URL-адресом, эта функция вернет ноль - person Scott Thompson   schedule 13.05.2017if let myURL = URL.init?(string: text) {
? - person Charlie Fish   schedule 13.05.2017if URL.init(string: text as! String) != nil {
будет работать? - person Charlie Fish   schedule 13.05.2017