【新サービス告知】いつでもどこでもイベントを開催できる。スマホのWebカメラを利用したVRイベントスペースサービス(Meetatcube.com)
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > App Extensions #3

App Extensions #3(Share)

前回の記事より、 iOS8からの新機能のAppExtensionのShareを利用したサンプルを引き続き記載していきます。 途中からの人は上記のリンクより前記事をご確認ください。

sharedサンプル3

AppExtensionのShareでdidSelectPostの箇所のソース、上記のエラーが解決できない箇所まで進んでいました。


参考:iOS 8 Share extension loadItemForTypeIdentifier:options:completionHandler: completion closure not executing
参考:[NSObject : AnyObject]?' does not have a member named 'subscript' error in Xcode 6 beta 6

URLを取得できた、修正したソース

以下のように修正すると取得することが可能できました。どうやら最後の行のcompleteRequestReturningItemsの位置をClosureに含めないと取得できないようでした。Objective-Cでは取得できていたようですので注意が必要です。


    override func didSelectPost() {
        var item : NSExtensionItem = self.extensionContext!.inputItems[0] as NSExtensionItem
        
        var attachments = item.attachments!;
        var itemProvider : NSItemProvider = attachments[0] as NSItemProvider
        
        if (itemProvider.hasItemConformingToTypeIdentifier("public.url")) {
            itemProvider.loadItemForTypeIdentifier("public.url", options: nil, completionHandler: { (urlItem, error) in
                
                let url : NSURL = urlItem as NSURL;
                println(url.absoluteString);//http://www.apple.com/retail/code/
                
                self.extensionContext!.completeRequestReturningItems([], completionHandler: nil)

            })
        }
    }

おまけ:次のgithubのソースではスウェーデンのvandadnpさんがカスタマイズされて独自のネットワーク先を選択してPOSTできるような形のサンプルが掲載されています。iOS-8-Swift-Programming-Cookbook/chapter-extensions/Providing a Custom Sharing Extension to iOS/ShareExtension/ShareViewController.swift

引き続き、最後のconfigurationItemsを解説していきます

configurationItems解説

こちらは何かといえば、例えばFacebookのShareの位置情報や共有範囲のメニューの事です。デフォルトでは何もついていません。こちらをカスタマイズすることができます

sharedサンプル1

Githubにvandadnpさんがサンプル一式をアップされていましたので実行してみました。

参考:iOS-8-Swift-Programming-Cookbook/chapter-extensions/Providing a Custom Sharing Extension to iOS/ShareExtension/


  override func configurationItems() -> [AnyObject]! {
    return [audienceConfigurationItem]
  }
  lazy var audienceConfigurationItem: SLComposeSheetConfigurationItem = {
    let item = SLComposeSheetConfigurationItem()
    item.title = "Audience"
    item.value = AudienceSelectionViewController.defaultAudience()
    item.tapHandler = self.showAudienceSelection
    return item
   }()

上記ソースのコピペだけでは動作しません。AudienceSelectionViewController.swiftも必要ですので注意です。

.....

AudienceSelectionViewController.swfitを追加して、ShareViewControllerを修正すると、以下のようになりました。

sharedサンプル2

sharedサンプル3

あとはvandadnpさんのサンプルコードからカスタマイズしていただければ感謝です。

続きをApp Extension #4に追加しました。次は[Today]を説明しています。よかったらご確認下さい(2014/12/12)

↓こんな記事もありますよ!


2021-04-22 14:54:53

かっこいいカルーセル厳選3点!WebGLを使った渋い画像スライダー。

昨日カッコいいスライダーを探す旅にでていました。 よく使われるswiper など、シンプルで使いやすくデザインも良いのですが、何かもの足りない、、、。 そこで調べていくと、webglを使...

2021-04-20 14:46:43

Twillioとは何??skywayとは何が違うのか。webrtcを使う際に判断する情報。

先日webrtc開発で「twillio」といった名前を聞きました。 以前自分でskywayを使ってwebrtcを試していた際に調べた時には、無かったような気もするんだけと、KDDIが絡んでいる...

2021-04-19 13:58:21

先日久々にアップデートした妊娠週刊パパのAndroid版も。アカウント移管したいんだけど、注文ID見当たらないよ。

先日の妊娠、出産、育児関連のアプリ「妊娠週刊パパ」をAndroid studioで再リリースしようと思ってるんだけど、コンパイル失敗してエミュレータで動かせない。 多分sdkとかapiのバージ...
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!