通过 TestFlight 将应用程序安装到我的测试手机中后,我无法查看分析调试视图。
我已传入参数 -FIRDebugEnabled,并尝试过 -FIRAnalyticsDebugEnabled 但没有运气。
-FIRDebugEnabled -FIRAnalyticsDebugEnabled
如果我通过 Xcode 直接将应用程序安装到我的测试手机中,则调试视图将可用。但如果是通过TestFlight安装的,则看不到调试视图。
这可以通过将特殊标志注入 Firebase 的本地存储来完成。
-FIRDebugEnabled
命令行参数正在由以下两个框架进行检查:FirebaseCore 和 FirebaseAnalytics 框架。前者将标志保存到共享 UserDefaults
中,后者使用 APMUserDefaults
私有类,可以在运行时访问:
if let APMUserDefaults = NSClassFromString("APMUserDefaults") as AnyObject?,
let userDefaults = APMUserDefaults.perform(#selector(getter: UserDefaults.standard))?.takeUnretainedValue() {
_ = userDefaults.perform(#selector(NSMutableDictionary.setObject(_:forKey:)),
with: true,
with: "/google/measurement/debug_mode")
}
UserDefaults.standard.set(true, forKey: "/google/firebase/debug_mode")
在
application:didFinishLaunchingWithOptions:
文件的AppDelegate
方法的第一行添加以下代码
CommandLine.arguments.append(contentsOf: ["-FIRDebugEnabled", "-FIRAnalyticsDebugEnabled"])
除了前面的答案之外,对于正在寻找此内容的 React Native 用户,如果您使用像 react-native-config 这样的库,您可以使用 env 变量来打开/关闭此功能。
环境变量文件示例
ANALYTICS_DEBUG=true
在 AppDelegate.mm 的
didFinishLaunchingWithOptions
方法中:
NSString *analyticsDebug = [ReactNativeConfig envFor:@"ANALYTICS_DEBUG"];
if (analyticsDebug != nil && [analyticsDebug isEqualToString:@"true"]) {
NSProcessInfo *processInfo = [NSProcessInfo processInfo];
NSArray *arguments = [processInfo arguments];
NSMutableArray *newArguments = [NSMutableArray arrayWithArray:arguments];
[newArguments addObject:@"-FIRDebugEnabled"];
[newArguments addObject:@"-FIRAnalyticsDebugEnabled"];
[[NSProcessInfo processInfo] setValue:[newArguments copy] forKey:@"arguments"];
}
// Setup Firebase
[FIRApp configure];
确保之后设置 Firebase,否则这将不起作用。
您可以在这里找到 2024 年的有效解决方案:
https://github.com/invertase/react-native-firebase/issues/7648
不确定这里是否需要一切,但这适用于最新版本的 Swift。在
application:didFinishLaunchingWithOptions:
和FirebaseApp.configure()
之前:
CommandLine.arguments.append(contentsOf: ["-FIRDebugEnabled", "-FIRAnalyticsDebugEnabled"])
UserDefaults.standard.set(true, forKey: "/google/measurement/debug_mode")
UserDefaults.standard.set(true, forKey: "/google/firebase/debug_mode")
如果它不适合您,请在 Info.plist 中,将键
FIREBASE_ANALYTICS_COLLECTION_ENABLED
添加到 NO
以确保分析收集仅在您设置调试模式后启动,然后在 FirebaseApp.configure()
之后调用:
Analytics.setAnalyticsCollectionEnabled(true)