Xamarin.Formsで指紋認証
Xamarin.FormsのiOSアプリで指紋認証する方法について調べたところ、ほとんど日本語の情報はありませんでしたが、こちらのサイトにある記述を参考にさせていただいて検証しました。
Xamarin で PCL だけ使って指紋認証したい - Qiita
サンプルをダウンロードして使わせてもらおうとしましたが、少し昔のソースの為かエラーが発生し、解消することができませんでした。
ですので、新規に作成したプロジェクトにサンプルのソースコードをコピーし、Nugetで「Plugin.Fingerprint 2.1.1」をインストールしました。
それでもいくつかエラーになりました。
「AuthenticateAsync」メソッドの第一引数でエラーです。
定義を調べると引数として指定できる型が以前から変わっていました。
var result = await Plugin.Fingerprint.CrossFingerprint.Current.AuthenticateAsync("指を置いてね!", _cancel.Token);
の部分を
new AuthenticationRequestConfiguration("指紋認証","指を置いてね!"), _cancel.Token);
に書き換えました。
今回はタイトルと理由のみ指定していますが、それ以外にも表示する項目が設定できます。
あと「Error: Could not find 17 Android X assemblies, make sure to install the following NuGet packages:」のエラーです。
AndroidX の移行Xamarin.Forms - Xamarin | Microsoft Docs
によると、エラーで表示されているパッケージ名をAndroidのcsprojファイルにそのまま貼り付ければ良いです。
これでデバッグ実行ができました。
iOSシミュレーターでのテストの方法は、
Adding fingerprint authentication in Xamarin Forms - torib.io
のサイトを参考に、
画面操作して指紋認証画面が表示されたら、
指紋認証を認証OKとして実行することができました。
ひとまず実装することができました。
しかし、認証完了後に「System.InvalidOperationException」の例外が発生しました。
「PushAsync is not supported globally on iOS, please use a NavigationPage.」
つづく・・・