【问题标题】:UIButton Event Tracking Google Analytics (Swift)UIButton 事件跟踪 Google Analytics (Swift)
【发布时间】:2015-06-02 17:00:27
【问题描述】:

我想在用户使用 Google Analytics(分析)点击 UIButton 时跟踪事件。我有下面的代码,但显示错误。我哪里错了?谢谢

代码:

@IBAction func startGame1(sender: AnyObject) {

        var tracker = GAI.sharedInstance().defaultTracker

        tracker.send(GAIDictionaryBuilder.createEventWithCategory("Game 1", action: "Start Pressed", label: "Start Timer One", value: nil).build()) 
    }

错误:

Cannot invoke 'send' with an argument list of type'(NSMutableDictionarry)'

【问题讨论】:

标签: ios swift google-analytics uibutton


【解决方案1】:

由于 Swift 1.2 发布,你必须将 GAIDictionaryBuilder 转换为 [NSObject : AnyObject]

在 StackOverflow 上查看这篇文章

Google Analytics not working with Swift 1.2 and Xcode 6.3

你的问题有解决办法

@IBAction func startGame1(sender: AnyObject) {

        var tracker = GAI.sharedInstance().defaultTracker

        tracker.send(GAIDictionaryBuilder.createEventWithCategory("Game 1", action: "Start Pressed", label: "Start Timer One", value: nil).build() as [NSObject : AnyObject]) 
    }

希望对你有帮助!

【讨论】:

  • 嘿 jre,它在 Swift 2.0 中没有帮助,错误: NSMutableDictionary 不能转换为 [NSObject : AnyObject] 。建议?
【解决方案2】:

对于 Swift 5。

1.您应该在您的项目中添加 GoogleService-Info.plist 文件(请参阅 Google 文档)。

2.您应该在 Info.plist 文件中添加此属性:

<key>GoogleAnalytics</key>
<dict>
    <key>TRACKING_ID</key>
    <string>"put_your_tracking_id_here"</string>
</dict>

3.在AppDelegate类中,didFinishLaunchingWithOptions方法中:

// GAI
    if let gai = GAI.sharedInstance(),
        let gaConfigValues = Bundle.main.infoDictionary?["GoogleAnalytics"] as? [String: String],
        let trackingId = gaConfigValues["TRACKING_ID"]
    {
        gai.logger.logLevel = .error
        gai.trackUncaughtExceptions = false
        gai.tracker(withTrackingId: trackingId)
    } else {
        assertionFailure("Google Analytics not configured correctly")
    }

4.在您的 ViewController 中,在 viewDidLoad 方法中(例如):

// GAI
    let tracker = GAI.sharedInstance().defaultTracker
    tracker?.set(kGAIScreenName, value: "Your_mark_name")
    let eventTracker: NSObject = GAIDictionaryBuilder.createScreenView().build()
    tracker?.send(eventTracker as! [NSObject : AnyObject])

5.之后你应该喝你的啤酒;)


对于 Swift 3

let tracker = GAI.sharedInstance().defaultTracker
tracker.set(kGAIDescription, value: "ScreenViewName")
let eventTracker: NSObject = GAIDictionaryBuilder.createScreenView().build()
tracker.send(eventTracker as! [NSObject : AnyObject])

或者...

let tracker = GAI.sharedInstance().defaultTracker
let eventTracker: NSObject = GAIDictionaryBuilder.createEvent( 
            withCategory: "SomeCategory",
            action: "SomeAction",
            label: "SomeLabel",
            value: nil).build()
tracker.send(eventTracker as [NSObject : AnyObject]!)

【讨论】:

  • 太棒了,谢谢...Google 的文档还没有针对 Swift 进行完全更新...而且,按照他们的 iOS SDK 教程不起作用真的很难:(
  • @ChrisAllinson 我的荣幸)
  • 任何可用的示例项目??我发现很难实现这一点。每当我运行代码时,我都会收到 Hit(s) dispatched: HTTP status -1 error。
  • @DayaKevin 我今天更新了我的帖子。希望对你有帮助
【解决方案3】:

Swift 3:您应该使用“[AnyHashable: Any]”而不是 [NSObject: AnyObject]。

来源:https://developer.apple.com/swift/blog/?id=39

guard let tracker = GAI.sharedInstance().defaultTracker else {return}
let eventTracker: NSObject = GAIDictionaryBuilder.createEvent(
    withCategory: YOUR_CATEGORY_NAME,
    action: YOUR_ACTION_NAME,
    label: YOUR_LABEL_NAME,
    value: nil).build()
tracker.send(eventTracker as! [AnyHashable: Any])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-03
    • 2015-06-26
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多