在 Xamarin iOS 中使用 Firebase Crashlytics

Posted

技术标签:

【中文标题】在 Xamarin iOS 中使用 Firebase Crashlytics【英文标题】:using Firebase Crashlytics in Xamarin iOS 【发布时间】:2018-08-06 10:07:32 【问题描述】:

谁能帮助我了解如何为 Xamarin ios 使用 Xamarin.Firebase.iOS.Crashlytics nuget 包。我的代码中随机出现 SIGSEGV 代码错误,我无法找出实际问题。 已经搜索了很多关于如何在 Xamarin iOS 中实现 Crashlytics 的内容,但我找不到任何内容。 已遵循以下两个链接中给出的步骤,但我只能在这两个链接的帮助下在 xcode 中实现 Crashlytics。 Link 1Link 2

【问题讨论】:

嗨,来自 Crashlytics 的 Paul。仅供参考,我们目前不正式支持 Xamarin。 嗨,保罗。如果 Xamarin 中不支持 Crashlytics。那么 Xamarin.Firebase.Crashlytics nuget 包的作用是什么?我可以在 Xamarin Nuget Manager 中看到两个包,一个用于 Firebase 崩溃报告,一个用于 Crashlytics? @buser 好,Xamarin 团队 does it @MikalaiDaronin 你能告诉我步骤吗?我无法在 Xamarin iOS 项目中实现它 @AnshumanSingh readme file 应该会有所帮助。没有什么期望添加Nuget、GoogleService-Info.plist 和几行代码。 【参考方案1】:

不确定你是否已经解决了这个问题,但我会试一试,因为这篇文章几乎让我走到了终点。可能还有其他人正在寻找如何做到这一点。

截至 2018 年底,Crashlytics 正在从 Fabric 迁移到 Firebase,这导致许多旧帖子不再适用。

要让 nuGet 包正常工作,您需要执行以下操作:

前往firebase console 并创建一个项目。然后添加一个应用程序输入一个“捆绑 ID”,这需要与您在 xamarin 应用程序中的相同。昵称和 App Store ID 是可选的。

您现在将获得一个 GoogleService-Info.plist 文件,请下载此文件。现在是棘手的部分。要初始化 firebase 应用程序,您需要创建一个虚拟 xCode 项目,该项目具有与您的项目相同的包标识符来执行此操作:

创建一个新的 xCode 项目并按照 firebase 的说明进行操作

请记住在安装 pod 后使用 .xcworkspace 文件打开项目。

在 Firebase 控制台中的设备上编译并运行此应用程序,如果一切正常,您有望看到一些反应。

现在要将此添加到您的 visualStudio xamarin 应用程序中,首先将 GoogleService-Info.plist 包含到您的项目中,并将构建操作更改为“捆绑资源” 然后将 Xamarin.Firebase.iOS.Core 和 Xamarin.Firebase.iOS.Crashlytics 包添加到 iOS 项目。

差不多了,只剩下两件事要做了。

在AppDelegate.cs文件的FinishedLaunching函数中添加:

Firebase.Core.App.Configure();
Crashlytics.Configure();
Fabric.Fabric.SharedSdk.Debug = true; // To enable debugging 

还记得将两个命名空间 Firebase.Core 和 Firebase.Crashlytics 添加到文件的顶部。

最后一步是在没有调试器的情况下运行应用程序,因为调试器会吃掉所有错误。

应该就是这个了。

有关 crashlytics nuGet 的更多信息,请参阅github page

编辑

2019-08-03:更新了 NuGet 入门链接

【讨论】:

GitHub 链接失效,你可能想更新一下!! 现在应该更新上游回购已经完成了一些重组而不留下痕迹。,制作死链接:(【参考方案2】:

请查看评论

对于 iOS:

将 GoogleService-Info.plist 文件添加到您的应用项目中。

通过右键单击/构建操作将 GoogleService-Info.plist 构建操作行为设置为捆绑资源。

将 Xamarin.Firebase.iOS.Core NuGet 添加到您的 iOS 项目:https://www.nuget.org/packages/Xamarin.Firebase.iOS.Crashlytics/

在应用中的某处添加以下代码行,通常是在 AppDelegate 的 FinishedLaunching 方法中(不要忘记导入 Firebase.Core 和 Firebase.Crashlytics 命名空间):

   App.Configure ();
   Crashlytics.Configure ();

对于安卓:

确保您在 Firebase 开发者控制台中设置了一个项目。

下载项目文件并将其放在 Xamarin.android 项目的文件夹中。

添加 Xamarin.Android.Crashlytics NuGet 包:https://www.nuget.org/packages/Xamarin.Android.Crashlytics/

重启你的IDE

将 google-services.json 添加到您的 Xamarin.Android 应用项目。

将构建操作 google-services.json 设置为 GoogleServicesJson

创建一个名为 com.crashlytics.android.build_id 的字符串资源。该值可以是您想要唯一标识特定构建的任何值。 清理并重建您的解决方案。

  Fabric.Fabric.With(this, new Crashlytics.Crashlytics());
  Crashlytics.Crashlytics.HandleManagedExceptions();

我最近写了一篇关于将您的 Xamarin 应用程序与 Firebase Crashlytics 集成的博客,其中详细介绍了如何配置它,可以在此处找到:

https://medium.com/@hakimgulamali88/firebase-crashlytics-with-xamarin-5421089bb561

【讨论】:

此评论已过时。在 2021 年,您需要添加的 nuget 称为 Xamarin.iOS.Firebase.Crashlytics,它依赖于上述 Xamarin.Firebase.iOS.Core nuget(因此无需单独添加),并且 Crashlytics.Configure(); 方法不再存在并且不会被调用。 链接的文章也已过时,因为不再有 Fabric 命名空间,并且导致崩溃的测试方法也不存在。代码示例无法使用。 @masiton 感谢您的更新,我们会调查并更新答案和我的博客。 谢谢。如果您愿意,请查看我的问题,我真的很难让 crashlytics 在 Xamarin.Forms (iOS) 中工作:***.com/questions/67804943/…【参考方案3】:

要在 Xamarin 中实施 Firebase Crashlytics,需要执行几个步骤。

首先,您必须在 Xcode 中创建一个具有相同包标识符的虚拟项目。

你可以关注这个https://fabric.io/kits/ios/crashlytics/install,在 Xcode 中实现 Crashlytics。

现在对于 Xamarin,使用相同的 Bundle Identifier,并在 info.plist 文件中添加以下行

<key>Fabric</key>
<dict>
<key>APIKey</key>
<string>Your api key</string>
<key>Kits</key>
<array>
  <dict>
    <key>KitInfo</key>
    <dict/>
    <key>KitName</key>
    <string>Crashlytics</string>
  </dict>
</array>
</dict>

现在在 AppDelegate 中导入 Fabric 和 Crashlytics,然后初始化 Fabric 实例:

Fabric.with([Crashlytics.self])

【讨论】:

无法使用上述代码初始化 Crashlytics。如果有人解决了,请分享步骤。 作为提问者,我想在 Firebase Crashlytics 上查看我的崩溃,而不是在 Fabric 仪表板上(很快将不支持)

以上是关于在 Xamarin iOS 中使用 Firebase Crashlytics的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.iOS 应用在 iOS 14.0 中询问本地网络权限

如何使用 AppStoreReceiptUrl 在 Xamarin.iOS 中验证 StoreKit 交易

Xamarin SQLite教程Xamarin.iOS项目添加引用

如何在 Xamarin.iOS 中使用 FCM(Firebase 云消息传递)发送 iOS 推送通知

使用Xamarin Effect删除Xamarin.iOS中TextEntry上的圆角

在 Xamarin iOS 中使用 Firebase Crashlytics