2017-04-08 91 views
0

我有一個要求,即當用戶提交表單時。我必須給用戶30分鐘的時間間隔來編輯表單。如果他不以30分鐘的時間間隔編輯表格,即使應用程序未運行,表格也應該自動提交。當應用程序完全沒有運行時,我們可以撥打服務電話嗎?如果是,那麼該怎麼做。請幫忙。當應用程序未運行時撥打服務電話iOS

回答

2

要擴大Jasmeet的答案,您將需要更改服務器。您最遲需要在applicationDidEnterBackground:提交表單,但您可能希望儘早提交該表單(因爲應用可能會崩潰或電話可能會關閉,在這種情況下,您將永遠不會進入後臺)。如果進行了修改,那麼您將再次提交表單。如果30分鐘通過(由服務器測量),則服務器將接受該表單。您可能希望在請求中包含一些時間戳信息,以便服務器知道表單最後一次編輯的時間。

無法在設備的任意時間運行代碼。您必須更改服務器代碼,否則無法解決此問題。 (即使有辦法在設備的任意時間運行代碼,也不能解決您的問題,因爲設備甚至可能在30分鐘後不會打開或者無法訪問網絡。)

如果您不能出於某種原因更換服務器,那麼您將不得不更改您的要求。這不能像你描述的那樣解決。

+0

感謝羅布......我一定會在服務器端實現。 – User

+0

Rob,你是否建議每次提交表單時都要提交,每次應用程序進入後臺,直到30分鐘過去?那怎麼樣不能完全由客戶控制? – danh

+0

實際上,我表示每次提交表單時都要提交,與「直到30分鐘過去」無關。讓服務器決定要提交哪些編輯以及要合併哪些編輯。作爲一種更復雜的解決方案,如果應用程序始終處於前臺,應用程序可以在30分鐘後提交,並在進入後臺時提前提交(以及一段時間已過的時間戳)。這種方式的服務器流量較少,但客戶端代碼更多。除非服務器流量是主要問題,否則我會以第一種方式做。 –

2

如果你想在後臺提交表單,那麼如果應用程序在後臺暫停,表單可能不會提交。

您可以先提交表單,如果用戶在30分鐘內編輯表單,則可以重新提交表單。

+0

那是正確的,但不是我的要求。 – User

+0

您可以在後臺發送請求,但可能會丟失數據,因爲您無法確保該請求將在後臺進行。 –

+0

其實用戶可以保持應用程序在後臺或他們可以殺死應用程序。如果它在後臺,那麼我可以打這個服務。但是,如果用戶已經殺死了應用程序,那麼我們可以打到服務? – User

0

如果您在啓用後臺模式的情況下提交應用程序,並在未啓用Apple背景模式支持的指導下處理您的工作。你的應用將被拒絕。在調用appdidenterbackground調用之前,請查看後臺模式支持指南。您可能會提示用戶填寫數據,但不會自動提交,而是自動保存,下次醒來時只需恢復表單,以便繼續擁有良好的用戶體驗。

Apple使用背景模式的指南。

2.5.4 Multitasking apps may only use background services for their 
intended purposes: VoIP, audio playback, location, task completion, 
local notifications, etc. If your app uses location background mode, 
include a reminder that doing so may dramatically decrease battery 
life. 

https://developer.apple.com/app-store/review/guidelines/