【发布时间】:2017-10-12 18:38:25
【问题描述】:
我的共享扩展中有以下代码来获取共享的 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!)
由于某种原因,iOS YouTube 应用为 itemProvider.hasItemConformingToTypeIdentifier("public.url") 返回 false。
下面是我的共享扩展的 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>
如何获取在我的分享扩展中分享的 YouTube 视频的 URL?
【问题讨论】:
-
如果
ItemProvider无法为您提供 URL,它可以提供哪些类型的 URL?如果您向项目提供者询问它是registeredTypeIdentifiers,给出的是什么 UTI? -
p itemProvider.registeredTypeIdentifiers[0] as! String (String) $R4 = "public.plain-text" -
@ScottThompson Printing
itemProvider.registeredTypeIdentifiers[0] as! String返回"public.plain-text" -
好的。那是第一个。还有其他人吗?如果你真的要求纯文本它包含什么?
-
@ScottThompson
item.attachments?.count返回1。正在努力查看它现在包含的内容。
标签: ios swift youtube ios8-share-extension