完全禁用 Firebase/Analytics 以在应用启动时停止控制台垃圾邮件

Posted

技术标签:

【中文标题】完全禁用 Firebase/Analytics 以在应用启动时停止控制台垃圾邮件【英文标题】:Completely disable Firebase/Analytics to stop console spam on app startup 【发布时间】:2017-11-09 04:28:15 【问题描述】:

我已将 Google/SignIn cocoapod 安装到我的应用程序中(我需要支持 GoogleDrive),但它依赖于 Google/Core,而后者又依赖于 FirebaseAnalytics。我不想要也不需要 FirebaseAnalytics。

当我们的应用启动时,FirebaseAnalytics 会向开发者控制台发送 8 行输出:

2017-06-07 18:07:19.612994+0100 son[2909:877661] [Firebase/Analytics][I-ACS005000] The AdSupport Framework is not currently linked. Some features will not function properly. Learn more at http://gooX.gl/9vSsPb
2017-06-07 18:07:19.613 son[2909] <Warning> [Firebase/Analytics][I-ACS005000] The AdSupport Framework is not currently linked. Some features will not function properly. Learn more at http://gooX.gl/9vSsPb
2017-06-07 18:07:19.613896+0100 son[2909:877661] [Firebase/Analytics][I-ACS023007] Firebase Analytics v.3900000 started
2017-06-07 18:07:19.614 son[2909] <Notice> [Firebase/Analytics][I-ACS023007] Firebase Analytics v.3900000 started
2017-06-07 18:07:19.614525+0100 son[2909:877661] [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see http://gooX.gl/RfcP7r)
2017-06-07 18:07:19.614 son[2909] <Notice> [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see http://gooX.gl/RfcP7r)
2017-06-07 18:07:19.622560+0100 son[2909:877662] [Firebase/Analytics][I-ACS023013] Firebase Analytics disabled
2017-06-07 18:07:19.623 son[2909] <Notice> [Firebase/Analytics][I-ACS023013] Firebase Analytics disabled

(我必须在上述输出中的 URL 中添加 X 才能通过 *** 的 URL 缩短器拦截器。)

我尝试在我的 Info.plist 中将 FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED 设置为 YES,这删除了 ​​2 行,但又添加了 2 行来告诉我 Analytics 已禁用 (FFS!)。

这种垃圾邮件输出使我们的开发人员很难看到任何真正重要的控制台输出。如何禁用它?

(如果做不到这一点,关于如何让它每行只输出一次的建议将非常受欢迎。)

【问题讨论】:

How to stop Firebase from logging status updates when app is launched的可能重复 @Senseful 不,它不是重复的 - 这是关于禁用 firebase 分析的。不仅仅是禁用日志记录,实际上是停止它做任何事情。 【参考方案1】:

你可以在输出中找到这个:

<Notice> [Firebase/Analytics][I-ACS023008] To enable debug logging
 set the following application argument: -FIRAnalyticsDebugEnabled

禁用则相反 - 设置参数:-noFIRAnalyticsDebugEnabled:

此外,您可以使用 FIRConfiguration 中的 setLoggerLevel 方法控制默认的 Firebase 日志记录级别。例如禁用所有 Firebase 日志记录:

  [[FIRConfiguration sharedInstance] setLoggerLevel:FIRLoggerLevelMin];
  [FIRApp configure];

或在 Swift 中:

FirebaseConfiguration.shared.setLoggerLevel(FirebaseLoggerLevel.min)
FirebaseApp.configure()

FIRLogger 实现中的更多细节here

【讨论】:

谢谢;这确实帮助我指出了正确的方向 - 尽管[FIRApp configure] 总是为我抛出异常(关于丢失的发件人ID) - 但似乎没有必要,我尝试了几种将`-FIRAnalyticsDebugEnabled`添加到参数列表的变体他们都没有真正删除所有 8 行。 @ajeetsharma 禁用日志记录不太可能对崩溃产生影响 对我来说,使用了上述源代码中的参数“-FIRDebugDisabled”:github.com/firebase/firebase-ios-sdk/blob/master/Firebase/Core/… FIRLogger 实现的链接失效。 请注意不能完成这项工作的其他人:使用-FIRDebugDisabled,如下所述:***.com/a/57334171/1139324【参考方案2】:

据我所知,这两行:

[[FIRConfiguration sharedInstance] setLoggerLevel:FIRLoggerLevelMin];
[[FIRAnalyticsConfiguration sharedInstance] setAnalyticsCollectionEnabled:NO];

在应用代理的didFinishLaunchingWithOptions: 中很早就放置将完全禁用 FireBase 分析,包括停止所有控制台输出。

我还发现Google/SignIn cocoapod 已被弃用-推荐使用GoogleSignIn(即没有'/')。如果您使用GoogleSignIn,那么这不依赖于 Firebase Analytics,因此原来的问题就消失了。现在我的应用中支持 Google Drive,但没有 Firebase Analytics!

【讨论】:

@ajeetsharma 这个问题和答案与崩溃无关。如果您遇到其他问题的崩溃,您应该搜索相关答案或发布新问题。【参考方案3】:

斯威夫特 4.0:

FirebaseConfiguration.shared.setLoggerLevel(.min) FirebaseConfiguration.shared.analyticsConfiguration.setAnalyticsCollectionEnabled(false)

【讨论】:

您确定 'FirebaseConfiguration.shared.setLoggerLevel(.min)' 在语法上是正确的? 是的,我已经测试过了。 第二个在 swift 5 和最新的 Firebase 上不再支持【参考方案4】:

在 Xcode 11.x(Swift 5 时代)中:

这个可能有点麻烦,即使应用了下面的正确解决方案,您也可能必须重新启动 XCode。

    打开方案:按 COMMAND + SHIFT + 在左侧选择“运行调试” 选择窗口顶部的“参数”标签 按左下角的小“+”按钮,将以下代码输入到“启动时传递的参数”部分。

(复制粘贴) -FIRDebugDisabled

这将为 Firestore、Firebase 和 Fire Analytics 禁用 Firebase 的调试模式。

如果您还没有加载 Fire Analytics,那么您只需将以下代码输入到您的 AppDelegate.swift 文件中:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 
    
    FirebaseApp.configure()
    let db = Firestore.firestore()


    // This below is the line of code to enter, but it won't stop Firebase Analytics from printing its mess in the consoleLog, but this works if you're not using FireBase Analytics.
    FirebaseConfiguration.shared.setLoggerLevel(.min)

    return true

注意/补充:您可以打开您的 Google info.plist 并写“NO”以启用 Firebase。要获取 Google 的 info.plist,只需单击 info.plist 文件,然后在导航窗口的顶部单击 info.plist,它将打开一个选择器,其中包含 Google 的 info.plist 作为可选项目。请参见图 2。

图 1:下拉菜单的外观。

图 2:Google 的 info.plist

【讨论】:

以上是关于完全禁用 Firebase/Analytics 以在应用启动时停止控制台垃圾邮件的主要内容,如果未能解决你的问题,请参考以下文章

为 iOS 调试版本禁用 Firebase Analytics

关于 Analytics 屏幕报告的 Firebase Analytics 错误

Firebase Analytics 自定义事件参数

如何获取Firebase Analytics的数据受众?

Flutter Web 错误 TypeError: dart.global.firebase.analytics is not a function

React Native Firebase Analytics 获取用户国家