【问题标题】:Passing Dictionary to Analytics parameters: Urban Airship将字典传递给 Analytics 参数:Urban Airship
【发布时间】:2018-03-19 09:17:22
【问题描述】:

我正在尝试在我的应用中实施 Urban Airship Analytics。我想跟踪我的应用程序中的每个事件,因为我创建了一个不同的类并将跟踪数据作为字典传递。

以下https://docs.urbanairship.com/platform/ios/?swift#ios-screen-tracking 链接相同。

我将参数传递为:

    UAirship.shared().analytics.trackScreen("MainScreen")
    let event = UACustomEvent()
    event.properties = createParamDictionary(paramDict1,paramDict2)
    event.track() 

由于事件 properties 是只读的,我无法为其分配/添加数据。 我能看到的唯一选择是根据其定义的类型一一添加数据。 即。

event.setStringProperty("abcd", forKey: "abcd")
event.setNumberProperty(123, forKey: "xyz")

对我来说这很乏味。

所以我的问题是:

  1. 我做得对吗?
  2. 如果是,是否有任何其他变量或某种方式可以直接添加参数?
  3. 我还想添加 User_id 来跟踪特定用户。对此有何规定?

谢谢。

【问题讨论】:

    标签: ios swift parameter-passing analytics urbanairship.com


    【解决方案1】:

    我认为您可以为 UACustomEvent 类创建一个自定义方法,该方法接受一个字典并使用 UA 定义的方法设置值,就像这样,

    extension UACustomEvent {
    
        func setEventProperties<T: Any>(_ values: [String: T]) {
    
            for keyValuePair in values {
    
                if let value = keyValuePair.value as? String {
                    setStringProperty(value: value, forKey: keyValuePair.key)
                } else if let value = keyValuePair.value as? Int {
                    setNumberProperty(value: value, forKey: keyValuePair.key)
                }
    
            }
    
        }
    
    }
    

    这样,您不必每次都使用 setNumberPropertysetStringProperty 来设置事件。你可以简单地这样做,

    event.setEventProperties(["abcd": "abcd", "xyz": 123])
    

    【讨论】:

    • 嗨@Sandeep。我试过这个,但没有运气。它没有更新属性变量。 :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 2010-09-24
    • 2018-09-14
    相关资源
    最近更新 更多