我在我的共享扩展中有以下代码,用于获取分享的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,它可以提供哪些类型?如果您向项目提供程序请求其registeredTypeIdentifiers
,会给出什么 UTI? - Scott Thompsonp itemProvider.registeredTypeIdentifiers[0] as! String (String) $R4 = "public.plain-text"
- Charlie Fishitem.attachments?.count
返回1
。正在查看它包含的内容。 - Charlie Fishhttps://www.youtube.com/watch?v=VIDEOIDHERE&feature=share
。有没有最好的方法来调整我的代码,以获取纯文本,如果它是在URL形式下?我不想得到一些随机文本。我只想在它是一个URL时获取它。 - Charlie Fishif let myURL = URL.init?(string: text) {
这样子? - Charlie Fish