通过长按链接打开的共享菜单中的 Safari 浏览器中未显示应用程序图标
Posted
技术标签:
【中文标题】通过长按链接打开的共享菜单中的 Safari 浏览器中未显示应用程序图标【英文标题】:App icon not shown in Safari in the share menu opened by a long press on a link 【发布时间】:2016-12-02 12:00:35 【问题描述】:我的应用有一个扩展程序。此扩展在 Safari 中可用。当我使用 Safari 分享按钮时
然后它会打开一个共享面板,我的应用程序图标就在那里。但是,如果我在 Safari 中按住一个链接几秒钟,然后弹出以下警报 并点击 Share...
按钮,然后它会打开一个类似的共享面板,我看到有 Facebook 和 Twitter 图标,但我的应用程序图标不见了。有人知道如何让它出现在那个共享面板中吗?
这是当我点击“分享...”按钮时打开的内容:
【问题讨论】:
您是否在扩展程序中添加了应用图标? 我不确定你到底是什么意思,但是如果你问我是否在 Safari 中启用了应用程序扩展,那么是的。正如我所说,当我使用分享按钮时,一切正常 我的意思是,你会在你的 Xcode 项目中添加应用程序图标,对吧?您需要在 Xcode 项目中为 Share 扩展程序设置应用程序图标。 好吧,我不确定一切是否正确,但是,对于通常的共享按钮,一切都按预期工作。应用程序图标显示正确,我可以通过点击它来打开扩展程序。所以我假设图标已经设置好了。但我认为这无论如何都不是图标本身的问题。如果没有图标,它会显示一个默认的 ios 图标,不是吗? 能否添加点击分享后的截图...? 【参考方案1】:我找到了解决方案。在我的扩展的 plist 中有一个名为 NSExtensionActivationRule
的键。它属于NSExtensionAttributes
字典,而后者又属于NSExtension
字典。所以NSExtensionActivationRule
的值对我来说如下所示:
<string>SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text"
).@count >= 1
).@count >= 1</string>
据我所知,这是$attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text"
行,它可以发挥所有作用。
完整的NSExtension
字典如下所示:
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationDictionaryVersion</key>
<integer>2</integer>
<key>NSExtensionActivationRule</key>
<string>SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text"
).@count >= 1
).@count >= 1</string>
<key>NSExtensionActivationUsesStrictMatching</key>
<integer>2</integer>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
</dict>
【讨论】:
谢谢。您能以 XML 格式发布 info.plist 的NSExtension
部分吗?我的看起来像这样:` public.url
可以长按 URL 链接。
它将链接作为字符串传递给扩展。我不得不把它变成里面的url
啊,有道理。虽然当您想要共享链接时寻找纯文本远非显而易见......以上是关于通过长按链接打开的共享菜单中的 Safari 浏览器中未显示应用程序图标的主要内容,如果未能解决你的问题,请参考以下文章
H5移动端禁止长按弹出系统菜单"选择复制","在浏览器打开"