iOS版のビルド&実行手順

目次

  概要
  iOS版アプリケーションの作成
  【iOS7.0以降のデバイス向け】iOS10.0対応のために、マイクのユーザー使用許諾通知文の設定を行なう。
  クライアントでの動作確認
  断線検知からの再接続処理


概要

「ボイスチャット機能のサンプル」をiOS 版でビルドする場合の手順について

  ここでは、前述に述べた前準備を踏まえて、iOS 版実行バイナリをビルド生成し、実行する手順について述べます。


iOS版アプリケーションの作成

Xcode用プロジェクトを作成する

  Scenes In Build 画面上で「OfflineSceneReconnected.unity」 「OnlineSceneReconnected.unity」の2つのシーンが登録されていることを確認します。
  登録されているのを確認したら、ビルドターゲットのプラットフォームを iOS に切り替えてください。
  iOSへのターゲット切り替え(素材の変換処理)が完了するまで時間が掛かります。
  変換ダイアログに表示されているプログレスバーが完全に一杯になるまで、しばらくお待ちください。
  iOSへのターゲット切り替えが完了するとダイアログが自動的に閉じます。
  この状態で、画面左下にある [Player Settings...] のボタンをクリックしてください。
  [Player Settings...] をクリックすると、UnityEditor 側の Inspector に iOS プラットフォームのプロパティ設定画面が表示されます。

  この項目中の、Other Settings 内にある Identification > Bundle Identifier の項目に対し、
  iOS アプリケーションを識別するためのカスタムバンドルID を登録します。
  一般的にはドメインネーム+アプリケーション名を指定しますが、特に配信を考えなければ、任意の . 付きの文字列で構いません。
     (以下の画像では、com.monobitengine になっていますが、あくまで一例です。
      配信時には「独自のオリジナルな名前」を付けることは最低限行なっておきましょう。)

  iOSビルドしたものを AppStore でのリリースを配慮する場合、同項目の Other Settings 内にある
  Configuration > Scripting Backend の項目に対し、IL2CPP に設定してください。
     ※ IL2CPP に設定する理由については、以下のページを参照してください。
        Unity の iOS 64bit サポートについて
          http://japan.unity3d.com/blog/ios-64-bit-support-in-unity

  なお、IL2CPP に設定する場合、Target minimum iOS Version について、正しく 9.0 以降のバージョンに設定してください。
  カスタムバンドルIDの設定が終わったところで、もう一度 Build Settings ウィンドウに戻り、[Build] ボタンをクリックしてください。
  Xcode プロジェクトの作成場所を問われますので、 任意のディレクトリを指定し、RandomMatchingReconnected として保存します。
  Xcodeプロジェクトの出力作業も、その完了するまで時間が掛かります。
  出力ダイアログに表示されているプログレスバーが完全に一杯になるまで、しばらくお待ちください。
  しばらく待つと、指定したディレクトリ内に Xcode用のプロジェクトディレクトリ「RandomMatchingReconnected」が出来上がります。


【iOS7.0以降のデバイス向け】iOS10.0対応のために、マイクのユーザー使用許諾通知文の設定を行なう。

iOS10.0以降のiOSデバイスでは、ボイスチャットにおける「マイクの利用」に関する、ユーザー使用許諾通知文の設定が必要です。

  iOS10以降のデバイスの場合、アプリケーションがデバイスアクセスを要求するときに
  「ユーザー許可を適切に要求しないと、アプリケーションプロセス自体がクラッシュする」ように仕様変更されました。

  このため、ボイスチャットで必須となるマイクの使用許諾通知文(NSMicrophoneUsageDescription)の設定が必要で、
  この設定を含めないと iOS10 以降の iOS デバイスで動作させることができません。

  Unity 5.4.1 以降では、別途使用許諾要求に関するプロパティを組み込むことが出来ますが、
  ここでは便宜上全てのUnity5.xプラットフォームで対応できる方法について説明します。

  なお、この設定プロパティ項目は iOS7.0 以降より実装されているため、
  iOS10対応をした時点で、iOS7.0未満のOSでは動作しなくなる可能性がありますのでご注意ください。

Unity上でiOSビルドを選択して生成されるXcodeプロジェクトディレクトリ内の「Info.plist」に、使用許諾通知文を書き加えてください。

  Unity で生成した Xcode プロジェクトの中にある Info.plist をダブルクリックしてください。
  自動的に Xcode 上でこの設定ファイルが開きます。

  設定ファイルが開いたら、「Information Property List」の項目にカーソルを合わせ、以下の赤丸枠で示した「+」ボタンを押してください。

  すると新しい「Application Category」の項目と、その要素についてプルダウンリストが現れますので、リストの中から、
  Privacy - Microphone Usage Description の項目を見つけ、マウスクリックで選んでください。

  その Microphone Usage Description の項目について「Value」の部分をダブルクリックすると値が設定できます。
  ここでは、アプリケーションが起動した際に アプリケーションの利用者に対し、どういった文書で「マイクを使用する」通知を行なうか を設定します。
  ここはそのアプリケーションに応じて、任意の文字列を設定してください。
    (以下の例では「for VoiceChat MUN」としていますが、あくまで一例です。
     リリースするアプリケーションに合わせ、適切な説明文を記述してください。)

  設定が終わったところで、Mac(Xcode)のメニューから File > Save を選び、保存しましょう。
  保存した後は、info.plist を閉じてしまって構いません。

  この状態で Unity から出力した Xcode プロジェクトを立ち上げて起動すれば、
  iOS10.0以降のiOSデバイスでもクラッシュせずにボイスチャットの利用が可能です。


クライアントでの動作確認

Xcodeでビルドし、iOS端末にインストールする

  iOS端末に、Xcode経由でビルドしたクライアントをインストールします。
  まずは生成された Xcode プロジェクト内の .xcodeproj をダブルクリックし、Xcodeを開きます。
  Xcodeでプロジェクトを開いたら、iOS端末で実行するための、有効な Apple iOS Developer アカウントを設定します。
  プロジェクト名をクリックし、プロパティ内の General > Signing 内の 「Team」項目にて、Apple iOS Developer アカウントを設定してください。
  ここまでの設定が完了したら、iOSデバイスをPCに接続した状態でビルドします。

実行バイナリとUnityエディタの両方を使って、マルチプレイ動作確認を行なう

  iOS にインストールされた実行バイナリはアプリアイコンとして以下のように登録されますので、タップして実行してください。
  一方で、Unityエディタ上の実行ボタンも押します。

  実行バイナリ、Unityエディタともに以下のような画面に切り替わります。
  テキストボックスとボタンが3つ表示されます。
テキストボックス ルーム名を入力します。デフォルトで「roomName」としています。
Create Room ボタン 上記テキストボックスで入力したルーム名で、ルームを作成します。
Join Room ボタン 現在作成済みの、入室可能なルームの中から、ランダムで選択して入室します。(ランダムマッチング)
  以下、Windows版の画面で説明しますが、Android端末側でもインタフェースは一緒です。
  実行バイナリ、Unityエディタのいずれか一方で、任意の名前でルームを作成してみましょう。
  すると、もう一方で、作成したルームのルーム名と同名のボタンが現れます。
  このボタンを押すことで、該当するルームに入室することも可能です。(ルーム選択型のプレイヤーマッチング)
  また、Join Room ボタンでは、現時点で存在するルームの中からランダムに入室します。(ランダムマッチング)
  ルームを作成・入室すると、以下のような表示がなされます。
     ・ 自身のプレイヤー ID, ルーム名, 現在のルームの人数, ルーム入室の許可/拒否設定が表示されます。
     ・ Leave Room ボタンで、ルームから退室することが出来ます。
     ・ (ホストのみ) Start Game ボタンでゲームを開始することが出来ます。
  また、この段階から、ルームから離脱しない限り、同一ルームに存在するプレイヤーに対してボイスチャットを実行することができます。
  確認を終えたところで、Start Game ボタンを押してみましょう。
  UnityEditor側ではカーソルキーでSDユニティちゃんを動かすことができます。
  ただしiOSの入力インタフェースには現時点で対応していないため、iOS端末側からのSDユニティちゃんの操作は出来ません。
  ただし、UnityEditor/iOS ともに、オブジェクトの位置・姿勢・アニメーション同期も取れます。
  (スクリーンショットの都合で値が違っていますが、制限時間(Rest Frame)も同期しています。)
  プレイ中に関しても、ルームから離脱しない限り、同一ルームに存在するプレイヤーに対してボイスチャットを実行することができます。


断線検知からの再接続処理

断線検知画面

  断線を検知すると、以下のようなポップアップウィンドウが表示されます。
  この時点で断線していますので、断線したルームに対するボイスチャットの機能も失われます
  「Yes」を選択すると、再接続し、切断前の状況から再開できます。再開し、同一ルームに入室処理を自動的に終えたところで、ボイスチャットが再開できます
  「No」を選択すると、切断し、最初の画面に戻ります。