HOME > App Extensions #2
前回の記事より、 iOS8からの新機能のAppExtensionのShareを利用したサンプルを記載していきます。 途中からの人は上記のリンクより前記事をご確認ください。
参考:iOS8 Day-by-Day :: Day 2 :: Sharing Extension
参考:iOS 8 Share Extension Safari URL Example
解説ページにはdidSelectPostが実行されるとありますが、どこに実装して良いかわからない。と探していると、単純にプロジェクトに専用のViewController[ShareViewController]が追加されているようでした。
この中に表示されている、以下3つの関数の説明です
isContentValid -> コンテントが投稿できるかを判断。
didSelectPost -> 投稿ボタンをクリックした時に実行される関数。
configurationItems -> Twitter等のiOS内臓のシェアできる要素のリストを扱う関数
例えば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と記載されます。
以下のサンプルコードを実行してみる
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)
}
するとエラーが、、、、
[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... |
Tweet | |||
|