前提・実現したいこと
iOS(13以上)とMacOS(Catalina以上)用のアプリを作成しており、Share Extensionでテキストを共有したいのですが、
Macで起動した場合にテキストの値が取得できません。
(iOSではテキストを取得できます。)
発生している問題・エラーメッセージ
extensionContext?.inputItems
の中身を調べました。
Macで起動した場合 NSExtensionItemAttachmentsKey
が下記の様に空になります。
▿ Optional<Array<Any>> ▿ some : 1 element - 0 : <NSExtensionItem: 0x6000030a8340> - userInfo: { NSExtensionItemAttachmentsKey = ( ); NSExtensionItemAttributedContentTextKey = {length = 315, bytes = 0x7b5c7274 66315c61 6e73695c 616e7369 ... 30204170 706c657d };
iOSの場合は下記のように値が入っています。
▿ Optional<Array<Any>> ▿ some : 1 element - 0 : <NSExtensionItem: 0x2809f4c90> - userInfo: { NSExtensionItemAttachmentsKey = ( "<NSItemProvider: 0x2820f24c0> {types = (\n \"public.plain-text\"\n)}" ); NSExtensionItemAttributedContentTextKey = {length = 316, bytes = 0x7b5c7274 66315c61 6e73695c 616e7369 ... 30204170 706c657d }; "com.apple.UIKit.NSExtensionItemUserInfoIsContentManagedKey" = 0; }
該当のソースコード
swift
1let extensionItem: NSExtensionItem = extensionContext?.inputItems.first as! NSExtensionItem 2guard let itemProvider = extensionItem.attachments?.first else { 3 return // ここを通ってしまう 4}
info.plist
xml
1<key>NSExtensionActivationRule</key> 2 <string>SUBQUERY (extensionItems,$extensionItem, 3 SUBQUERY ($extensionItem.attachments,$attachment, 4 (ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.text" 5 || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text") 6 ).@count == $extensionItem.attachments.@count).@count == 1 7 </string>
試したこと
info.plistを下記のようにしてみましたが変わりませんでした。
xml
1<key>NSExtensionActivationRule</key> 2 <dict> 3 <key>NSExtensionActivationSupportsText</key> 4 <true/> 5 </dict>
補足情報(FW/ツールのバージョンなど)
Xcode 11.3
ターゲット iOS 13
あなたの回答
tips
プレビュー