2013-04-03 27 views
0

目前我正在開發一款遊戲iOS應用程序,我將向我的部分客戶進行演示。設置iPhone應用程序的失效日期

雖然我的應用程序的分佈我想要在我的應用程序中設置到期機制,以便它在「N」天后過期。 這意味着(例如30天后)我的應用程序將無法工作。我可以通過使用系統日期&時間,這意味着每當我的程序啓動時,我檢查今天的日期和過期日期。

問題是如果用戶更改系統時間,我的比較將不正確。

此外,如果用戶刪除&重新安裝應用程序,它不會工作。

任何幫助或建議?

+1

你知道演示在App Store中是不允許的,對嗎? – 2013-04-03 19:24:56

+0

蘋果不會讓你這樣做。嘗試改爲製作一個功能較少的「精簡版」。許多應用程序都會這樣做,讓人們對其進行測試。 – 2013-04-03 19:25:42

+0

@DavidRönnqvist,我知道,但是這個東西我現在不會投入到appstore中,這是針對內部客戶端演示的。 – user1227928 2013-04-03 19:29:30

回答

2

當應用程序到期時,將某些內容存儲在鑰匙串中以表明這一事實。然後在啓動時檢查,而不是日期。

或者,您可以讓它檢查您控制的Web服務。

+0

keychain是比nsuserdefaults更好的選項,因爲存儲在其中的信息不會得到與應用程序刪除。所以用戶默認重新安裝會退回計時器。與鑰匙串不會發生。 – vikingosegundo 2013-04-03 21:36:45

3

Ad Hoc Distribution

特設發展建言過去3個月,但是如果你想加一個期限,那麼你可以:

添加鍵值中NSUserDefaults存儲開始日期的應用程序(從Web服務中獲取的時間,如http://www.earthtools.org/webservices.htm#timezone),那麼每次應用程序進入前臺時都會檢查對應的時間,如果超過了閾值,則取消加載應用程序。

NSDate *now  = //load current datetime from restkit 
NSDate *startDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"startDate"]; 
NSDate *futureDate = [NSDate dateWithTimeInterval:60 * 60 * 24 * 30 sinceDate:startDate]; 

if ([futureDate compare:now] == NSOrderedAscending) { 
    //stop the application loading by loading a NIB and displaying a message. 
} 

我會推薦使用RestKit來從網絡服務請求數據。

+1

只是爲了準確:86400秒不一定是一天(夏令時)。而對於這個可能並不重要的任務,如果你想在30天內完全確定一個日期,則可以使用NSDateComponents和NSCalendar創建日期。 – vikingosegundo 2013-04-03 20:23:30

相關問題