[iOS] アプリをAd Hoc配布可能にする手順について

はじめに

こんにちは。モバイルアプリサービス部の平屋です。

本記事では、Fabric Betaを使用してiOSアプリをAd Hoc配布可能にする手順を紹介します。

Fabricのサポート終了について

Fabricは現在Firebaseへ統合する作業の最中であり、2019年の中ごろまでにサポートが終了します。

本記事で使用するFabric Betaも同様にサービス終了する見込みです。2018/12/17現在、Fabric Betaの代替サービスであるFirebase App Distributionが未提供であるため、本記事ではFabric Betaを使用します。

検証環境

  • macOS Mojave 10.14
  • Xcode Version 10.0 (10A255)
  • CocoaPods 1.5.3

前提条件

  • Xcodeプロジェクトは新規で作成する
  • マニュアルでsigningする
  • CocoaPodsでFabric, Crashlyticsを導入する
  • CocoaPodsはXcodeプロジェクトのディレクトリ内にインストールする

目次

プロジェクトを作成する

Xcodeで新規プロジェクトを作成します。

  • 設定例
    • Product Name: AppDistributionSample
    • Organization Identifier: com.example
    • Bundle Identifier: com.example.AppDistributionSample

https://developer.apple.com/App IDProvisioning Profileを作成します。

  • 作成例
    • App ID
      • Name: AppDistributionSample
      • Identifier: XXXXXXXXXX.com.example.AppDistributionSample
    • Provisioning Profile
      • Type: iOS Distribution (Ad Hoc)
      • Profile Name: AppDistributionSample

XcodeでTARGET > Generalを開き、以下の操作を行います。

  • Signingセクションの「Automatically manage signing」のチェックをはずす
  • Signing (Release)セクションのProvisioning Profile > Download Profile > をクリックする
    • 先ほど作成したProfileを選択し、「Select Profile」をクリックする

Fabric, Crashlyticsをプロジェクトに追加する

Gemfile, Podfileをプロジェクトディレクトリのルートに追加します。

# Gemfile
source 'https://rubygems.org'

gem 'cocoapods'
# Podfile
platform :ios, '11.0'
use_frameworks!

target 'AppDistributionSample' do
    pod 'Fabric'
    pod 'Crashlytics'
end

以下のコマンドを実行します。

  • $ bundle install --path vendor/bundle
  • $ bundle exec pod install

FabricのRun Scriptをプロジェクトに追加する

API Key, Build Secretを確認する

Fabricのorganizationページ(https://fabric.io/settings/organizations/xxxxx 形式)を開き、API Key, Build Secretを確認します。

API Key, Build Secretのラベルをクリックすると、それぞれの値が下に表示されます。

Run Scriptをプロジェクトに追加する

XcodeでTARGET > Build Phasesを開いて「+」ボタンをクリックし「New Run Script Phase」を選択します。

Run Script Phaseが追加されるので、以下の操作を行います。

  • スクリプトの入力欄に以下を入力する
    • ${PODS_ROOT}/Fabric/run" <API Key> <Build Secret>
  • 「Input Files」セクションの「+」ボタンクリックし以下を入力する
    • $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

Fabricにアプリを追加する

Info.plistを更新する

Fabricに関する設定値をInfo.plistに追加します。

<?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>Fabric</key>
  <dict>
    <key>APIKey</key>
    <string>Enter Your API Key Here</string>
    <key>Kits</key>
    <array>
      <dict>
        <key>KitInfo</key>
        <dict/>
        <key>KitName</key>
        <string>Crashlytics</string>
      </dict>
    </array>
  </dict>

  ...

</dict>
</plist>

AppDelegateにコードを追加する

Fabric, Crashlyticsを初期化するコードをAppDelegateに追加します。

import UIKit

// 追加
import Fabric
import Crashlytics
// 

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // 追加
        Fabric.with([Crashlytics.self])
        // 
        return true
    }
}

アプリをRunする

アプリをRunすると、Run Scriptが走り、Fabricにアプリが追加されます。

アプリが追加されると以下のようなタイトルのメールが配信されます。

  • AppDistributionSample (com.example.appdistributionsample on ios) was just successfully added

Fabric Betaのテスターのグループを作成する

アプリ配布対象のテスターのグループを作成します。

Fabricで該当アプリのページ(https://fabric.io//ios/apps//issues 形式)を開き、「beta」をクリックします。

「Manage Groups」をクリックします。

Group name(例: all)を入力し、Enterを押します。

「Add Testers...」と書かれたテキストフィールドにテスターのメールアドレスを入力し、「+」ボタンをクリックします。

XcodeのSchemeをSharedに変更する

XcodeのManage Schemes画面を開き、ビルド時に使用するSchemeのSharedにチェックを入れます。

さいごに

iOSアプリをFabric Betaで配布可能にする手順を紹介しました。

次の記事では、fastlaneを導入してアプリを配布する手順を扱います。

参考資料