2011-04-20 99 views
0

所以基本上,我一直在嘗試很多我在這裏和其他地方閱讀過的東西,並且一直未能得到這個工作。如何使iPhone應用程序限制使用到每天一個

我一直保存一個NSDate作爲一個對象在UserDefaults與setObject等,然後獲取[NSData日期]等當前時間,我的問題是比較。我見過其他人的例子,似乎沒有什麼可以做我需要的。

這只是一個if語句,我需要它知道如果變量從++上次開始經過了18個小時(並且它保存了NSDate),就知道該變量爲++。否則它只是顯示一個味精。我遇到的問題是我無法弄清楚如何檢查當前日期>保存日期18小時+。有人可以幫忙嗎?我試着將它們轉換成NSTimeIntervals並從中計算出來,但不知何故我把它搞砸了。

+2

我希望你有一個很好的理由(並將承擔,直到另行告知),但如果一個應用程序試圖支配我,我我會_damn_惱火每天只能使用一次。首先,如果它崩潰了(在寫完日期之後但在我能做任何有用的事情之前)或者我意外退出了?不要說你的方法是錯誤的,只是希望你已經給了它足夠的想法。 – paxdiablo 2011-04-20 02:29:37

+0

哦,該應用程序有很多功能(15〜總數),這是更多的獎勵功能,我不想每天增加超過一次。只是一個獎金功能。 – Casey 2011-04-20 02:43:10

回答

1

我會存儲一個LastAccessDateNSUserDefaults該應用程序。在應用程序打開,啓動,活動等我檢查,看看這個值是不到18小時與timeIntervalSinceNow。檢查出NSDate Class

例(未測試):

NSDate *lastAccessDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"LastAccessDate"]] 
NSTimeInterval duration = [lastAccessDate timeIntervalSinceNow]; 
int hoursPassed = duration/3600; 
0

你說的限制使用,以每天一次的意思嗎?你的意思只是讓應用每天做一些有用的事情?毫無疑問,這是通向App Store拒絕的途徑,特別是如果您在應用程序加載後不讓用戶執行任何操作。

在任何情況下,如果你想與這樣的東西着手,邏輯大概是這樣的:

NSDate *lastSyncDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"last_app_rundate"]; 
NSTimeInterval interval = [[NSDate date] timeIntervalSinceDate:lastSyncDate]; 

if ((interval/3600) >= 18) { 
    // let your user use your app 
    [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"last_app_rundate"]; 
} 

編輯:回答太慢了!

+0

是的,這只是應用程序的獎勵部分,我不希望他們每天只花一次點積分。該應用程序的其餘部分將保持完整運作。感謝所有人的快速響應。 – Casey 2011-04-20 04:52:29

0

試試這個,

NSTimeInterval dateDiff = [lastAccessDate timeIntervalSinceNow]; 
int hours=trunc(dateDiff/(60*60)); 
相關問題