MAUIでiOSアプリの開発!

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

2021-01-01から1年間の記事一覧

ListView(リスト)を表示した際に、中のコントロールがぱらぱらと追加されていくアニメーションをやめる

docs.microsoft.com

DB Browser for SQLiteからSQLで大量データのINSERTしたが遅い

大量データのテストを行うために、データの数だけINSERT文を作成してDB Browser for SQLiteからSQLを実行したのですがデータが入れ終わるまでにかなり時間がかかりました。 トランザクションを使えば早く終るらしいのですが、バルクインサートを試すと一瞬で…

アプリのアップデート時に、内部で保持するSQLiteのDBを作り直す方法

アプリでSQLiteを使用しており、dbファイルはLibraryフォルダ配下に格納しています。 アプリ起動時にdbファイルをチェックし、ファイルが存在しなければdbファイル作成とテーブルのCreate実行をしています。アプリ起動時にdbファイルが存在すれば、テーブル…

iPadの実機からログを取り出す方法

開発しているアプリは、デバッグ用ログをLibraryフォルダの中に出力しています。不具合の調査時などで実機からログを確認方法についてです。 こちらのサイトを参考にさせてもらいましたが、アプリ内で使用しているファイルを取り出すことができます。 【Swif…

WindowsのVisualStudioから(Mac経由で)アプリを実機にインストールする方法

前回記事より、mac上でIPAファイルの作成まで行えるようになりました。Windows上のVisualStudioに同様の設定を行うことで、いちいちmac上のVisualStudioforMacを使わなくても、直接iPadにアプリをインストールすることができました。 まず、VisualStudioにAp…

有償の「Apple Developer Program」で、有効期限が1年のアプリを作成する 2

前回の続きです。 まず、VisualStudio for MacにAppleの開発者アカウントを登録します。 Apple のアカウント管理 - Xamarin | Microsoft Docs ・「info.plist」を表示し、バンドル識別子にAdHoc配布用の識別子を設定します。 ・「Bundle Signing Options」ボ…

有償の「Apple Developer Program」で、有効期限が1年のアプリを作成する

会社が有償の「Apple Developer Program」に加入していますので、AdHoc配布用に有効期限が1年のIPAファイルを作りました。 こちらのサイトを参考にさせていただきました。 iOSアプリ委託開発でのAdHocリリース手順まとめ(配布編) - Qiita 証明書の作成 Ap…

Xamarin.Formsで開発をしてみた感想

私はもともとはC#の開発歴は長いですが、タブレット開発やMac使用はさっぱりでした。 まだ開発は途中ですが、3か月くらいがっつりXamarin.Formsで開発してみての感想です。 画面の開発はWindowsフォームでしか経験がなく、WPFもやったことがなかったので、X…

SQLiteでテーブルのデータを1行ずつ取得する

テーブルに大量のデータが入っているので、いっぺんに変数に取得するのではなく、カーソルを使って1行ずつとりだす方法です。 cursorなどで検索してもなかなかみつからなかったのですが、以下のようにできました。 var queryEnumerable = tran.CreateComman…

バイト配列のSJISデータをSJIS文字にエンコードしようとすると例外

ShiftJISのバイト配列のデータを受け取って、それをstringの変数にエンコードして格納する為に以下のコードを書きました。 var text = Encoding.GetEncoding("Shift_JIS").GetString(bytedata); すると例外が発生しました。 System.NotSupportedException: E…

Webブラウザを組み込んだアプリで、JavaScriptのデバッグを行う方法

Webブラウザを組み込んだアプリを開発しています。 C#からJavaScriptを実行してWebブラウザ内をぐりぐり操作しているのですが、 デバッグ実行して試して止めて、修正してまたデバッグ実行して・・・ と効率が悪かったですが、Chromeの開発者ツールみたいに、…

Webブラウザを組み込んだアプリで、JavaScriptのデバッグを行う方法

Webブラウザを組み込んだアプリを開発しています。 C#からJavaScriptを実行してWebブラウザ内をぐりぐり操作しているのですが、 デバッグ実行して試して止めて、修正してまたデバッグ実行して・・・ と効率が悪かったですが、Chromeの開発者ツールみたいに、…

Pickerコントロールでキーと文字のペアを使用する

Pickerコントロールで文字を選択したときに、プログラムで取得する値を文字ではなくキー値で取得した場合があります。 以下のようにすれば選択した文字に対応するキー値を取得できます。 Xamlファイル <Picker ・・・ ItemsSource="{Binding ListItemSource}" SelectedItem="{Binding SelectListItem}" ItemDisplayBinding="{Binding Name}" /> ※ItemDisplayBindingにて、表示する文字が格納されてい</picker>…

テキスト入力時に、先頭文字を勝手に大文字にならないようにする

Entryコントロールでテキスト入力を行えますが、ソフトウェアキーボードで入力すると最初の英字が大文字になります。 Xamlに以下のように記述することで、大文字にはなりません。 <Entry ・・・> <Entry.Keyboard> <Keyboard x:FactoryMethod="Create"> <x:Arguments> <KeyboardFlags>None</KeyboardFlags> </x:Arguments> </Keyboard> </Entry.Keyboard> </Entry> docs.microsoft.com

SQLiteを非同期で実装し、トランザクション処理中に非同期の処理を行うと、awaitで待機されない

SQLiteを非同期で実行できるよう「SQLiteAsyncConnection」を使った実装にし、トランザクションを開始して、サーバと非同期通信を行って取得したデータをテーブルに格納するようなプログラムを組みました。 しかし実行してみると、非同期通信が終わるのを待…

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を確認しまし…