Используя ZXingScannerPage с XF, моя страница контента имеет странное поведение - PullRequest
0 голосов
/ 13 февраля 2020

Я делаю приложение в формах xamarin, для которых у меня будет логин, похожий на логин whatapp web, экранный qr, который будет сканироваться телефоном, в эмуляторе Visual Studio 2017 у меня нет проблем, но когда я экспортирую приложение в apk и устанавливаю на мобильном устройстве, приложение читает qr и возвращается к предыдущему экрану входа в систему, не показывая никакой реакции, которая должна быть на go, до следующего экрана, где у меня есть приборная панель.

Что может быть? Я прилагаю свой используемый код.

 btnScanQRCode.IsEnabled = false;
        var scan = new ZXingScannerPage();

        scan.OnScanResult += (result) =>
        {
            scan.IsScanning = false;
            Device.BeginInvokeOnMainThread(async () =>
            {
                await Application.Current.MainPage.Navigation.PopAsync();
                var resultado = JsonConvert.DeserializeObject<QrCode>(result.Text);

                JObject qrObject = JObject.Parse(JsonConvert.SerializeObject(resultado));
                JsonSchema schema = JsonSchema.Parse(SettingHelper.SchemaJson);

                bool valid = qrObject.IsValid(schema);

                if (valid == true)
                {
                    App.Database.InsertQrCode(resultado);
                    QrCode qr = App.Database.GetQrCode();
                    await _viewModel.Login();                
                    await Navigation.PushAsync(new Organization());
                }
                else
                {
                    await DisplayAlert("False", JsonConvert.SerializeObject(resultado), "ok");
                }
            });
        };
        await Application.Current.MainPage.Navigation.PushAsync(scan);
        btnScanQRCode.IsEnabled = true;

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020
  1. Сначала отсканируйте, а затем используйте результат для выполнения других операций в вашем приложении.

        var scanner = new ZXing.Mobile.MobileBarcodeScanner();
    
        var result = await scanner.Scan();
    
  2. Проверьте правильность разрешений камеры. Могу поспорить, ваша проблема там.

0 голосов
/ 13 февраля 2020

Первоначально это был комментарий, но по написанию я понял, что это ответ.

Вам нужно отладить свой код. Подключите устройство и разверните приложение в конфигурации отладки. Пройдите по своему коду и посмотрите, где он выходит из строя.

Звучит так, будто он молча падает и, вероятно, на линии, где вы десериализуете result.Text в QrCode. result.Text - это просто строка, которая никогда не будет десериализована в объект. Возможно, вам нужен конструктор, который принимает строку типа QrCode(result.Text).

...