MAUIでiOSアプリの開発!

MAUIを使ったiOSアプリの開発についての技術的なメモです。

Commandパラメータの受け取り方

画面に複数のボタンを配置して、バインド先のメソッドは1つにして、CommandParameterの値で押下したボタンを判別する場合。 ネットで探してもなぜかすぐには見つからなかったので、メモしときます。 Xaml ※「DialogButtonType」は列挙体 <Button Command="{Binding Source={x:Reference Dialog}, Path=DialogOkCommand}" CommandParameter="{x:Static local:DialogButtonType.DialogOkButon}" ・・・ > </button>

各世代のMacでXamarinのビルドしたときにかかる時間

最近Mac mini(M1)を購入したので、Intelの前世代のMacとXamarinビルド時間を比較してみました。WindowsのVisualStudioで、クリーンした状態からビルドにかかった時間を計測しました。 iMac(2017) ・プロセッサ:2.3GHz デュアルコアIntel Core i5 ・メモ…

System.Text.JsonのJsonSerializer.Serializeで例外が発生

System.Text.JsonのJsonSerializer.Serializeを使ってクラスオブジェクトをJson文字列に変換しようとしましたが、以下の例外が発生しました。 System.TypeInitializationException: The type initializer for 'System.Text.Json.JsonSerializer' threw an ex…

WebAPIを使うiOSアプリで通信のテストをする場合(その2)

以前、Mac上のiOSシミュレータのアプリからWebAPI(https/自己証明書)通信を行うと例外が発生するので、httpでアクセスする方法について記載しましたが、回避する方法がありました。 iOS シミュレーターと Android エミュレーターからローカル Web サービ…

WebAPIを使うiOSアプリで通信のテストをする場合

サーバ(Windows)とWebAPIで通信を行うiOSアプリを開発しています。 テスト用にWindowsにASP.NETのWebAPI2のアプリを立ち上げて、Mac上のiOSシミュレータのアプリからWebAPI(https)通信を行ってみました。 結果、HttpClientのメソッドを呼び出したところ…

sqlite-net-pclで使用するテーブル定義用のクラスに、複数のPrimaryKeyを指定する方法

SQLiteでテーブル定義用のクラスを使用しますが、PrimaryKeyを複数指定する方法について。 Xamarin.iOS SQLite.NET を使用する - Xamarin | Microsoft Docs より、複数の主キーには対応してないとのこと。 PrimaryKeyが1つなら、 [Table("stock")] public c…

アプリ内に作成されるファイルが、Mac上のどのパスに格納されるか確認する方法

NLogを使ってファイルを出力したり、SQLiteのdbファイルをアプリ内に格納しています。これらファイルの内容を確認する為に、シミュレータ上に作成されるパスをMac上で調べる方法です。 今まではデバッグ実行中に 「System.Environment.GetFolderPath(System.…

SQLiteのdbファイルをアプリに埋め込む

事前に用意したdbファイルをアプリに埋め込む方法について。 以下のサイトを参考にさせていただきました。 Xamarin.FormsでSQLiteのDBを埋め込んでアプリを配布する - nuits.jp blog ポイントは以下です。 ・dbファイルをXamarinプロジェクトに追加して、”埋…

Mac miniを隅っこに縦置き

mac

メインマシンがWindowsなので、MacはVNCでリモートで繋いでいます。 Wifi内蔵されているので、部屋の隅っこにコンセントだけ差して立てて置いています。 スタンドは以下のが安いしMacBookでも使えるのでお勧めです。 KAKETEノートパソコン スタンド 縦置き …

Windows上のXamarinでデバッグ実行したときに、ブレイクポイントで処理が止まらない

WindowsのXamarinでデバッグ実行したときに、ブレイクポイントを設定しているのに処理が止まりませんでした。 調べたところ、以下の設定で止まるようになりました。 ・プロジェクトのプロパティを表示します ・「ビルド」から「詳細設定」ボタン押下し、「ビ…

Xamarin simulator 「デバイス XXX が見つかりませんでした」

Xamarinの環境をセットアップして、いざデバッグ実行すると、「デバイス XXX が見つかりませんでした」のエラーが表示されてシミュレータが立ち上がりませんでした。 調べてみると以下のサイトで色々やりとりがされてました。 xamarin.ios - Xamarin iOS sim…

デバッグ実行時に「アプリケーションを実行する前に有効なデバイスを選択してください。」

デバッグ実行の▶を押したときにこのメッセージが表示されて実行できませんでした。この時▶の右に表示されてたのは「Simulater」で、端末の名称は表示されてませんでした。 VisualStudioを再起動して、Macとペアリングしてしばらく待つと、▶の右の「Simulater…

M1チップ搭載のMac miniの購入

2011年のmacbookではXamarinのシミュレータ実行が重すぎて実用に耐えられませんでしたので、M1チップ搭載のMac miniを購入しました。 メインマシンはWindowsなので、スペックは最小構成(メモリ:8GB、ストレージ:256GB)のものにしました。値段は79,800円…

新しいバージョンのXamarinプロジェクトを古いMacで実行しようとすると、シミュレータが起動できない

前回、最新のXamarinのバージョンで作成したプログラムを古いMac上のVisualStudio for macでビルドしましたが、今度はデバッグ時に起動するデバイスが「汎用シミュレーター」から変えられなくなりました。 以前も似たような現象がありましたが、 xamarinapp.…

新しいバージョンのXamarinプロジェクトを古いMacでビルドしようとすると、XCodeのバージョンがあわない

会社で作成したXamarinのサンプルプログラムを家の古いMacで動かそうと思い、プロジェクトのファイル一式をMacにコピーしてVisualStudio for macで開いたところ、XCodeのバージョンが古いとの警告が。 XCodeをアップデートしようと思いAppStoreを確認しまし…

シミュレータではアプリが正常に起動するが、実機では起動しない場合

iOSアプリをシミュレーター上では正常に起動・実行できますが、実機に入れて起動するとすぐに落ちる現象が発生しました。 こちらのサイト Xamarin を使えば iPhone 端末が要らない、ワケがない によると、・iOSシミュレーター上のアプリと、実機向けのアプリ…

シミュレータではアプリが正常に起動するが、実機では起動しない場合

iOSアプリをシミュレーター上では正常に起動・実行できますが、実機に入れて起動するとすぐに落ちる現象が発生しました。 こちらのサイト Xamarin を使えば iPhone 端末が要らない、ワケがない によると、・iOSシミュレーター上のアプリと、実機向けのアプリ…

VisualStudio for Macで実機にインストール時にエラーになる

VisualStudio for Macにて、実機を接続してインストール実行したところ、ビルドはエラー0件で正常に終わりますが、「アプリケーションをデバイスにアップロードできませんでした。」となり、失敗しました。 エラーとしては、error HE0004: Could not load t…

無料アカウントで作成したipaファイルを、開発用Macに接続した事がないiPadにインストールできるか?

結論として、できませんでした。 手元の開発用Macでアプリを作成し、実機にインストールして動作確認しました。他所で動作確認してもらうためにipaファイルを作成し、送付してインストールを試してもらいました。 Xcodeから実機にインストールすると、エラー…

ドラムロールをコントロールに埋め込み

ドラムロールはピッカーコントロールを使って実装できますが、これだと画面下部にドラムが表示されます。コントロールの中にドラムロールを埋め込みたい場合、WkWebViewを埋め込んだときと同様に、カスタムレンダラーによりiOSのUIPickerViewコントロールを…

Web上でクリックした座標をネイティブ側で取得する

Webを表示するアプリにて、Web画面上でクリックした場所にネイティブで何か表示したい場合、Web上の座標→ネイティブ上の座標に変換する必要があります。 Web内のJavaScriptでクライアント座標を取得してネイティブ側に通知し、ネイティブ側でその座標にコン…

Webを表示するアプリ開発

Xamarin.FormsでWebを表示するアプリはWebViewを使えば作成できますが、機能が限定されていますので、それぞれのプラットフォームに合わせて拡張させないと役に立ちません。 以下を参考にカスタムレンダラーを使って拡張したWeb画面を表示させることができま…

画面の解像度と、プログラム上の座標が異なる

iPadminiで開発をしていますが、xamlの「AbsoluteLayout.LayoutBounds」で指定する絶対座標・サイズが、実機の解像度とは異なった値で表示されていました。例えば100と指定した場合、実機の画面上は200の位置に表示されました。 調べたところ、デバイスの座…

ダークモード/ライトモードで表示切り替え

iOSの設定でダークモード/ライトモードに切り替えたときに、アプリで色などのテーマを連動して切り替える方法について。 こちらを参考にさせていただきました。 Xamarin.Formsでダークモード対応やってみた (Android/iOS) | Developers.IO Light用のテーマ…

アプリのテーマを固定する

iOSの設定でテーマを「明るい」「ダーク」に切り替えると、 アプリもそれぞれのデザインで動作します。 iOSのテーマがどちらに設定されていても、常にアプリをダークモードで起動する方法です。 ダークモード適用を回避する方法 - Qiita VisualStudioでInfo.…

パスコード認証その2

前回、参考になるサイトとしてリンクを載せましたが、 Xamarin.iOS で Touch ID と Face ID を使用する - Xamarin | Microsoft Docs サンプルをダウンロードして実行しました。 FaceID、TouchID、パスコードの認証が行えました。 Xamarin.iOSのコードなので…

Mac1台に複数のWindowsからペアリング・実行できるか

複数のWindowsのVisualStudioから同一Macに対してのペアリング設定は問題なく行えました。 ただ、同時にシミュレータでデバッグ実行をしてみると、後勝ち?なのか、 1つしか動作しませんでした。(他方は読み込み中のような画面になる) 1人がMac上でシミ…

Jsonの利用

今まではXamarinでJSONを使用するにはNewtonsoft.Jsonが良く使われていました。 Microsoftのチュートリアルにもあります。 Xamarin.Forms Web サービスのチュートリアル - Xamarin | Microsoft Docs ただ最近「System.Text.Json」ができたので、今後はこちら…

前のiOSのバージョンでシミュレータを実行する方法

VisualStudioでデバッグ実行時にシミュレータのデバイスとiOSのバージョンを選択できますが、前のiOSバージョンでテストしたいのに表示されない場合。 ペアリング先のmacにインストールされているシミュレータのバージョンのものが表示されるようです。 Xcod…

ビルドエラー(MSB3371)

Macで作成していたXamarin.Formsのソリューション一式をWindowsにもってきて、VisualStudio2019でビルドすると、 Macで作成していたソリューション一式をWindowsにもってきて、VisualStudio2019でビルドすると、 2>C:\Program Files (x86)\Microsoft Visual …