gpt4 book ai didi

ios - 使用 ZXing Xamarin for iOS 的条码扫描仪应用程序在应用程序类中遇到空引用错误

转载 作者:行者123 更新时间:2023-11-29 05:57:25 24 4
gpt4 key购买 nike

我的公司需要一款基于智能手机的条形码/QR 码扫描仪应用程序,它必须适用于 iPhone 和 Android,但主要是 iPhone。我决定尝试一下 Xamarin Forms,它在 Android 上完美运行,但需要进行一些认真的跑腿工作才能让该应用程序甚至出现在 iPhone 上。我终于在 iPhone 上打开了它,但是当我单击扫描按钮时,它会弹出
未处理的异常:

System.NullReferenceException: Object reference not set to an instance of an 
object`

在 UIApplication.Main(args, null, "AppDelegate"); 的 Application 类中;

using System;
using System.Collections.Generic;
using System.Linq;

using Foundation;
using UIKit;

namespace QRNatives.iOS
{
public class Application
{
// This is the main entry point of the application.
static void Main(string[] args)
{
// if you want to use a different Application Delegate class from "AppDelegate"
// you can specify it here.
UIApplication.Main(args, null, "AppDelegate");
}
}
}

我编程的时间不长,但似乎通常空引用错误相当容易追踪。但是,我看不出这个问题实际上发生在哪里。我怀疑问题出在 AppDelegate.cs 中,尽管我并没有发现什么问题。

using Foundation;
using UIKit;

namespace QRNatives.iOS
{
// The UIApplicationDelegate for the application. This class is responsible for launching the
// User Interface of the application, as well as listening (and optionally responding) to
// application events from iOS.
[Register("AppDelegate")]
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
//
// This method is invoked when the application has loaded and is ready to run. In this
// method you should instantiate the window, load the UI into it and then make the window
// visible.
//
// You have 17 seconds to return from this method, or iOS will terminate your application.
//
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();

global::ZXing.Net.Mobile.Forms.iOS.Platform.Init();

LoadApplication(new App());

return base.FinishedLaunching(app, options);
}
}
}

仅供引用,以下是我在 QrScanningService.cs 中使用的用于将 iOS 链接到共享接口(interface)数据的内容。

using System.Threading.Tasks;
using QRNatives.Services;
using Xamarin.Forms;
using ZXing.Mobile;

[assembly: Dependency(typeof(QRNatives.iOS.Services.QrScanningService))]

namespace QRNatives.iOS.Services
{
class QrScanningService
{
public class QrCodeScanningService : IQrScanningServies
{
public async Task<string> ScanAsync()
{
var scanner = new MobileBarcodeScanner();
var scanResults = await scanner.Scan();

return scanResults.Text;
}
}
}
}

我搜索了一些关于这个问题的旧帖子,但我读过的帖子都没有对该问题有任何真正的答案。有人有过在 iOS 版 Xamarin 中成功使用 ZXing 的经验吗?或者有人对我如何追踪错误的实际来源有任何建议吗?我已经坚持这个问题有一段时间了,所以任何帮助将不胜感激。谢谢。

最佳答案

访问 iPhone 中的相机,您应该在 info.plist 中添加权限:

 <key>NSCameraUsageDescription</key>      
<string>Camera acess to scan barcodes</string>

在 Visual Studio 中编辑 info.plist:

右键点击info.plist并选择打开方式,您可以选择Generic PList EditorXML editor (无论你想要什么)编辑它。

更多权限:

引用:infoplist-reference

关于ios - 使用 ZXing Xamarin for iOS 的条码扫描仪应用程序在应用程序类中遇到空引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55011089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com