SlideShare a Scribd company logo
Submit Search
Upload
iOS 8 App Extension
Report
Share
Takeo Nanba
Software Developer at LINE Fukuoka
Follow
•
9 likes
•
3,946 views
1
of
39
iOS 8 App Extension
•
9 likes
•
3,946 views
Report
Share
Download Now
Download to read offline
Technology
この資料は発表当時(2014/7/29)のものです。既に仕様が変わっている部分もありますので、ご注意ください。
Read more
Takeo Nanba
Software Developer at LINE Fukuoka
Follow
Recommended
iOS 8 App Extension「Action」でアプリ間連携してみる by
iOS 8 App Extension「Action」でアプリ間連携してみる
Kosuke Ogawa
8K views
•
20 slides
App extension for iOS by
App extension for iOS
toyship
13.8K views
•
39 slides
App Extensions in iOS ver JP by
App Extensions in iOS ver JP
qohj
650 views
•
76 slides
【社内LT】iPhoneアプリ開発のすすめ by
【社内LT】iPhoneアプリ開発のすすめ
Vitalify.Inc
624 views
•
19 slides
6秒動画アプリ Vineの作り方 by
6秒動画アプリ Vineの作り方
Hiramatsu Ryosuke
24.6K views
•
26 slides
Swiftではじめる動画再生 by
Swiftではじめる動画再生
Yusuke Ariyoshi
12.1K views
•
29 slides
More Related Content
What's hot
「ABCs2018」LT〝Intro to Google Play Instant〟 by
「ABCs2018」LT〝Intro to Google Play Instant〟
LIFULL Co., Ltd.
225 views
•
24 slides
Prott for iOS by
Prott for iOS
Seiya Shimokawa
2.9K views
•
27 slides
mBaaS/C4SA howto by
mBaaS/C4SA howto
史識 川原
380 views
•
49 slides
Azure Updates from Build 2021 by
Azure Updates from Build 2021
Kazuyuki Miyake
1K views
•
11 slides
Herokuのご紹介 by
Herokuのご紹介
Ayumu Aizawa
1.2K views
•
27 slides
シューティングゲームにランキングとゴースト機能を追加しましょう!~Unity×クラウドをつかって~ by
シューティングゲームにランキングとゴースト機能を追加しましょう!~Unity×クラウドをつかって~
ニフクラ mobile backend
4.8K views
•
15 slides
What's hot
(20)
「ABCs2018」LT〝Intro to Google Play Instant〟 by LIFULL Co., Ltd.
「ABCs2018」LT〝Intro to Google Play Instant〟
LIFULL Co., Ltd.
•
225 views
Prott for iOS by Seiya Shimokawa
Prott for iOS
Seiya Shimokawa
•
2.9K views
mBaaS/C4SA howto by 史識 川原
mBaaS/C4SA howto
史識 川原
•
380 views
Azure Updates from Build 2021 by Kazuyuki Miyake
Azure Updates from Build 2021
Kazuyuki Miyake
•
1K views
Herokuのご紹介 by Ayumu Aizawa
Herokuのご紹介
Ayumu Aizawa
•
1.2K views
シューティングゲームにランキングとゴースト機能を追加しましょう!~Unity×クラウドをつかって~ by ニフクラ mobile backend
シューティングゲームにランキングとゴースト機能を追加しましょう!~Unity×クラウドをつかって~
ニフクラ mobile backend
•
4.8K views
【ios swift】ニフティクラウドmobile backend を体験しよう! by ニフクラ mobile backend
【ios swift】ニフティクラウドmobile backend を体験しよう!
ニフクラ mobile backend
•
3.4K views
【mBaaS体験会】 Android datastore demo by ニフクラ mobile backend
【mBaaS体験会】 Android datastore demo
ニフクラ mobile backend
•
2.5K views
2017/05/24 potatotips #40 by Akiyoshi Samukawa
2017/05/24 potatotips #40
Akiyoshi Samukawa
•
1.9K views
ここが変わる!Unity 5のスマホ開発 ~アセットバンドル、ビルド、プラグイン~ by MakotoItoh
ここが変わる!Unity 5のスマホ開発 ~アセットバンドル、ビルド、プラグイン~
MakotoItoh
•
20.7K views
Visual Studio2013 でGithub(1) セットアップ~同期 by Tomo Mizoe
Visual Studio2013 でGithub(1) セットアップ~同期
Tomo Mizoe
•
1.2K views
dotcle 経験0から Meteor iOS アプリを2ヶ月半で作ってリリースしてみた by Nobutaka OSHIRO
dotcle 経験0から Meteor iOS アプリを2ヶ月半で作ってリリースしてみた
Nobutaka OSHIRO
•
1.3K views
cloudmix GAE slides by Kazunori Sato
cloudmix GAE slides
Kazunori Sato
•
1.7K views
GitHub Enterpriseの導入事例と実践GitHub Actions by Shuji Yamada
GitHub Enterpriseの導入事例と実践GitHub Actions
Shuji Yamada
•
1.9K views
Meteor勉強会発表資料「MeteorでiOSアプリを作ろう!」 by Nobutaka OSHIRO
Meteor勉強会発表資料「MeteorでiOSアプリを作ろう!」
Nobutaka OSHIRO
•
3.2K views
最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法 by アシアル株式会社
最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法
アシアル株式会社
•
2.6K views
GGJ2016用UE4ヒストリアBLOGリファレンス by Shun Sasaki
GGJ2016用UE4ヒストリアBLOGリファレンス
Shun Sasaki
•
4.1K views
Monacaとmobile backendでチェックインアプリをつくる by ncmb_sdk
Monacaとmobile backendでチェックインアプリをつくる
ncmb_sdk
•
21.1K views
【ios objective c】ニフティクラウドmobile backend を体験しよう! by ニフクラ mobile backend
【ios objective c】ニフティクラウドmobile backend を体験しよう!
ニフクラ mobile backend
•
1.7K views
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編) by アシアル株式会社
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
アシアル株式会社
•
2.7K views
Similar to iOS 8 App Extension
第1回 コデアルiOSアプリ勉強会 by
第1回 コデアルiOSアプリ勉強会
codeal
2.9K views
•
52 slides
AppCodeNight testcode by
AppCodeNight testcode
Akira SUGIMOTO
902 views
•
8 slides
Android study part1 by
Android study part1
shinya sakemoto
2.2K views
•
72 slides
XcodeのTargetについてのTIPS by
XcodeのTargetについてのTIPS
Yoichiro Sakurai
2.5K views
•
18 slides
Time for Xcode Behavior by
Time for Xcode Behavior
toyship
259 views
•
22 slides
できる!スマホアプリ:Webからはじまるアプリ by
できる!スマホアプリ:Webからはじまるアプリ
Masami Yabushita
4.5K views
•
57 slides
Similar to iOS 8 App Extension
(20)
第1回 コデアルiOSアプリ勉強会 by codeal
第1回 コデアルiOSアプリ勉強会
codeal
•
2.9K views
AppCodeNight testcode by Akira SUGIMOTO
AppCodeNight testcode
Akira SUGIMOTO
•
902 views
Android study part1 by shinya sakemoto
Android study part1
shinya sakemoto
•
2.2K views
XcodeのTargetについてのTIPS by Yoichiro Sakurai
XcodeのTargetについてのTIPS
Yoichiro Sakurai
•
2.5K views
Time for Xcode Behavior by toyship
Time for Xcode Behavior
toyship
•
259 views
できる!スマホアプリ:Webからはじまるアプリ by Masami Yabushita
できる!スマホアプリ:Webからはじまるアプリ
Masami Yabushita
•
4.5K views
OpenAPI Specificationからネットワーク層を自動生成する by ImajinKawabe1
OpenAPI Specificationからネットワーク層を自動生成する
ImajinKawabe1
•
113 views
簡単に android アプリの開発を可能にする app inventor の紹介 by Tokyo City University, Ueno Lab.
簡単に android アプリの開発を可能にする app inventor の紹介
Tokyo City University, Ueno Lab.
•
2.1K views
20120413 nestakabaneworkshop by Yoichiro Sakurai
20120413 nestakabaneworkshop
Yoichiro Sakurai
•
682 views
はじめてのiOSアプリ開発 ① by Nagamine Hiromasa
はじめてのiOSアプリ開発 ①
Nagamine Hiromasa
•
1.9K views
できる!スマホアプリ:Webからはじまるアプリ for CMU16 by Masami Yabushita
できる!スマホアプリ:Webからはじまるアプリ for CMU16
Masami Yabushita
•
1.5K views
20120316 designerworkshoppublished by Yoichiro Sakurai
20120316 designerworkshoppublished
Yoichiro Sakurai
•
697 views
Visual Studio を使用した Cordova 開発 by Osamu Monoe
Visual Studio を使用した Cordova 開発
Osamu Monoe
•
3.3K views
iQONの開発手法 at iQONエンジニアセミナー by Imamura Masayuki
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
•
4.9K views
Osc2012 appinventor のその後 by Katsumi Honda
Osc2012 appinventor のその後
Katsumi Honda
•
1.2K views
Watch connectivity by Motoki Narita
Watch connectivity
Motoki Narita
•
14.7K views
iOS豆知識ver0.0.5 by ppengotsu Name
iOS豆知識ver0.0.5
ppengotsu Name
•
13.9K views
デザイナーでも安心!はじめてのiOSアプリ開発 先生:関根 元和 by schoowebcampus
デザイナーでも安心!はじめてのiOSアプリ開発 先生:関根 元和
schoowebcampus
•
1.7K views
iOSアプリを審査に提出してみた話 by Hideki Abe
iOSアプリを審査に提出してみた話
Hideki Abe
•
2K views
プロ文.com 勉強会 Phase 1 by Hiroki Toyokawa
プロ文.com 勉強会 Phase 1
Hiroki Toyokawa
•
591 views
Recently uploaded
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
29 views
•
38 slides
SSH応用編_20231129.pdf by
SSH応用編_20231129.pdf
icebreaker4
380 views
•
13 slides
The Things Stack説明資料 by The Things Industries by
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.
76 views
•
29 slides
光コラボは契約してはいけない by
光コラボは契約してはいけない
Takuya Matsunaga
25 views
•
17 slides
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PC Cluster Consortium
23 views
•
36 slides
定例会スライド_キャチs 公開用.pdf by
定例会スライド_キャチs 公開用.pdf
Keio Robotics Association
132 views
•
64 slides
Recently uploaded
(12)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
•
29 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdf
icebreaker4
•
380 views
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.
•
76 views
光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない
Takuya Matsunaga
•
25 views
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by PC Cluster Consortium
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PC Cluster Consortium
•
23 views
定例会スライド_キャチs 公開用.pdf by Keio Robotics Association
定例会スライド_キャチs 公開用.pdf
Keio Robotics Association
•
132 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development site
Atomu Hidaka
•
90 views
IPsec VPNとSSL-VPNの違い by 富士通クラウドテクノロジーズ株式会社
IPsec VPNとSSL-VPNの違い
富士通クラウドテクノロジーズ株式会社
•
543 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門
mkoda
•
453 views
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by Hitachi, Ltd. OSS Solution Center.
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Hitachi, Ltd. OSS Solution Center.
•
89 views
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
•
151 views
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 by PC Cluster Consortium
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PC Cluster Consortium
•
45 views
iOS 8 App Extension
1.
iOS8 App Extension LINE
Developer Meetup in Fukuoka #6 2014.07.29 難波 健雄
2.
自己紹介 • 難波 健雄 •
LINE Fukuoka iOS Developer • github.com/groovelab • no music no life
3.
自己紹介 JAZZ やってます
4.
自己紹介 福岡城のFacebookページ
5.
はじめに • 動作環境 • Xcode6
beta4 • iOS8 beta4 • iOS SDK 8 beta4
6.
はじめに • 動作環境 • Xcode6
beta4 • iOS8 beta4 • iOS SDK 8 beta4 beta5 で変わるかもしれません
7.
アジェンダ • App Extension •
Extension Point • Host AppとApp Extension • Containing AppとApp Extensionの配布 • App Extensionの実装とデバッグ
8.
App Extension • iOS8から新しく追加されたアプリ連携の仕組み •
iOS7まではURLスキームによる連携 (別アプリ起動) • 複数のアプリで同じ機能を使用できる 詳細は App Extension Programming Guide を参照
9.
App Extension 同じ機能 例えば、、、 • ブラウザからFacebook・Twitter以外のSNSへ投稿 •
現在のホークスの試合を通知センターで表示 • 画像・動画の編集 • 独自のキーボード
10.
App Extension • すでにGitHubには、たくさんのリポジトリが作ら れている •
たとえば • たとえば • たとえば • たとえば
11.
App Extension いま、App Extensionがアツイ! •
すでにGitHubには、たくさんのリポジトリが作ら れている
12.
Extension Point • AppExtensionには様々な種類がある
13.
Extension Point • AppExtensionには様々な種類がある •
種類 → Extension Point
14.
Extension Point • Today •
Share • Action • Photo Editing • Document Provider • Custom Keyboard iOSのみ
15.
Extension Point • Today •
Share • Action • Photo Editing • Document Provider ← 諸事情により割愛します • Custom Keyboard
16.
Extension Point • Today •
通知センターの「今日」に表示 • Widgetとも呼ぶ
17.
Extension Point • Share •
コンテンツの共有 • SNSへの投稿
18.
Extension Point • Action •
コンテンツの編集 • 画像・テキスト • サンプルコード • Extension Request Handling • Safari Plugin • JavaScriptで実装
19.
Extension Point • Photo
Editing • 写真アプリから連携 • 画像や動画を編集 • サンプルコード
20.
Extension Point • Custom
Keyboard • 独自のキーボードを作成可能
21.
Host AppとApp Extension •
App Extensionを呼び出すアプリ → Host App • Host AppとApp Extensionは別プロセスで動作する
22.
Host AppとApp Extension •
Host AppとApp Extensionのデータ受け渡しは NSExtensionContextインスタンスを利用する • NSExtensionContext → テキスト・画像などを含む
23.
Containing App • App
Extensionの作成方法 1. XcodeでiOSアプリProjectを作成 2. Targetの追加 → Application Extension → Extension Pointを決定
24.
Containing App • App
Extensionの作成方法 1. XcodeでiOSアプリProjectを作成 ← Containing App 2. Targetの追加 → Application Extension → Extension Pointを決定
25.
Containing App • App
Extensionの作成方法 1. XcodeでiOSアプリProjectを作成 ← Containing App 2. Targetの追加 → Application Extension → Extension Pointを決定 • App Extensionの配布 1. Containing App をAppStoreに登録 2. Containing App をAppStoreからインストール
26.
Containing App • App
Extensionの作成方法 1. XcodeでiOSアプリProjectを作成 ← Containing App 2. Targetの追加 → Application Extension → Extension Pointを決定 • App Extensionの配布 1. Containing App をAppStoreに登録 2. Containing App をAppStoreからインストール 同時にAppExtensionもインストールされる
27.
App Extensionの実装 • Containing
Appにtargetを追加する ここまでは同じ
28.
App Extensionの実装 • Containing
Appにtargetを追加する ここまでは同じ • Extension Pointによって実装が異なる • Todayの場合 1. StoryBoardでUIを作成 2. UIに表示するデータを取得する処理を実装 3. 取得したデータをUIにセットする処理を実装
29.
App Extensionのデバッグ 1. 追加したtargetをRun
▶ 2. どのアプリを起動するか選択 ← Containing AppはNG 3. 起動したアプリからApp Extensionを呼ぶ 4. RunしたAppExtensionがデバッガに接続される • デバッグコンソール • NSLog() • break point
30.
App Extensionのデバッグ 1. 追加したtargetをRun
▶ 2. どのアプリを起動するか選択 ← Containing AppはNG 3. 起動したアプリからApp Extensionを呼ぶ 4. RunしたAppExtensionがデバッガに接続される • デバッグコンソール • NSLog() • break point
31.
Today Extension • UIViewControllerを継承したTodayViewController •
StoryBoardを使用可能 • UILabel, UIButton • キーボード入力できないのでUITextFieldは利用不可 • preferredContentSizeでサイズ変更 • viewDidLoad は通知センターを表示するたびに呼ばれる • NSURLConnectionで外部コンテンツ参照可能
32.
Share Extension • SLComposeServiceViewControllerを継承した ShareViewController •
デフォルトのUI(ダイアログ)を使用する • Storyboardは背景に使用される • configurationItemsでダイアログのフッターにアイテムを追 加 • didSelectPostで投稿処理を実装する
33.
Action Extension • UIViewControllerを継承したActionViewController •
StoryBoardを使用可能 • NSExtensionContextを通じて編集するコンテンツ を取得・セットする • done で処理を実装する
34.
Photo Editing Extension •
UIViewControllerを継承した PhotoEditingViewController • StoryBoardを使用可能 • startContentEditingWithInputで編集するコンテンツを 表示 • finishContentEditingWithCompletionHandlerで編集し たコンテンツを保存する
35.
Custom Keyboard • UIInputViewControllerを継承した KeyboardViewController •
StoryBoardを使用できない • viewDidLoadでUIButtonをaddSubviewしていく • textDocumentProxyのinsertText にテキストを渡す
36.
実装で注意すること • 使用できないクラス・メソッドがある • NS_EXTENSION_UNAVAILABLE •
[UIApplication sharedApplication] • [UIApplication openURL] • [self.extensionContext openURL: …] • ↑ContainingAppを起動することは可能 • UIAlertController ← iOS8版UIAlertView • Todayでは使用できず
37.
実装で注意すること • Containing AppとAppExtensionのデータ共有 •
AppGroupを設定することで実現可能 • info.plist で受け付けるコンテンツを制限 • NSExtensionActivationRule • NSExtensionActivationSupportsText • NSExtensionActivationSupportsImageWithMaxC ount
38.
実装で注意すること • バッドノウハウ (beta4だけ?) •
TodayはiOSシミュレータのほうがデバッグしやすい • 修正内容を反映させるのにiOSの再起動が必要 • iOSシミュレータを終了 → Run • Photo Editing、Custom Keyboardは 実機のみデバッガを使用できる • Custom KeyboardはUserDefaultsでContainingAppとデータ共有で きない? ↑公式ドキュメントにはできると書いてあるので、beta4のバグかも
39.
最後に LINE Fukuokaでは 開発エンジニアを募集しています https://linefukuoka.co.jp/career/developer