Advertisement
Advertisement

More Related Content

Slideshows for you(20)

Similar to もしiOS8のカスタムキーボードがガジェットのSDKを搭載したら Ver.#ios8yahoo(20)

Advertisement

Recently uploaded(20)

もしiOS8のカスタムキーボードがガジェットのSDKを搭載したら Ver.#ios8yahoo

  1. iOS8 App Extensions もしiOS8のカスタムキーボードが ガジェットのSDKを搭載したら カスタムキーボードを バーコードリーダーと 連携させてみた 2014/10/18 Ver.1.0.0 iOS 8/Swift エンジニア勉強会@ヤフー - connpass
  2. 自己紹介 ❖ プログラム3年ぐらい ❖ 文系! ❖ iOS / 技術ネタ 初発表 @niwatako
  3. B2B向けiOSエンジニアです
  4. モバイルソリューションの
  5. iOS向けハード製品も出しています。
  6. iPhone / iPod touch 装着型、バーコードリーダー  モバイルソリューションの
  7. しかし課題が…
  8. バーコードリーダー製品の課題 アプリへのSDK組み込みが必須。 ・SDK搭載の専用アプリを開発するコスト ・他社製品からの乗り換え時のSDK差替コスト ・一般向けアプリや  Apple標準アプリにはSDKが組み込めない!
  9. そこへiOS8が登場
  10. iOS8 App Extensions カスタム キーボード 独自キーボードの作成が可能に
  11. Before ピッ(読み取り) ◯ × SDK + APP APP 標準APP × SDKなし SDKなし SDK対応済みアプリでのみ 利用可能
  12. After!? ピッ(読み取り) ◯ + APP APP 標準APP ◯ ◯ キーボード SDK どのアプリでも 利用可能
  13. SDKを組込んだキーボードを作れば 全てのアプリで バーコードリーダーが使える?? でもそんなこと、本当にできるの?
  14. やってみました。
  15. Main subject #もしガジェ iOS8 のカスタムキーボードに ガジェット(External Accessory)と連携 する機能を埋め込むことは出来るのか?
  16. まず カスタムキーボードについて
  17. #もしガジェ About カスタムキーボードiOS8 App Extensions
  18. カスタムキーボードは App Extensions の一部 Extensionポイント標準的なApp Extensions Today (iOSおよびOS X) 通知センターの「今日(Today)」ビューに置いて、 表示 内容を即座に更新し、あるいは簡単なタスクを 実行する (このExtensionをウィジェット(widget)と呼 ぶ) Share (iOSおよびOS X) 情報投稿サイトに記事を投稿して他のユーザと共有する Action (iOSとOS X、UIありとUIなし) ホストアプリケーションで表示されるコンテンツを操作 または表示する Photo Editing (iOS) 「写真(Photos)」アプリケーションで写真や動画を編集 する Finder Sync (OS X) ファイルの同期状態に関する情報をFinderに直接表示し ます。 ドキュメントプロバイダ (iOS、UIありと UIなし) ファイルのリポジトリにアクセスして管理します。 カスタムキーボード(iOS) iOSシステムキーボードに代わるカスタムキーボードを、 あらゆるアプリケーションで使えるようにします。
  19. How to develop?
  20. App Extension の全体像
  21. App Extension はアプリに同梱して配布 実行時は独立したサンドボックスを持つ App Extension は、アプリの中に組み込む形で配布します。 App Extensionを同梱しているアプリのことを、 App Extensionに対して Containing App と呼びます。 Containing App と App Extension は、サンドボックスが別々で独立しています。
  22. 同梱してAppStoreから配布 エクステンション エクステンションを バンドルする親アプリ エクステンションを 呼び出して使うアプリ App Extension はアプリに同梱して配布 実行時は独立したサンドボックスを持つ App Extension は、アプリの中に組み込む形で配布します。 App Extensionを同梱しているアプリのことを、 App Extensionに対して Containing App と呼びます。 Containing App と App Extension は、サンドボックスが別々で独立しています。
  23. カスタムキーボードには 親になるアプリが必要。
  24. 用意するもの:既存プロジェクト
  25. 用意するもの:既存プロジェクト
  26. 続いてアプリに カスタムキーボードエクステンションを 追加します
  27. カスタムキーボードのターゲットを追加
  28. カスタムキーボードのターゲットを追加
  29. カスタムキーボードのターゲットを追加
  30. 聞かれたらSchemeをActivate
  31. 追加されました!
  32. 追加されました!
  33. 実行してみます
  34. Run!(Safariで)
  35. ※エクステンションは単体では起動できません。  エクステンションを呼び出すHostAppを起動し、  HostApp上でエクステンションを起動します。  Safariを選んで実行してみます。
  36. なにも起きない! キーボード見えない。。。
  37. シミュレーターの 設定の問題でした
  38. Toggle Software Keyboard
  39. 標準キーボードしか出ない!
  40. キーボードは設定画面で追加しないと キーボードを切り替えた時に現れないようです! デバッグ実行でキーボードを指定してるんだから直接起動したらいいのに。。。
  41. 設定でキーボードを追加 設定 > 一般 > キーボード > 他社製キーボード から、作ったキーボードを有効化
  42. 現れた! 灰色のこれ
  43. KeyboardViewController デフォルトでキーボード切り替えボタンが 生成されています。
  44. KeyboardViewController キーボードでできる事…基本はこれだけ! 入力文字列を渡すまでの間に、 どのように文字列を生成するか、加工するかが、 開発者の腕の見せどころ!
  45. 続いてガジェットについて
  46. #もしガジェ About External Accessories Communicating with an Accessory
  47. ExternalAccessoryFramework 外部機器と接続するにはこのフレームワークが必須です!
  48. Supported external accessory protocols ※ info.plist さらに、 接続する機器のID(Appleに認定された外部機器が持ってる)を 指定すると、機器とアプリが連携できるようになります。
  49. これで 特定の外部機器と連携が可能に あとは機器によって必要なSDKや必要な制御があるので それに合わせて実装します。 一般に、外部装置を制御するSDKが機器の開発元から配布されています。
  50. いざ融合
  51. 用意するもの:既存プロジェクト
  52. カスタムキーボードのターゲットを追加
  53. 追加されました!
  54. External Accessory 対応 App ExtensionのKeyboardターゲットに対して Frameworkの追加とPlistへの記入でAsReaderとの接続に対応
  55. AsReader SDK AsReaderManagerクラスバーコードリーダーを制御してくれるクラス @interface AsReaderManager : NSObject<RcpDelegate> // AsReaderManagerDelegateプロトコルを実装したクラスをデリゲートとして保持 @property (assign)id<AsReaderManagerDelegate> delegate; @end AsReaderManagerDelegateプロトコル @protocol AsReaderManagerDelegate <NSObject> @optional // バーコードデータを通知するメソッド - (void)barcodeData:(NSString *)barcode; @end 読取りを通知するプロトコル
  56. KeyboardViewController キーボード側で、読み取ったバーコードの値を受け取るための AsReaderManagerDelegateプロトコルを実装することを宣言 @interface KeyboardViewController : UIInputViewController <AsReaderManagerDelegate> - (void)barcodeData:(NSString *)barcode; @end
  57. KeyboardViewControllerにSDKを実装 viewDidAppear でSDKをインスタンス化して自身をデリゲートにセット。 @implementation KeyboardViewController - (void)viewDidAppear:(BOOL)animated{ // SDKのインスタンス化とデリゲートのセット [[AsReaderManager sharedManager] setDelegate:self]; } - (void)barcodeData:(NSString *)barcode{ // デリゲートで受け取ったバーコードデータをキーボード入力文字として利用 [self.textDocumentProxy insertText:barcode]; } @end
  58. KeyboardViewControllerにSDKを実装 @implementation KeyboardViewController - (void)viewDidAppear:(BOOL)animated{ // SDKのインスタンス化とデリゲートのセット [[AsReaderManager sharedManager] setDelegate:self]; } - (void)barcodeData:(NSString *)barcode{ // デリゲートで受け取ったバーコードデータをキーボード入力文字として利用 [self.textDocumentProxy insertText:barcode]; } @end バーコードを読み取った時にデータを通知で受け取る。 バーコードはそのままキーボード入力としてDocumentProxyに渡す。
  59. うごかしてみた
  60. だめだった
  61. まだできる事がある ※ info.plist
  62. RequestsOpenAccess YES
  63. “フルアクセスを許可”が設定に登場
  64. これでどうでしょう
  65. できた Safari上のWEB検索フォームで 作ったキーボードを使ってみると バーコード読取ができました!
  66. できた 読み取ったバーコードで検索した結果と、本の表紙が一致! 正しくバーコードを読めています
  67. まとめ ❖ カスタムキーボードは簡単に作れた ❖ 出来る事は、文字列入力と1文字削除だけ ❖ ただし裏で結構いろんな処理が実行出来る ❖ Lightning接続した外部機器を制御するのも可 ❖ キーボードでゲームしたり遠隔操作したり出来る…?
  68. App Extensions プログラミングガイド ご興味ある方はぜひこちらもご覧ください。 ❖ https://developer.apple.com/jp/devcenter/ios/ library/documentation/ExtensibilityPG.pdf ❖ 日本語!! ❖ カスタムキーボード (P.71~)
  69. 続編 ❖ 10/22(水) Potaitotips ❖ 11/01(土) Cocoa勉強会関西 ★AppStoreリリース版担当者登場 ❖ 11/15(土) Cocoa勉強会関東 SDKを組み込んだキーボードが AppStoreに公開できるのか?など 今後お話できればと思います。 (現在結果待ち…)
  70. (宣伝)
  71. ハードとソフトの融合で 業務の世界に革命を起こしたい iOSエンジニア募集中
  72. 導入企業様、 対応アプリデベロッパー様募集中
  73. ご清聴ありがとうございました
Advertisement