↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

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

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-05-14 14:21:41

WatchOSのwatchconnectivityのFiletransferの落とし穴。と、避け方。

AppleWatch 実機だと成功するんだけど、シュミレーターだと失敗するという、、、 昔作成してた時は成功してたのになーと思って調べると、どうやら昔は成功してたみたい。watchOS6以降は...

2021-05-06 14:04:37

LINEのアニメーションスタンプ制作の落とし穴、、、失敗談

ゴールデンウィークにLINEスタンプを作成してみました。 作り切って申請も通したんですが、意図したアニメーションと違う、、、、 LINEクリエーターの画面だと、アニメーションのプレビュー...

2021-05-01 18:05:35

久しぶりのAdmobをobjective-cに実装。コンパイルエラーだらけ。バーミッション不具合でエミュレータにインスコできない。

忘れないようにメモ エミュレータにアプリをインストールする際にパーミッション系のエラーがでた時、また、iphone実機にインストールする際にも権限系のエラーが出る場合。 ターゲット→ex...
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!