iOSアプリ で Action Extension を作る

iOS で、App Extension の中の Action Extension の作り方。

dev.classmethod.jp

↓こちらはサンプル

github.com

以下は、Action Extension で作る時のポイント

identifer を揃える

・identifer(識別子)が、jp.xxxx.APP アプリの Action Extension を作る場合

元となるアプリの identifer を含める必要がある

例:jp.xxxx.APP.Extension

Info.plist に NSExtension を追加する

・Info.plist の設定 の例

<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsText</key>
<integer>1</integer>
</dict>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.ui-services</string>
</dict>

Info.plistで、URL 、テキスト など 使用する項目を設定しないといけない。

developer.apple.com

他アプリから、値を受け取る部分

URL とテキストを受け取る時の例

ActionViewController.swift

for (extensionItem) in self.extensionContext!.inputItems {
let extensionItem2:NSExtensionItem = extensionItem as! NSExtensionItem
dump(extensionItem2)
for (itemProvider) in extensionItem2.attachments! {
dump(itemProvider)
if itemProvider.hasItemConformingToTypeIdentifier(String(kUTTypePlainText)) {
itemProvider.loadItem(forTypeIdentifier: String(kUTTypePlainText), options: nil, completionHandler: { (item, error) in
if let txt: String = item as? String {
print(txt)
}
})
}
if itemProvider.hasItemConformingToTypeIdentifier(String(kUTTypeURL)) {
itemProvider.loadItem(forTypeIdentifier: String(kUTTypeURL), options: nil, completionHandler: { (item, error) in
if let url: NSURL = item as? NSURL {
print(url)
}
})
}
}
}

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA