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 事件 - 测试和生产

找不到 com.google.firebase:firebase-analytics-ktx:。要求:项目:app

当 Firebase Analytics 分区表中出现表时,在 Bigquery 中安排查询