Распространенной проблемой для разработчиков Titanium является реализация аутентификации по отпечатку пальца для Android. Hyperloop (особенно теперь, когда он бесплатный) решил техническую проблему, но уровень пользовательского интерфейса / презентации по-прежнему оставался на усмотрение разработчика.

Недавно я взял Руководство Google по работе с отпечатками пальцев и создал свой собственный Titanium Widget, чтобы решить эту проблему и сделать его переносимым для использования в нескольких других моих приложениях.



ТРЕБОВАНИЯ

  1. Appcelerator / Титан
  2. Hyperloop
  3. Какой-то метод аутентификации по отпечатку пальца.

а. TouchID - https://github.com/appcelerator-modules/ti.touchid

OR

б. Ti.Reprint Hyperloop .aar и common.js - https://github.com/loop-modules/Ti.Reprint

4. Виджет ti.androidfingerprintalertdialog - https://github.com/adamtarmstrong/ti.androidfingerprintalertdialog

НАСТРАИВАТЬ

1–2. Я не буду вдаваться в подробности; есть множество статей, документов и вики, посвященных этим вопросам.

3. Настройте модуль Ti.Reprint Hyperloop в своем приложении (опять же, здесь вы также можете использовать модуль ti.touchid - я просто решил протестировать реализацию Hyperloop)

а. Скопируйте файл github /Ti.Reprint/app/platform/android/core-2.8.3.aar в свой «проект» / app / platform / android / folder.

Reprint - это унифицированная библиотека аутентификации отпечатков пальцев для Android, которая поддерживает несколько API-интерфейсов отпечатков пальцев, включая Imprint и Samsung Pass. Https://github.com/ajalt/reprint

б. Скопируйте файл github /Ti.Reprint/app/lib/Reprint.js в свой «проект» / app / lib / folder.

Эта библиотека предоставляет различные методы для инициализации, аутентификации, проверки, поддерживает ли устройство отпечаток пальца, проверки регистрации отпечатков пальцев и т. Д.

c. Обновите файл tiapp.xml, чтобы ваше приложение могло использовать android.permission.USE_FINGERPRINT

<uses-permission android:name="android.permission.USE_FINGERPRINT"/>

4. Настройте виджет ti.androidfingerprintalertdialog

а. Загрузите / извлеките виджет и скопируйте папку «ti.androidfingerprintalertdialog» в свой «проект / приложение / виджеты / папку.

б. Обновите файл «project» / app / config.json, чтобы добавить виджет.

"dependencies": {
     "ti.androidfingerprintalertdialog": "1.0"
}

ИСПОЛЬЗОВАНИЕ

Добавить виджет в представление (обычно на страницу входа)

index.xml

<Widget id="androidFingerprint" src="ti.androidfingerprintalertdialog" />

index.js

  • Требовать и инициализировать модуль Reprint common.js.
var Reprint = require('reprint');
Reprint.initialize();
  • Настройте 4 функции для успешной и неудачной обработки, щелкните: UsePassword и щелкните: Cancel
function successCallback(moduleTag) {
     $.androidFingerprint.success();
     //Continue login process
}
function failureCallback(failureReason, fatal, errorMessage, moduleTag, errorCode) {
     $.androidFingerprint.failure();
}
function fingerprintUsePassword(){
     Reprint.cancelAuthentication();
}
function fingerprintCancel(){
     Reprint.cancelAuthentication();
}
  • Запрос отпечатка пальца

Убедитесь, что на устройстве ОБА есть оборудование и зарегистрирован отпечаток пальца.

if (Reprint.isHardwarePresent() && Reprint.hasFingerprintRegistered())
  • Запросить аутентификацию и показать виджет AlertDialog и передать 4 метода, которые мы только что создали
Reprint.authenticate(successCallback, failureCallback);
$.androidFingerprint.show(fingerprintUsePassword, fingerprintCancel);

Вот и все!

Репозиторий виджетов и полный пример реализации можно найти здесь. Взносы приветствуются!