のんだくれのブログ

のんだくれのブログ

お酒はあまり吞みません。

Visual Studioで「iOS 配布」がグレー表示のため配布用の証明書が作成できない問題が解決した

概要

  • .NET MAUIで開発中のiOS版アプリをアドホック配布しようとすると、Visual Studioで「iOS 配布」がグレー表示のため配布用の証明書が作成できなく、困りました
  • その問題が解決出来たので、書き残します

経緯

  • どのような手順で作成したかは忘れてしまいましたが、アドホック用の証明書を作成できていて、配布も出来ていました
  • Macを新調したことで、Xcodeは14.2から16になり、ついでにWindowsも再インストールしたのでMAUIワークロードも最新にしました
  • すると、概要に書いた通りiOSの配布を行うための証明書をVisual Studioで作ることができない
    • Visual Studio>ツール>オプション>Xamarin
      • ロールが「ACCOUNT_HOLDER」になっているせいか、「iOS 開発」は選択できても「iOS 配布」がグレー表示で選択できない
      • そのため、Visual Studioから配布用の証明書を作成できない
  • そこで、Apple Developerサイトで「Apple Distribution」の証明書を作成したが、それを使っても解決しない
    • 作成した証明書は「キーチェーン内にありません」とビルドエラーが出る

解決

  • Apple Developerサイトで「iOS Distribution」の証明書を作成すると、ビルドも通り、配布も成功した
    • Apple Distribution」ではなく「iOS Distribution」で証明書を作成するのが肝
  • 配布ファイルを作る際のAd Hoc」ボタンを押した後に、iPhone Distribution」を選択するのを忘れないこと
    • iOS Distribution」 = 「iPhone Distribution」のようだ

手順

略称 説明
[Mac] Macでの手順
[VS] Visual Studioでの手順
[AD] Apple Developerサイトでの手順
  • CSRファイルの作成
    • [Mac] キーチェーンアプリでCertificate Signing Request (CSR)ファイルを作る
  • 証明書(Certificates)の作成
    • [AD] 「iOS Distribution(App Store Connect and Ad Hoc)」で作成する(ここでCSRファイルを使う)
  • プロビジョニング(Profiles)の作成
    • [AD] 「Ad Hoc」で作成し、先ほど作った証明書を選択しておく
  • プロビジョニングのダウンロード
    • [VS] 「ツール>オプション>Xamarin>Apple アカウント」でプロビジョニングをダウンロードする
      • 先ほど作った作った証明書は「キーチェーン内にありません」と表示されているが、この状態でもビルドは通る(「Apple Distribution」ではビルドは通らないのに、何故?)
  • 配布ファイル作成
    • [VS] 署名IDの選択肢で「iPhone Distribution」を選択する(手動プロビジョニングにしているから?)

以上

.NET MAUIで開発中のiOS版アプリをデバッグ実行するとMacへのインストールに失敗する

リソースファイルのプロパティ設定画面

.NET MAUIでアプリを開発していて、Visual StudioからiOS版をデバッグ実行すると当該アプリをMacにインストールしようとしますが、

インストールできませんでした。 Failed to install the app 'XXXXX' on the device 'iOS 17.2 (21C62) - iPhone 15': simctl returned exit code 22

のようなダイアログが表示されて、実行できません。

ネットで検索しても「CFBundleVersionの記述が原因」とかしか出てきません。

原因を調べようがないため、アプリのプロジェクトを最初から作り直したところ、インストールに成功して実行することが出来ました。

原因は、独自に追加したリソースファイル(appsettings.json)のプロパティ設定で、「出力ディレクトリにコピー」を「常にコピーする」にしていたのが原因だったようです。デフォルト状態の「コピーしない」に戻すと正常動作しました。

恐らく、出力ディレクトリにコピーする設定のファイルが1つでもあるとインストールに失敗するのでしょう。

ちなみに、「コピーしない」でもリソースファイルは読み込めました。

留守番電話サービスを使わずに docomo iPhone で留守番電話

2024年10月28日 更新

以下の通知があり、この方法は使えなくなります。

ip-phone-smart.jp

しかし、iPhoneのOSにライブ留守番電話が実装されたので、そちらで我慢。


 

有料の留守番電話サービスを契約せずにiPhoneで留守番電話機能を使いたかったのですが、こちらに書かれた方法で望んだ通りに実現出来ました。

ドコモでも月額基本料無料の留守番電話を実現

http://god-support.blogspot.jp/2012/12/fusion-ip-phone-smart.html

 

転送している間の通話料が掛かりますが、それ以外はデータ通信だけなので希望通りです。

 

ちなみに、記録された伝言メッセージは、

  • wav形式
  • 22秒間で393KBのファイルサイズ

でした。

iPhoneで再生出来ます。ただし端末下部のスピーカーから音が出ます。

イヤホンを刺せばイヤホンのみから音が出ます。

 

iPhoneで着信した時の挙動は次のようです。

 

着信→スリープボタン(音量ボタンでもOK)押す→着信音が消えるがコールは続く

  →もう一度スリープボタン押す→転送が始まる

 

着信中にボタンを押さなければ、転送電話サービスで設定した秒数が経過した後に転送が始まります。