Firebase Analytics - 按操作系统主要版本划分的受众
Posted
技术标签:
【中文标题】Firebase Analytics - 按操作系统主要版本划分的受众【英文标题】:Firebase Analytics - audience by OS major version 【发布时间】:2019-02-25 11:25:33 【问题描述】:我试图在我的 Firebase Analytics 中创建一个受众,以便按主要 ios 版本对用户进行分组。
所以我创建了一个按流过滤的新受众,因为项目包含的不仅仅是生产 iOS 应用程序,然后我设置了另一个条件来按 User Property -> OS version 过滤。对于 iOS 11.x,我将其设置为 contain ios 11.,或者我尝试了正则表达式 ios 11.*。这些都不起作用,我总是得到 0 个用户,即使在未过滤的仪表板上存在这样的用户。
有人知道正确的条件是什么吗?谢谢
【问题讨论】:
你找到解决办法了吗? 不是真的,我已经有一段时间没有处理这个问题了。 【参考方案1】:因为iOS版本(major.minor.patch)有两位小数,所以属性是字符串而不是数字。最简单的方法是在 Firebase Web 控制台中创建一个名为“iOSMajorVersion”的用户属性。转到分析:用户属性以执行此操作。然后在您的代码中,获取主要版本并向 Firebase 报告。它有助于确保您在每个用户会话中只执行一次此操作。在 Objective-C 中,您可以通过块或异步 GDC 调度来完成。
您没有提到您使用的是 Objective-C 还是 Swift,但您可以这样做。
目标-C
@import Foundation;
@import Firebase;
@import UIKit;
+ (void)sendMajorOSVersionToFirebase
// This can only be executed once per app session.
UIDevice *myDevice = [UIDevice currentDevice];
NSString *iOSVersion = [myDevice systemVersion];
NSString *majorVersionNum;
// Two methods of getting the major version from the string
// Method 1: componentsSeparatedByString
NSArray *systemVersionArray = [iOSVersion componentsSeparatedByString:@"."];
majorVersionNum = [systemVersionArray firstObject];
// Method 2: range and substringToIndex
NSRange range = [iOSVersion rangeOfString:@"." options: nil];
majorVersion = [iOSVersion substringToIndex: range.location];
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
[FIRAnalytics setUserPropertyString:majorVersion forName:@"iOSMajorVersion"];
);
斯威夫特
import Firebase
import Foundation
import UIKit
class func sendMajorOSVersionToFirebase()
// This can only be executed once per app session.
let myDevice = UIDevice.current
let iOSVersion = myDevice.systemVersion
var majorVersionNum: String
// Two methods of getting the major version from the string
// Method 1: componentsSeparatedByString
let systemVersionArray = iOSVersion.components(separatedBy: ".")
majorVersionNum = systemVersionArray.first ?? ""
// Method 2: range and substringToIndex
let range: NSRange = (iOSVersion as NSString).range(of: ".", options: nil)
majorVersion = (iOSVersion as? NSString)?.substring(to: range.location)
// TODO: ensure that the code below is executed only once.
FIRAnalytics.setUserPropertyString(majorVersion, forName: @"iOSMajorVersion")
【讨论】:
这不是我想要的方式,因为用户属性的数量是有限的。因为它是一个字符串,它应该可以通过正则表达式或包含操作匹配? 这是一个字符串,是的。我认为您可以将其设置为整数,但我还没有研究过。由于您只是在寻找 iOS 主要版本,因此属性的数量是否有限并不重要。用户定义属性的数量是有限的,而不是它们可以包含的值的数量。以上是关于Firebase Analytics - 按操作系统主要版本划分的受众的主要内容,如果未能解决你的问题,请参考以下文章
在 Firebase Analytics BigQuery 数据库中按相同 ARRAY 或 STRUCT 中的两个值过滤查询
Firebase Analytics 错误 - 操作失败 - 错误代码 2
Firebase Analytics BigQuery 中的归因
iOS 上的 Firebase Analytics 事件 - 测试和生产