2013-07-01 52 views
9

每按下按鈕/互動有沒有辦法趕上各種用戶交互,但首先按下按鈕的iOS應用程序?我有興趣使用時間戳記記錄這些事件,最好是使用它們顯示的屏幕名稱。登錄iOS應用

我想最簡單的方法是插入自定義日誌功能的呼叫到每一個按鈕叫動作。但是這太費勁了。

我也想過子類化UIButton,但這仍然需要我改變現有應用程序中的每個按鈕,並且只能用於按鈕(例如表格中的單元格)。

有一點是我可以在一般的攔截觸摸?或者有一點我明確知道一個按鈕被按下了,我有一個對該按鈕的引用? (我們研究移動應用程序的可用性測試,所以我們的目標是一個模塊化的解決方案,可以很容易地重用,並儘可能少地需要手動更改代碼。但是歡迎任何建議,因爲我意識到這可能不是這樣易)

+1

這很簡單,如果你繼承UIApplication,看看我的答案;-) – LombaX

回答

12

你也可以繼承的UIApplication:

  • 創建UIApplication的子類
  • 覆蓋的-(BOOL)sendAction:(SEL)action to:(id)target from:(id)sender forEvent:(UIEvent *)event方法,記得調用超級實施
  • 把一個NSLog或其他診斷代碼執行

實施例,這將打印日誌每次按下一個的UIButton時間:

-(BOOL)sendAction:(SEL)action to:(id)target from:(id)sender forEvent:(UIEvent *)event 
{ 
    if ([sender isKindOfClass:[UIButton class]]) 
    { 
     NSLog(@"Action: %@ - %@ - %@", NSStringFromSelector(action), target, sender); 
    } 

    return [super sendAction:action to:target from:sender forEvent:event]; 
} 


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

此外,子類UIApplication的,你必須改變這樣的main.m文件(在我的情況下的UIApplication子類被命名爲FLApplication,看UIApplicationMain函數的第三個參數和FLApplication.h進口)

#import "AppDelegate.h" 
#import "FLApplication.h" 

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, NSStringFromClass([FLApplication class]), NSStringFromClass([AppDelegate class])); 
    } 
} 
+0

好主意,謝謝 – Stavash

1

正是你所需要的是Google Analytics。記錄每個用戶的交互不是正確的方法。您可以使用谷歌分析來跟蹤您的應用內的用戶交互。

+0

其實我認爲它不是。我想要進行需要原始數據而不是彙總版本的研究。我想控制什麼被記錄以及如何分析。我需要爲每個用戶進行測試的單獨數據集,以及確切的時間戳與其他信息(截圖/記錄)結合使用。 – Christian