我是一名新程序員,曾經搜索過這個答案,但認爲我可能沒有使用正確的術語。我如何讓用戶每天只能使用一次應用程序?
我所試圖做的是讓用戶在24小時內使用我的應用程序,這是一個遊戲,只有一次。如果他們在24小時之前嘗試玩遊戲,我想要一個警報,告訴他們稍後再回來。我已經看到這樣做的其他遊戲,給你「學分」,但似乎無法找到代碼。
任何幫助表示讚賞!
我是一名新程序員,曾經搜索過這個答案,但認爲我可能沒有使用正確的術語。我如何讓用戶每天只能使用一次應用程序?
我所試圖做的是讓用戶在24小時內使用我的應用程序,這是一個遊戲,只有一次。如果他們在24小時之前嘗試玩遊戲,我想要一個警報,告訴他們稍後再回來。我已經看到這樣做的其他遊戲,給你「學分」,但似乎無法找到代碼。
任何幫助表示讚賞!
使用NSDate
類獲取當前日期([NSDate date]
),然後使用NSUserDefaults
類保存該值。當應用程序打開時,檢索該值,然後將舊日期與當前日期進行比較。如果是一天,不要做任何事情。否則,顯示警報。
//setting the date
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"Date"];
//retrieve date
NSDate *date = [[NSUserDefaults standardUserDefaults] objectForKey:@"Date"];
//now compare the dates
這很好,謝謝,我想添加一件事情,以防其他人想要使用它,一旦我有兩個不同的日期,我使用NSCalendar和NSDateComponents來弄清楚日期的差異是24小時還是更多,再次感謝 –
您的應用程序打開後,您將當前日期/時間設置爲遊戲開始時間。每次應用打開時,您都會檢查您是否已經過了保存的日期/時間的24小時,如果您不是,請將它們帶到另一個視圖或僅顯示一條消息,告訴他們返回時間爲_小時。
查一查節約NSDates NSUserDefaults的到,如何比較NSDates,你應該能夠拉這一關相對容易。
這種方法的問題在於,他們能夠刪除的應用程序,並重新安裝,這將重置或NSUserDefaults的針對應用程序的任何其他本地存儲。爲了解決這個問題,你必須在服務器上完成用戶帳戶(可能是你看到的其他應用程序),或者至少爲他們的設備發送一個唯一的ID並處理它的服務器端。
另一種選擇是將日期保存在鑰匙串中。如果應用程序被刪除,它將不會被刪除。鑰匙串並不是爲此而設計的,但它起作用。 –
對於這個問題,將它保存到UIPasteboard中,但正如你所說的那樣,它並不是爲此而設計的。這兩個選項都可以工作。 – rooster117
你可以看看我的回答對here類似的問題。
無論如何,它不會阻止用戶重新安裝應用程序或手動更改設備上的日期。 要實現您所需要的功能,最好在用戶實際通過外部服務器運行應用程序時保留&驗證日期。也許你可以在服務器端使用php,並通過NSURLConnection POST請求連接到它。
同意上面的re:堅持一個NSDate。如果你可以在重新安裝時違反約束條件,那麼NSUserDefaults是最有意義的。
你要問和回答什麼是你真正的「跑」的意思是,一旦其他問題。這是否意味着啓動一次並且運行很多,或者只啓動一次或者其他的東西?說用戶打了一分鐘然後接到一個電話(這是一個didFinishLaunching和兩個didBecomeActive的),那麼你的執行如何?
你可能真的需要的是一個總播放時間不能超過後24小時超過一定的價值。
我不認爲你會發現這個開箱即用。你想實現某種能源功能嗎?無論如何,您需要做的就是開始上一次存儲用戶播放的內容,並將當前時間與節省的時間進行比較。 –