[英]Is there a way to keep track of elapsed time even after app is “Deleted”?
我正在開發一個應用程序(僅適用於iPAD),該應用程序從“首次”安裝該應用程序起每隔三天(業務要求)向用戶顯示一個彈出框。 我正在使用NSTimer做到這一點。 如果用戶在三天前刪除該應用程序並重新安裝該應用程序,則實施會中斷。 在這種情況下,三天的計數器將重新啟動。 我知道使用日期可能不是一個好主意,因為用戶可以通過設置更改日期。
有沒有辦法可以使NSTimer(或類似的東西)在刪除應用程序后仍保持運行?
NSTimer* msgTimer = [NSTimer scheduledTimerWithTimeInterval: 259200 target: self selector: @selector(showMsg:) userInfo: nil repeats: NO];
我能想到的唯一方法是每次關閉應用程序時,將最后一次通知時間的字符串表示形式保存在鑰匙串中。 刪除應用程序后,鑰匙串不會清除。 盡管從技術上講這是對鑰匙串的濫用,但它可能會起作用,我懷疑您會遇到任何商店提交問題。
每當啟動該應用程序時,請檢查它是否是自上次安裝以來首次啟動(將此信息保存為默認值)。 如果是第一次,請檢查鑰匙串時間戳,並與當前時間戳進行比較,然后從那里開始。
假設用戶刪除了該應用並在第二天安裝了該應用。 檢查鑰匙串,您會看到它在23小時前被刪除,然后以減去23小時的時間啟動計時器(因此它將在2天1小時內發出通知)。 希望一切都有道理。
否則,如果該應用程序通常已連接到互聯網,則可以使用某種服務器。
刪除應用程序后,您的應用程序就不會沙箱化,您所做的任何事情都會消失。 您將需要某種Web服務的幫助才能實現所需的行為
您還可以使用iCloud的鍵值數據存儲來存儲初始安裝日期。 如果您同時在本地存儲日期並從iCloud同步日期,那么除非用戶不上網,否則用戶將很難避免獲取更新。
當然,這取決於它們是否已在設備上登錄到iCloud,並且需要iOS 5或更高版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.