[英]Disabling user interaction not working in SVProgressHUD on iOS app
[英]Track any user interaction of an iOS App
如何跟蹤或捕獲iOS應用程序的每個用戶交互? 就像按下一個UIButton,UIBarButton,...任何UIControl元素一樣。
我知道有數百種分析工具,例如Google Analytics(分析),Flurry,Appsee等,但我想將這些數據保存在自己的服務器上。
您好@tuvok,如果您不想使用Google Analytics(分析)和其他庫,則必須制作一個API(Web服務)。 您必須在每次用戶互動(例如按下按鈕或其他操作)時都點擊api。
您可以將UIApplication子類化:
例如,這將在每次按下UIButton時打印一條日志:
func sendAction(_ action: Selector, to target: Any?, from sender: Any?, for event: UIEvent?) -> Bool {
if (sender is UIButton) {
print("Action: \(NSStringFromSelector(action)) - \(target) - \(sender)")
}
return super.sendAction(action, to: target, from: sender, for: event)
}
2017-07-08 14:46:18.270 UIApplicationSubclass[94764:c07] Action: anAction: - <ViewController: 0x76790a0> - <UIRoundedRectButton: 0x767b9b0; frame = (103 66; 73 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0x767bad0>>
2017-07-08 14:46:27.378 UIApplicationSubclass[94764:c07] Action: anAction: - <ViewController: 0x76790a0> - <UIRoundedRectButton: 0x767b9b0; frame = (103 66; 73 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0x767bad0>>
對於objective-c參考, 請單擊此處
找到了一個簡單的解決方案:
1。創建一個UIControl擴展
private let swizzling: (AnyClass, Selector, Selector) -> () = { forClass, originalSelector, swizzledSelector in
let originalMethod = class_getInstanceMethod(forClass, originalSelector)
let swizzledMethod = class_getInstanceMethod(forClass, swizzledSelector)
method_exchangeImplementations(originalMethod!, swizzledMethod!)
}
extension UIControl {
static let classInit: Void = {
let originalSelector = #selector(sendAction(_:to:for:))
let swizzledSelector = #selector(swizzled_sendAction(_:to:for:))
swizzling(UIControl.self, originalSelector, swizzledSelector)
}()
@objc func swizzled_sendAction(_ action: Selector, to target: Any?, for event: UIEvent?) {
swizzled_sendAction(action, to: target, for: event)
print("action was triggered")
}
}
在AppDelegate中初始化:
@UIApplicationMain類AppDelegate:UIResponder,UIApplicationDelegate {
override init() { super.init() UIControl.classInit }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.