2017-11-21 4 views
2

Wie kann ich jede Benutzerinteraktion meiner iOS App verfolgen oder abfangen? Wie ein UIButton, UIBarButton, ... irgendein UIControl-Element drücken.Verfolgen Sie alle Benutzerinteraktionen einer iOS App

Ich weiß, es gibt Hunderte von Analysetools wie Google Analytics, Flurry, Appsee und so weiter, aber ich möchte diese Daten auf meinem eigenen Server speichern.

+0

Sie jede Aktion in einzelnen Text-Datei schreiben kann! Speichern Sie diese Datei im Dokumentverzeichnis. Senden Sie dann die Datei an Ihren Server (unter Verwendung der API) für jede App. –

Antwort

3

Hallo @tuvok, wenn Sie nicht möchten, Google Analytics und andere Bibliotheken zu verwenden, dann müssen Sie eine API (Web-Service). Sie müssen auf jede Benutzerinteraktion drücken, wie die Taste gedrückt oder irgendetwas anderes.

2

Sie UIApplication Unterklasse kann:

  • Eine UIApplication Subclass
  • Überschreibung der sendAction (_ Aktion: Selector, Ziel: Jede ?, vom Absender: Jede ?, nach: UIEvent?) Ereignismethode, erinnere mich an die Super-Implementierung
  • legte einen NSLog oder anderen diagnostischen Code innerhalb der Implementierung
zu nennen

Beispiel wird dies ein Protokoll ausdrucken jedes Mal ein UIButton gedrückt wird:

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>> 

Für Objective-C Referenz click here

1

eine einfache Lösung gefunden:

1 .Create eine UIControl Verlängerung

  1. Init in AppDelegate:

    @UIApplicationMain Klasse AppDelegate: UIResponder, UIApplicationDelegate {

    override init() { 
        super.init() 
        UIControl.classInit 
    } 
    

Beispiel von hier: https://stackoverflow.com/a/42047289/2820043

Verwandte Themen