【问题标题】:ZXing Scanner not scanning on iOS in Xamarin Forms appZXing Scanner 未在 Xamarin Forms 应用程序中的 iOS 上扫描
【发布时间】:2022-10-18 17:12:53
【问题描述】:

我在我的 Xamarin Forms 5 应用程序中使用了 ZXing.Net.MobileZXing.Net.Mobile.Forms3.1.0-beta 版本。

在 Android 上一切正常,但在 iOS 上,它似乎根本无法在通过 USB 连接到我的 PC 的实际设备上进行扫描。我还打包了该应用程序并将其上传以进行 TestFlight 测试。当我在我的 iPhone 上将它作为一个完全安装的应用程序进行测试时,它实际上会使应用程序一起崩溃。

我的研究表明,这可能是由于权限问题而发生的。我在Info.plist 中有以下内容:

<key>NSCameraUsageDescription</key>
<string>MyApp would like to access your camera</string>
<key>NSMicrophoneUsageDescription</key>
<string>MyApp would like to access your microphone</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>MyApp would like to access your photo library</string>

虽然它不适用于我的 iPhone Xs,但相同的设置在 Android 模拟器和便宜的 LG 手机上都可以正常工作。

此处显示的代码不多,但这是我的 XAML 文件中的内容:

<zxing:ZXingScannerView
   IsScanning="True"
   OnScanResult="OnScanCompleted"/>

我还想提一下,我的应用程序使用 MVVM 模式,所以这是我为连接事物所做的工作:OnScanCompleted 在 XAML 页面的代码中,如下所示:

private async void OnScanCompleted(ZXing.Result result)
{
    await _vm.On_Code_Scanned(result.Text);
}

因此,我从 OnScanCompleted 调用我的视图模型中的一个方法,该方法位于代码后面。

视图模型中的方法相当简单:

public async Task On_Code_Scanned(string code)
{
   // Process code
}

知道如何解决这个问题吗?

更新:

我启动了一个全新的 Xamarin Forms 应用程序。然后我添加了ZXing.NetMobileZXing.Net.Mobile.Forms,仅此而已。当我在 iPhone Xs 上测试扫描二维码时,它仍然失败。所以,看起来这个特定的库根本不能在 iOS 上运行

【问题讨论】:

  • iPhone 调试日志/控制台中报告了什么?您是否尝试过使用AVCaptureSession
  • 在您的 AppDelegate 的 FinishedLaunching (..) 实现中,调用: ZXing.Net.Mobile.Forms.iOS.Platform.Init();
  • @AdrainZhu-MSFT 已经在这样做了
  • 好像和zxing的版本有关,降级到2.4.1试试
  • @AdrainZhu-MSFT 也尝试过,但它打开了一个全新的蠕虫罐。 Xamarin Forms 存在各种兼容性问题。

标签: ios xamarin zxing zxing.net zxing.net.mobile


【解决方案1】:

我也遇到了这个问题并找到了解决方案。

而不是使用metadataoutput.AvailableMetadataObjectTypes,您需要在一个数组中设置所有代码类型AVMetadataObjectType,例如:

AVMetadataObjectType.EAN8Code | AVMetadataObjectType.EAN13Code | 
AVMetadataObjectType.Code39Code | AVMetadataObjectType.Code128Code |......

【讨论】:

    【解决方案2】:

    我有类似的问题,它工作了一年多,然后突然间我所有的用户都抱怨它不再工作了,在 ios 更新后。每当它尝试使用 zxing 调用条形码扫描相机时,应用程序就会崩溃。

    就我而言,解决方案很简单,只需使用最新的 xamarin.ios 版本重新编译即可。只需要确保版本是最新的

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案3】:

    我遇到过同样的问题。

    我唯一做的就是将 Xamarin.IOS 更改为最新版本 (16.0.0.75)。

    通过使用 Visual Studio => 转到帮助/检查更新

    它解决了这个问题。

    【讨论】:

      最近更新 更多