Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

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

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)

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

アイコン一括作成サービス紹介

アプリのアイコンを作るのは手間で面倒くさい。と、思いながらPhotoshopで一つ一つサイズを変えて作っていたのですが、 簡単につくれるサービスやっぱりありました。Macのスクリプトだったり、Webサービスだったりと揃っていましたので共有します。

Backslashを忘れない

ショートカットキーで(\)を入力するには「optionキーを押しながら、¥キーを押す」で可能なのですが、 なにかと、あれ、、、なんだったっけ?と忘れる事が多かったので、バックスラッシュ拡大表示。

UITextViewやらで縦書きができないか検証

「文字の縦書き」をやってみたいのですが、どうもUITextView等には設定が無いとのことです。 調べていると、本当にない?のかな。少し調査して作れそうなもんであればつくってみれたら、、、との気持ちで進めてみます。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!