在我的 .Net MAUI 应用程序中,我使用 Plugin.Firebase 将信息发送到 Google Analytics (GA4)。
这是代码:
if (DeviceInfo.Platform == DevicePlatform.iOS || DeviceInfo.Platform == DevicePlatform.Android)
{
if (AgreeToAnalytics)
{
var sut = CrossFirebaseAnalytics.Current;
sut.LogEvent(gaEvent, parameters);
}
}
对于 Android,调用 LogEvent() 会抛出异常:
Plugin.Firebase.Analytics.FirebaseAnalyticsImplementation.LogEvent(字符串 eventName, IDictionary`2 个参数)System.NullReferenceException: 未将对象引用设置为对象的实例。
这就是日志中的样子:
10-17 13:12:33.857 10916 10916 F mono-rt:[错误]致命未处理 异常:System.NullReferenceException:对象引用未设置为 对象的实例。 10-17 13:12:33.857 10916 10916 F 单声道 :
在 Plugin.Firebase.Analytics.FirebaseAnalyticsImplementation.LogEvent(字符串 eventName, IDictionary`2个参数)
我传递的参数不为空。 “eventName”是一个字符串,“parameters”包含一个键/值对,并且键和值都是不为空的字符串。
我向插件作者报告了一个问题(https://github.com/TobiasBuchholz/Plugin.Firebase/issues/203),但没有得到任何答复。
它过去曾经工作过,所以我想知道从 6 迁移到 .Net 7 是否与该问题有关......
第一
将应用程序从 6 迁移到 .Net 7
您可以参考这个示例:MAUI DotNet 7简单示例。
第二个
Plugin.Firebase.Analytics.FirebaseAnalyticsImplementation.LogEvent(String eventName,IDictionary`2参数)System.NullReferenceException:未将对象引用设置为对象的实例。
您可以尝试将 Plugin.Firebase.Analytics 显式添加到您的 .csproj 文件中:
<ItemGroup>
<PackageReference Include="Plugin.Firebase.Analytics" Version="2.0.1"/>
</ItemGroup>
第三个
另外,还有一个issue(Possible nullpointer)和你的情况一样,不过作者关闭了。你可以问他。