MAUIでiOSアプリの開発!

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

MauiのiOSでGIFアニメーションが動かない

XamarinのときはGIFアニメーションは動作していたのですが、MauiではiOSの場合に動かなくなっていました。 どうやらMauiのバグのようです。 [Bug] Animated GIF files do not play on iOS/macOS · Issue #866 · dotnet/maui · GitHub 回避策として、GIFアニ…

MAUIで指紋認証を実装する方法

こちらのサイトが参考になりました。 zenn.dev

MAUIで指紋認証を実装する方法

こちらのサイトが参考になりました。 zenn.dev

WebViewのカスタムコントロールを作る

Xamarinで開発したときはiOSのWkWebViewと使うためにRendererを使って実装していましたが、MAUIに移行したらJavaScriptが実行されなかったり問題が色々でました。ハンドラーを使った実装を調べました。 https://stackoverflow.com/questions/73217992/js-net…

MAUIでカスタムコントロールを使う

Xamarinでカスタムコントロールを使っていたのですが、MAUIでは方法が変わっていました。Rendererではなくハンドラーを使って実装するのが主流のようです。 こちらを参考にしました。 Create custom controls with .NET MAUI handlers - .NET MAUI | Microso…

MAUIを学習するのに参考になるサイト

devblogs.microsoft.com

iPadで入力した¥マーク

iPadで入力した文字が半角英数字記号かをチェックする為に、以下の正規表現を使っていました。 [ -~]+ シミュレータのテストでは特に問題ありませんでしたが、iPadの実機を使ってテストしていたろころ、¥だけがチェックに引っかかりました。 シミュレータで…

アプリ内のフォルダをバックアップ対象外にする方法

アプリ内のLibraryフォルダにDBファイルを作成・保持しているのですが、PCでバックアップした際にDBファイルがバックアップされるので、無理やり中身を確認することができてしまいます。 そこでLibraryフォルダをバックアップ対象外にしました。 参考 iOS/An…

メモリリークの対応

Instrumentsではメモリリークの原因・箇所の特定にはいたりませんでしたので、.NETでの一般的なメモリリーク観点で問題がないか、コードのチェックを行いました。 以下のサイトが参考になりました。 michaelscodingspot.com 概ねこの内容にそって修正するこ…

Xamarinでメモリリークの確認

アプリの連続試験でメモリリークの確認を行うため、XCodeのInstrumentsを使ってメモリ使用量の計測をおこないました。 マウスを自動操作するツールで連続して操作した結果、メモリが増加傾向にあることがわかりました。 リークの解析はXamarim.Profilerとい…

ListViewで表示したリストの一番下が切れた状態で表示される

ListViewを使ってリストを作成していますが、リスト表示時にアニメーションでパラパラと表示されるのが嫌だったので、以下の設定でアニメーションなしにしました。 ListView(リスト)を表示した際に、中のコントロールがぱらぱらと追加されていくアニメーシ…

XCodeのインストールが遅い

XCodeを13.2にアップデートしましたが、プログレスバーはわずかしか進まず、終わる気配がありませんでした。 インストール中はログが出力されているので、以下のコマンドでログを表示できます。 tail -f /var/log/install.log ログが出力されていれば、まだ…

XCodeのインストールが遅い

XCodeを13.2にアップデートしましたが、プログレスバーはわずかしか進まず、終わる気配がありませんでした。 インストール中はログが出力されているので、以下のコマンドでログを表示できます。 tail -f /var/log/install.log ログが出力されていれば、まだ…

デバッグ実行するときに、シミュレータが表示されない

新しいWindowsPCをmacにつなげてVisualStudioでデバッグ実行しようとしましたが、▶のところに通常であればシミュレータの機種・OSが表示されるのですが、「接続」となっており、実行できませんでした。 XCodeをアップデートしたり、VisualStudioをアップデー…

iOSのシミュレータでのピンチイン・ピンチアウト

シミュレーター上でピンチイン・ピンチアウトを行いたい場合は、Altキーを押しながらマウス操作することで可能です。 ただ、画面の中心を起点としての拡大縮小になります。 これを画面の好きな場所で行う事ができます。 シミュレータ画面の左下にある のとこ…

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