iOS で、App Extension の中の Action Extension の作り方。
↓こちらはサンプル
以下は、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 、テキスト など 使用する項目を設定しないといけない。
他アプリから、値を受け取る部分
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) } }) } } }