我的应用程序的一部分是尝试读取气压(如果传感器可用)。该代码在 Android 上运行良好,但在 IOS 上会使应用程序崩溃。我的 iPhone 是 iOS 17.4。在特定于平台的情况下,Microsoft 谈到 IOS Barometer 使用 CMAltimeter 进行测量,这可能需要设置权限。
在 Info.plist 中,我添加了在另一个论坛中找到的标签。
<key>NSMotionUsageDescription</key>
<string>Needed for Barometer reading</string>
我的NavigationViewModel中导致崩溃的相关代码如下:
if (Barometer.Default.IsSupported)
{
try
{
Barometer.Default.ReadingChanged += Barometer_ReadingChanged;
Barometer.Default.Start(SensorSpeed.UI);
}
catch (Exception ex)
{
// Barometer through an error
MyMessage = ex.ToString();
}
}
else
{
BarometerLabel = "NC";
}
如果一切顺利,它指向这个例程:
private void Barometer_ReadingChanged(object sender, BarometerChangedEventArgs e)
{
// Update UI Label with barometer state
Bar1 = $"Barometer: {e.Reading}";
BarometerLabel = Bar1.Substring(35, 4) + " mBar";
}
令人沮丧的是,catch 没有捕获错误,info.plist 中的标签也没有生成用户操作。
有人有什么想法吗?
这是 github 中现有的 bug:iOS 17.4,Barometer.Default.Start 无限期挂起
此问题目前在iOS 17.4中存在。作为解决方法,您可以尝试在非 17.4 iOS 设备上运行您的程序,检查是否出现相同的问题。