2015-12-30 16 views
0

我已經在AppStore中開發並部署了我的應用程序。它正在成功運行。如何通過檢測Xcode7中單獨屏幕中的時間花費來顯示我們的對話框

現在,我在實現Rate us對話框時遇到了一個邏輯問題。

我想顯示自定義對話框時用戶花費在我的應用程序5 mins30 Seconds在任何屏幕。

Curently其中談到在我心中唯一的解決辦法是使用:

performSelector:withObject:afterDelay: 

但我不知道這是好還是不好。他們是否有其他方式來實現這一目標?

編輯

我已經實現這段代碼中的applicationDidFinishLaunching:

self.timerForScreenTimeOut = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(idleTimerExceeded) userInfo:nil repeats:YES]; 

現在,我怎麼能檢測多少秒,尤其是屏幕popingNavigation Controller之前結束。

+0

[看看這個](https://www.cocoacontrols.com/controls/irate)&[others](https://www.cocoacontrols.com/search?q=rate) –

+0

5分鐘&費率30秒?不要急於評價你的應用程序,否則你將有錯誤的評級... –

+0

@FahimParkar我會在一天內只做一次或兩次...我無法跟蹤屏幕切換...感謝您的鏈接...但我不想使用任何庫..我已經實現了一些東西..只有一個問題,我面臨着:( – Dalvik

回答

0
you can call your method inside applicationWillEnterForeground:. 
For example: dispatch_async(dispatch_get_main_queue(), ^{ 
       NSTimer *rateTimer = [NSTimer scheduledTimerWithTimeInterval: 5.0 
                    target: self 
                   selector: @selector(showRatePrompt) 
                   userInfo: nil repeats:YES]; 
      }); 
+0

是的我已經完成了這個...但是現在我怎麼才能檢測到屏幕已經過時 – Dalvik

+0

@RahulMishra帶一個名爲秒的全局int變量。在你的計時器的方法中,增加你的秒數,因此你可以得到在屏幕上的時間流逝 – Wolverine

+0

我把它作爲答案 – Wolverine

0

爲了檢測屏幕

經過的時間在viewdidlod

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    //create Global variable of NSInteger *seconds and initialise it with 0 
    seconds = 0; 

    NSTimer *Secondtimer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(increaseTimeCount) userInfo:nil repeats:YES]; 
    [Secondtimer fire]; 
} 

而在你increaseTimeCount方法,加大秒。

- (void)increaseTimeCount { 
    seconds++; 
} 

所以當價值將達到30個,那麼你可以展示你的警覺和無效的計時器。

+0

我有更多的30個屏幕..我必須管理所有這些屏幕 – Dalvik

+0

然後把這段代碼放在一個普通的類或Appdelegate類中,每次當你進入一個新的屏幕時,你將啓動一個計時器,當用戶彈出或解散時,它會增加你的秒數和計時器。當用戶在任何屏幕上停留超過30秒。你將能夠顯示你的警報評價應用程序 – Wolverine

相關問題