У меня возникла проблема с расширением Share iOS для моего приложения. У меня есть следующий код в расширении Share Info.plist
.
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
</dict>
Основная проблема заключается в том, что расширение не отображается в Google Chrome, NYTimes, WSJ и многих других приложениях. Все из них должны содержать веб-страницу или URL-адрес веб-сайта.
Я где-то читал, что мне нужно добавить следующее к типу NSExtensionActivationRule.
<key>NSExtensionActivationSupportsText</key>
<true/>
Если я добавлю, расширение расширений появится в приложениях, перечисленных выше, но просто вернет строку для моего расширения. Например, если я перехожу к apple.com
в Google Chrome и использую расширение своего общего доступа, оно просто предоставляет Apple
в качестве строки моего расширения, которое мое приложение действительно не поддерживает. Он должен предоставлять некоторый тип URL-адреса или что-то в этом роде. И в приложении NYTimes он просто отправит заголовок статьи на расширение.
Расширение отлично работает в Safari. Просто не определенные сторонние приложения.
Ниже приведен основной код для получения URL-адреса в быстром файле моего расширения.
if let item = extensionContext?.inputItems.first as? NSExtensionItem {
if let itemProvider = item.attachments?.first 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 {
print (shareURL.absoluteString!)
Оттуда я обрабатываю URL как мое приложение.
Когда я добавил параметр NSExtensionActivationSupportsText
, я немного изменил код выше от public.url
до public.text
, а также несколько других вещей, чтобы проверить его, и он просто возвращал супер бесполезные строки.
Я знаю, что это возможно, чтобы получить URL-адрес из этих приложений, потому что даже в NYTimes у него есть опция для Google Chrome, на который явно нужен URL-адрес, а не только заголовок статьи. Любые идеи о том, как получить этот URL?