Unity製アプリをiOSでリリースするまでにやったこと

App

作業時間記録アプリ「MinuteMind」をUnityで開発し、Androidに続いてiOSにも対応させて無事App Storeに公開しました。
この記事では、iOS対応のためにやったこと、詰まったポイント、審査通過までの流れをまとめています。


開発環境

  • Unity 2022.3 LTS
  • Xcode 15
  • macOS Ventura
  • 開発対象:iOS 15以降
  • Apple Developer Program(年額12,800円)

JSONファイルの読み込み:UIDocumentPicker連携

AndroidではSAF+AAR連携でGoogle Driveからファイルを選択していましたが、
iOSでは UIDocumentPickerViewController を使って、ユーザーにファイルを選択してもらう形式にしました。

構成概要

  • Unityからネイティブコードを呼び出し(PostProcessBuildでブリッジ追加)
  • UIDocumentPickerでJSONファイルを選択
  • 選択完了後に UnitySendMessage() でUnityへ通知
// ネイティブ側(Swift)で選択完了後にUnityへ通知
UnitySendMessage("MainBridge", "OnJsonImported", jsonString)

通知(Local Notification)とカスタムサウンド対応の試み

iOSでカスタム通知音を使いたくて、以下のような対応を検討・試行しました:

  • .caf ファイルをXcodeプロジェクトに追加(Copy Bundle Resources に含める)
  • soundName を通知に指定
  • AVAudioSession や category 設定で音が鳴るように調整

しかし、Unity標準の Mobile Notifications パッケージと組み合わせるのが想像以上に手間だったため、
今回は一旦カスタムサウンドを見送り、iOSのデフォルト通知音を使用する形に戻しました。

※関連して Info.plist から UIBackgroundModes の項目も削除しました

Appleの審査ガイドラインでは、実際にバックグラウンド実行しない場合に UIBackgroundModes を指定しているとリジェクト対象になるため、
最終的に使用せず削除しています。


Unity IAP(課金処理)の実装と注意点

iOSでも同じ商品IDを使用

  • Androidと同様に「広告非表示」だけを課金要素に実装
  • com.minutemind.removeads などのIDを App Store Connect 側にも追加
  • サンドボックス環境での購入確認には少しコツが必要(テストユーザー登録)

App Store審査とリジェクト対策

初回申請時にやったこと:

  1. App Store Connectで新規アプリ登録
  2. 各種情報(プライバシー、広告設定など)を入力
  3. Unityでビルド → XcodeでArchive → Upload
  4. 審査に提出(TestFlight配布→本番リリース)

リジェクトされた理由と対処法

リジェクト理由対応内容
UIBackgroundModesが無効なのに設定ありInfo.plist から削除して再ビルド(※サウンド機能簡略化により不要になった)
「サードパーティと共有されるデータがありますか?」Google Drive は連携するが、ユーザー操作によるものと説明
アプリが戻ってこない問題UIActivityViewController 使用時の挙動を改善(共有シート)

最終的な申請〜公開までの流れ

  1. Xcodeで ArchiveApp Store Connect にUpload
  2. TestFlight審査:約30〜60分で通過
  3. 本番審査:約1営業日で通過(特に審査員対応はなし)

関連リンク


おわりに

iOSでのアプリ公開は、Androidと比べて準備や申請手順がやや多く、最初は戸惑うこともありました。
しかし、環境さえ整えばUnityでもスムーズにiOSアプリを出せると実感できました。

同じようにUnityでiOSアプリを出したい方の参考になれば嬉しいです!

コメント

タイトルとURLをコピーしました