Anúncio
Anúncio

Mais conteúdo relacionado

Similar a TestFlightみたいなのを自作する(20)

Anúncio

Mais de Tomoki Hasegawa(20)

Último(20)

Anúncio

TestFlightみたいなのを自作する

  1. TestFlightみたいなのを 自作する デジタルサーカス(株)長谷川智希
  2. 長谷川智希 とも き @tomzoh
 とむぞう 開発系趣味 その他趣味 Webサイト開発, iOSアプリ開発 レンタルカートレース, 電子工作(mbed), … TOMZOH お仕事 スマホアプリ受託開発 Mgr デジタルサーカス(株) 副団長CTO Facebook CakePHP iOS
  3. デジタルサーカス(株) ・ Webサイト受託開発 ・ スマホアプリ受託開発
 
 ・ 自社サービス (PHP, Drupal, CakePHP) (iOS, Android)
 
 (http://appbuilder.jp) Twitter: @tomzoh
  4. Twitter: @tomzoh
  5. 今日のテーマ: TestFlightみたいなのを 自作する
  6. アプリ受託開発
  7. お客さま企業 ご担当者様 PM デザイナ iOS Android Web アプリユーザ 体制
  8. 弊社のアプリ開発のステップ 要件定義・設計 開発 テスト アプリ申請 ご確認/最終化 • アプリの完成に対してコミットする 契約。 • ウォーターフォール気味にプロジェ クト進行する必要がある。 • とは言いつつ紙で「要件定義」して も実際に動かしてみたら「ちょっと 違ったね😓」というのはある。 • 開発・テスト後に実際にお客さまに実 際に触って頂いて、手触り感の確認、 修正を繰り返す。(最終化)
  9. 弊社のアプリ開発のステップ 要件定義・設計 開発 テスト アプリ申請 ご確認/最終化
  10. 弊社のアプリ開発のステップ 要件定義・設計 開発 テスト アプリ申請 ご確認/最終化 バイナリ 作成&配布
  11. 弊社のアプリ開発のステップ 要件定義・設計 開発 テスト アプリ申請 ご確認/最終化 動作確認 バイナリ 作成&配布
  12. 弊社のアプリ開発のステップ 要件定義・設計 開発 テスト アプリ申請 ご確認/最終化 動作確認 プログラム 修正 バイナリ 作成&配布
  13. 弊社のアプリ開発のステップ 要件定義・設計 開発 テスト アプリ申請 ご確認/最終化 動作確認 プログラム 修正 バイナリ 作成&配布
  14. iOSアプリ配布プラットフォーム • 2009∼ メール配布 • 「UDIDの調べ方🔎」「iTunesにドラッグ&ドロップします」的 な手順書。 • 個人所有の端末を同期しちゃって端末が真っ白になる事故😱 • 2010∼ TestFlight • 「更新版アップしました」「確認しました」大分便利😇 • 「TestFlight導入手順書」😕 • 2011∼ InHouse配布
  15. InHouse配布
  16. iOSのアプリ配布 • AppStore経由で配布する配布 • (Appleの)TestFlightもこれ。 • iTunesやiPhone構成ユーティリティを使って、
 ケーブル経由でインストールする • 独自に構築したWebサイトから通信回線経由で
 配布する。
  17. iOSのアプリ配布 • AppStore経由で配布する配布 • (Appleの)TestFlightもこれ。 • iTunesやiPhone構成ユーティリティを使って、
 ケーブル経由でインストールする • 独自に構築したWebサイトから通信回線経由で
 配布する。 InHouse配布
  18. iOS InHouse配布の仕組み plistファイル
 配布サーバ バイナリ配布サーバ iOS端末
  19. iOS InHouse配布の仕組み plistファイル
 配布サーバ バイナリ配布サーバ iOS端末 ①plistファイルを取得
  20. iOS InHouse配布の仕組み plistファイル
 配布サーバ バイナリ配布サーバ iOS端末 ①plistファイルを取得 ②plistファイルから
 ipaのURLを取得
  21. iOS InHouse配布の仕組み plistファイル
 配布サーバ バイナリ配布サーバ iOS端末 ①plistファイルを取得 ②plistファイルから
 ipaのURLを取得 ③ipaファイルを 取得してインストール
  22. HTMLからplistファイルへのリンク <a href=‘itms-services://?action=download- manifest&url=https://path/to/plist/foo.plist'>   <span class=‘title’>2015/06/30_2版 (2回⽬目)</span>   <span class=‘comment’>2015/06/30(Pre)</span> </a>
  23. HTMLからplistファイルへのリンク <a href=‘itms-services://?action=download- manifest&url=https://path/to/plist/foo.plist'>   <span class=‘title’>2015/06/30_2版 (2回⽬目)</span>   <span class=‘comment’>2015/06/30(Pre)</span> </a> 固定
  24. HTMLからplistファイルへのリンク <a href=‘itms-services://?action=download- manifest&url=https://path/to/plist/foo.plist'>   <span class=‘title’>2015/06/30_2版 (2回⽬目)</span>   <span class=‘comment’>2015/06/30(Pre)</span> </a> 固定 plistファイルのURL
  25. HTMLからplistファイルへのリンク <a href=‘itms-services://?action=download- manifest&url=https://path/to/plist/foo.plist'>   <span class=‘title’>2015/06/30_2版 (2回⽬目)</span>   <span class=‘comment’>2015/06/30(Pre)</span> </a> https:// iOS7以上でhttps必須
  26. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>http://example.com/path/to/ipa/foo.ipa</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>com.example.foo</string> <key>bundle-version</key> <string>3.1.2</string> <key>kind</key> <string>software</string> <key>title</key> <string>2015/08/31 (API:xxxx)【ver1.0.1】</string> </dict> </dict> </array> </dict> </plist> plistファイル
  27. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>http://example.com/path/to/ipa/foo.ipa</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>com.example.foo</string> <key>bundle-version</key> <string>3.1.2</string> <key>kind</key> <string>software</string> <key>title</key> <string>2015/08/31 (API:xxxx)【ver1.0.1】</string> </dict> </dict> </array> </dict> </plist> plistファイル
  28. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>http://example.com/path/to/ipa/foo.ipa</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>com.example.foo</string> <key>bundle-version</key> <string>3.1.2</string> <key>kind</key> <string>software</string> <key>title</key> <string>2015/08/31 (API:xxxx)【ver1.0.1】</string> </dict> </dict> </array> </dict> </plist> plistファイル <key>url</key> <string>http://example.com/path/to/ipa/foo.ipa</string>
  29. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>http://example.com/path/to/ipa/foo.ipa</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>com.example.foo</string> <key>bundle-version</key> <string>3.1.2</string> <key>kind</key> <string>software</string> <key>title</key> <string>2015/08/31 (API:xxxx)【ver1.0.1】</string> </dict> </dict> </array> </dict> </plist> plistファイル
  30. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>http://example.com/path/to/ipa/foo.ipa</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>com.example.foo</string> <key>bundle-version</key> <string>3.1.2</string> <key>kind</key> <string>software</string> <key>title</key> <string>2015/08/31 (API:xxxx)【ver1.0.1】</string> </dict> </dict> </array> </dict> </plist> plistファイル
  31. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>http://example.com/path/to/ipa/foo.ipa</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>com.example.foo</string> <key>bundle-version</key> <string>3.1.2</string> <key>kind</key> <string>software</string> <key>title</key> <string>2015/08/31 (API:xxxx)【ver1.0.1】</string> </dict> </dict> </array> </dict> </plist> plistファイル <key>title</key> <string>2015/08/31 (API:xxxx)【ver1.0.1】</string>
  32. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>http://example.com/path/to/ipa/foo.ipa</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>com.example.foo</string> <key>bundle-version</key> <string>3.1.2</string> <key>kind</key> <string>software</string> <key>title</key> <string>2015/08/31 (API:xxxx)【ver1.0.1】</string> </dict> </dict> </array> </dict> </plist> plistファイル <key>title</key> <string>2015/08/31 (API:xxxx)【ver1.0.1】</string>
  33. InHouse配布システム@デジタルサーカス • プロジェクトごとに割り当てた特 定のURLをiPhoneで開くとアッ プされたアプリの一覧を表示。 • タップでインストール👍
  34. InHouse配布システム@デジタルサーカス • プロジェクトごとに割り当てた特 定のURLをiPhoneで開くとアッ プされたアプリの一覧を表示。 • タップでインストール👍
  35. InHouse配布システム@デジタルサーカス • Subversionの特定リポジトリに ipaをコミットすると一覧として 表示。 • ファイル名からタイトルを生成。 • コミットログをコメントとして表 示。
  36. まとめ
  37. まとめ • InHouse配布を使うとTestFlightみたいなのを簡単 に作れる。 • HTMLからXML形式のplistファイルに itms-services:// でリンクする。   • plistにipaのパスが書いてある設計。 • ipaのURLはhttpsの必要あり。
  38. ありがとうございました @tomzoh デジタルサーカス(株) 声かけてください We re hiring!!
  39. Future Works • ビルド自動化したい😓 • 今は自動化そのものはかんたん。 • ソースを特定のブランチにPUSHしたらビルド。 • アプリの設定を自動表示したい • 使っている証明書, APIの向き前, Bundle ID, Version, Build • 新規プロジェクト開始時の設定を簡単にしたい😕 • App ID, 証明書の作成, PUSH通知用証明書の作成。 OSSで良いのがあったら教えてください。
  40. 参考: 認証ダイアログ • EnterpriseのProvisioningProfileで 署名したバイナリをインストールし、 実行すると認証ダイアログが表示され る。 • iOS9では[信頼]ボタンが表示されず、 設定.app → 一般 → プロファイルか ら明示的に信頼設定する必要アリ。
Anúncio