public static void SubscribeBroadcastReceiver(UIViewController controller, NFCNdefReaderSession nfcSession, NFCReaderDelegate nfcDelegate) { var broadcasterService = ServiceContainer.Resolve <IBroadcasterService>("broadcasterService"); var messagingService = ServiceContainer.Resolve <IMessagingService>("messagingService"); var deviceActionService = ServiceContainer.Resolve <IDeviceActionService>("deviceActionService"); broadcasterService.Subscribe(nameof(controller), (message) => { if (message.Command == "showDialog") { var details = message.Data as DialogDetails; var confirmText = string.IsNullOrWhiteSpace(details.ConfirmText) ? AppResources.Ok : details.ConfirmText; NSRunLoop.Main.BeginInvokeOnMainThread(async() => { var result = await deviceActionService.DisplayAlertAsync(details.Title, details.Text, details.CancelText, confirmText); var confirmed = result == details.ConfirmText; messagingService.Send("showDialogResolve", new Tuple <int, bool>(details.DialogId, confirmed)); }); } else if (message.Command == "listenYubiKeyOTP") { ListenYubiKey((bool)message.Data, deviceActionService, nfcSession, nfcDelegate); } }); }
public static void ListenYubiKey(bool listen, IDeviceActionService deviceActionService, NFCNdefReaderSession nfcSession, NFCReaderDelegate nfcDelegate) { if (deviceActionService.SupportsNfc()) { nfcSession?.InvalidateSession(); nfcSession?.Dispose(); nfcSession = null; if (listen) { nfcSession = new NFCNdefReaderSession(nfcDelegate, null, true) { AlertMessage = AppResources.HoldYubikeyNearTop }; nfcSession.BeginSession(); } } }
public static void InitApp <T>(T rootController, string clearCipherCacheKey, NFCNdefReaderSession nfcSession, out NFCReaderDelegate nfcDelegate, out IAccountsManager accountsManager) where T : UIViewController, IAccountsManagerHost { Forms.Init(); if (ServiceContainer.RegisteredServices.Count > 0) { ServiceContainer.Reset(); } RegisterLocalServices(); var deviceActionService = ServiceContainer.Resolve <IDeviceActionService>("deviceActionService"); var messagingService = ServiceContainer.Resolve <IMessagingService>("messagingService"); ServiceContainer.Init(deviceActionService.DeviceUserAgent, clearCipherCacheKey, Bit.Core.Constants.iOSAllClearCipherCacheKeys); InitLogger(); Bootstrap(); var appOptions = new AppOptions { IosExtension = true }; var app = new App.App(appOptions); ThemeManager.SetTheme(app.Resources); AppearanceAdjustments(); nfcDelegate = new Core.NFCReaderDelegate((success, message) => messagingService.Send("gotYubiKeyOTP", message)); SubscribeBroadcastReceiver(rootController, nfcSession, nfcDelegate); accountsManager = ServiceContainer.Resolve <IAccountsManager>("accountsManager"); accountsManager.Init(() => appOptions, rootController); }