在Swift 2或3中发布Google Analytics
Swift 2(Swift 3)和Google Analytics(分析)存在问题。
这是问题的线路:
tracker.send(GAIDictionaryBuilder.createScreenView().build())
Xcode告诉我:
无法使用types为“(NSMutableDictionary!)”的参数列表来调用“send”
Swift 3更新(2016.10.19)
let tracker = GAI.sharedInstance().defaultTracker let build = (GAIDictionaryBuilder.createScreenView().build() as NSDictionary) as! [AnyHashable: Any] tracker?.send(build)
还是一个丑陋的方法,让我知道如果有一个更清洁的转换。
原版的
同样在这里,努力解决大量的错误。
我所做的(已弃用):
var build = GAIDictionaryBuilder.createAppView().build() as [NSObject : AnyObject] tracker.send(build)
编辑(2015)
感谢@George Poulos。 。 最近他们更新了选项,现在createAppView已经被弃用了,应该使用createScreenView来代替。
var build = GAIDictionaryBuilder.createScreenView().build() as [NSObject : AnyObject] tracker.send(build)
除了接受的答案:
改变了这个:
tracker.send(GAIDictionaryBuilder.createEventWithCategory("UX", action: "User sign in", label: nil, value: nil).build())
对此:
tracker.send(GAIDictionaryBuilder.createEventWithCategory("UX", action: "User sign in", label: nil, value: nil).build() as [NSObject : AnyObject])
这可能有点矫枉过正,但我更喜欢创build一个简短的扩展名,而不需要每次input铸件:
在任何swift文件中,粘贴下面的代码:
extension GAIDictionaryBuilder { func buildSwiftCompatible() -> [NSObject:AnyObject] { return self.build() as [NSObject:AnyObject] } }
然后你可以调用buildSwiftCompatible()而不是通常的build():
tracker.send(GAIDictionaryBuilder.createScreenView().buildSwiftCompatible())
玩的开心。
这是我想出来的解决scheme..也许这可能会帮助你们中的一些人。 这是一个你需要在每个UIViewController中实例化的结构,但它有助于模板。
import UIKit struct Analytics { fileprivate let viewController: UIViewController fileprivate let tracker = GAI.sharedInstance().defaultTracker init (forScreen viewController: UIViewController) { self.viewController = viewController } func startTracking () { let screenView = GAIDictionaryBuilder.createScreenView().build() as NSDictionary guard let tracker = tracker, let build = screenView as? [AnyHashable: Any] else { return } tracker.set(kGAIScreenName, value: String(describing: viewController)) tracker.send(build) } }
class HomeViewController: UIViewController { lazy var analytics: Analytics = { return Analytics(forScreen: self) }() override func viewDidLoad() { super.viewDidLoad() } override func viewWillAppear() { super.viewWillAppear() analytics.startTracking() } }
对于迅捷3:
让build:NSObject = GAIDictionaryBuilder.createScreenView()。build()
tracker?.send(build as![AnyHashable:Any])
让build = GAIDictionaryBuilder.createScreenView()。build()as [NSObject:AnyObject]
跟踪器?。发送(编译)
- 尝试连接到运行IISExpress的本地主机时如何解决ERR_CONNECTION_REFUSED – 错误502(无法从Visual Studio中debugging)?
- 什么情况下应该使用集群部署模式而不是客户端?
- 如何通过GA的新analytics.js设置自定义variables
- 报告Google Analytics(分析).jsexception跟踪的例外情况
- 有没有办法通过服务器端API将事件发布到Google Analytics?
- 有没有办法阻止Google Analytics(分析)将开发工作视为点击?
- Google Analytics(分析)SDK 3.0中的_sqlite3链接器错误
- 如何将Universal Analytics集成到Chrome扩展中?
- 为什么要提供1×1像素的GIF(networking臭虫)数据呢?
- Google analytics 3.08 IOS idfa class missing,不会收集idfa
- 什么是“var _gaq = _gaq ||” ; “为?