MAUIでiOSアプリの開発!

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

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

シミュレーター上でピンチイン・ピンチアウトを行いたい場合は、Altキーを押しながらマウス操作することで可能です。

ただ、画面の中心を起点としての拡大縮小になります。

これを画面の好きな場所で行う事ができます。

シミュレータ画面の左下にある

f:id:murakentake:20220206002233p:plain

のところをタップすると、

f:id:murakentake:20220206002249p:plain

このようにマルチタッチモードになります。

すると画面に

f:id:murakentake:20220206002306p:plain

このように、中心を指定してのピンチイン・ピンチアウト操作が行えるようになります。

Ctrl+Tキーでも切り替えができます。

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

大量データのテストを行うために、データの数だけINSERT文を作成して
DB Browser for SQLiteからSQLを実行したのですが
データが入れ終わるまでにかなり時間がかかりました。

トランザクションを使えば早く終るらしいのですが、
バルクインサートを試すと一瞬で終わりました。

データの挿入:バルクインサート|SQL入門

参考

 

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

アプリでSQLiteを使用しており、dbファイルはLibraryフォルダ配下に格納しています。

アプリ起動時にdbファイルをチェックし、ファイルが存在しなければdbファイル作成とテーブルのCreate実行をしています。
アプリ起動時にdbファイルが存在すれば、テーブル・データをそのまま使います。

ただ、アプリをアップデートしたときにもdbファイルは残っているので、もし新バージョンでテーブル構成を変更していた場合に、新旧のテーブルに違いがでてしまい、アプリ実行時にSQLエラーになる可能性があります。

この問題を回避する方法を調べた結果、以下のサイトで整理されていました。

sqliteデータベースを利用しているiPhoneアプリのアップデート : iPhoneアプリ開発・Swift・Objective-C勉強まとめ

 

この中の「user_version pragma」を使う方法を試しました。

DBからSQLでuser_varsionの値(整数値)を参照・設定することができます。

//値を参照
int value = await connection.ExecuteScalarAsync("PRAGMA user_version;");

//値を書き込み
await connection.ExecuteAsync(string.Format("PRAGMA user_version = {0};", value))

dbファイルを作成した時に「user_version」にアプリのバージョン(整数値に変換)を格納しておいて、アプリ起動時に「user_version」を取得してバージョンを比較し、古い値であればdbファイルを削除・テーブルCREATEを行うようにしました。

sqlite upgradation

 

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

開発しているアプリは、デバッグ用ログをLibraryフォルダの中に出力しています。
不具合の調査時などで実機からログを確認方法についてです。

こちらのサイトを参考にさせてもらいましたが、
アプリ内で使用しているファイルを取り出すことができます。

【Swift】アプリ内のファイル読み書き | カピ通信

 

  1. iPadMacに接続します。
  2. Xcodeのメニューで、Windows->Devices and Simulatorsを選択し、画面を立ち上げます。
  3. iPadを選択し、表示されたアプリ一覧から、アプリを選択します。
  4. 歯車アイコンをクリックし、表示されるメニューから「Download Container...」を選択します。
  5. 任意の場所にダウンロードします。
  6. ダウンロードしたファイルを右クリックして「パッケージの内容を表示」を選択すると、フォルダの中身が見れます。

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

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


まず、VisualStudioにAppleの開発者アカウントを登録します。

Apple のアカウント管理 - Xamarin | Microsoft Docs

 

こちらのサイトを参考に、

手動プロビジョニングの設定方法 -VS2019- | Xamarin.iOS - ITブログ時々なんでもブログ

macのキーチェーンから配布用の証明書をp12ファイルとして書き出し
Windows上のVisualStudioにp12ファイルを取り込み
iOSプロジェクトのバンドル署名に「手動プロビジョニング」を設定
の設定を行います。

リリース対象をiPhoneにして実行すれば、iPadにアプリがインストールされました。

 

ハマった点

iOSプロジェクトのバンドル署名で、「手動プロビジョニング」の「プロビジョニングファイル」が
リストに何も表示されませんでした。
証明書のインストール画面で、プロビジョニングファイルの「全てのプロファイルをダウンロード」を実行すれば、リストに現れるようになりました。

 

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

前回の続きです。

 

まず、VisualStudio for MacAppleの開発者アカウントを登録します。

Apple のアカウント管理 - Xamarin | Microsoft Docs

 

・「info.plist」を表示し、バンドル識別子にAdHoc配布用の識別子を設定します。

・「Bundle Signing Options」ボタンを押して、
 「iOSバンドル署名」の「署名ID」「プロビジョニングファイル」を設定します。

・メニューの「ビルド」->「公開のためのアーカイブ」を実行し、あとは画面に沿ってすすめばIPAファイルが作成されます。


XCodeを使って、作成したIPAファイルを実機にインストールします。
こちらを参考に。

Xcodeを使ってipaをiPhoneにインストールする - Qiita