Exemplo n.º 1
0
        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);
                }
            });
        }
Exemplo n.º 2
0
 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();
         }
     }
 }
Exemplo n.º 3
0
        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);
        }