【发布时间】:2022-10-18 17:12:53
【问题描述】:
我在我的 Xamarin Forms 5 应用程序中使用了 ZXing.Net.Mobile 和 ZXing.Net.Mobile.Forms 的 3.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.NetMobile 和ZXing.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