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

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

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

HOME > App Extensions #2

App Extensions #2 (Share)

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

sharedサンプル3


参考:iOS8 Day-by-Day :: Day 2 :: Sharing Extension
参考:iOS 8 Share Extension Safari URL Example

画面が表示されたのは良いのですが、イベントが取得方法がわからない

解説ページにはdidSelectPostが実行されるとありますが、どこに実装して良いかわからない。と探していると、単純にプロジェクトに専用のViewController[ShareViewController]が追加されているようでした。

sharedサンプル3

この中に表示されている、以下3つの関数の説明です

isContentValid -> コンテントが投稿できるかを判断。

didSelectPost -> 投稿ボタンをクリックした時に実行される関数。

configurationItems -> Twitter等のiOS内臓のシェアできる要素のリストを扱う関数

isContentValid解説

例えばTwitterの制限140文字以下にする必要があるように設定します


let TwitterMaxChar = 140
override func isContentValid() -> Bool {
//このcontentTextは入力インプットフォームと連動しているのでこのままで大丈夫
  if let currentMessage = contentText {
    let currentMessageLength = countElements(currentMessage)
    charactersRemaining = TwitterMaxChar - currentMessageLength
    if Int(charactersRemaining) < 0 {
      return false
    }
  }
  return true
}

上記をisContentValidに実装していると、入力フォームを更新する度に処理されて問題ないかを確認します。上記の例では140で5文字入力しているので左下に135と記載されます。

sharedサンプル2

didSelectPost解説

以下のサンプルコードを実行してみる


     override func didSelectPost() {
        var item : NSExtensionItem = self.extensionContext.inputItems[0] as NSExtensionItem
        var itemProvider : NSItemProvider = item.attachments[0] as NSItemProvider
        
        if (itemProvider.hasItemConformingToTypeIdentifier("public.url")) {
            itemProvider.loadItemForTypeIdentifier("public.url", options: nil, completionHandler: { (urlItem, error) in
                var urlString = urlItem.absoluteString
                //do what you need to do now, such as send a request to your server with this url
            })
        }
        self.extensionContext!.completeRequestReturningItems([], completionHandler: nil)
    }       

するとエラーが、、、、

sharedサンプル3

[NSObject : AnyObject]?' does not have a member named 'subscript'このエラーが回避できませんでした。。。。 またしても府外ない箇所で終わってしまいました。この記事を理解すれば解決しそうなのですが、わかりませんでしたorz 次回はこのエラー回避方法と、configurationItemsを解説していけたらと思います。(2014/12/11)

続きをApp Extension #2に追加しました。よかったらご確認下さい(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をクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!