2017-04-08 10 views
0

ユーザーがフォームを送信するときに1つの要件があります。フォームを編集するには30分の時間差をユーザに与えなければならない。彼が30分の時間間隔でフォームを編集しない場合、アプリケーションが実行されていなくてもフォームは自動的に送信されます。アプリがまったく動いていないときにサービスコールをすることはできますか?はいの場合は、これを行う方法。助けてください。アプリケーションが実行されていないときにサービスコールを行うiOS

答えて

2

Jasmeetの回答を拡大するには、サーバーを変更する必要があります。最新のapplicationDidEnterBackground:でフォームを提出する必要がありますが、アプリをクラッシュさせたり、電話が切れてしまうことがありますので、バックグラウンドに入ることはありません。編集が行われている場合は、フォームを再度送信します。 30分が経過すると(サーバーによって測定されるように)、サーバーはフォームを受け入れます。要求にタイムスタンプ情報を含めると、フォームが最後に編集された時刻をサーバーが認識するようになります。

デバイス上の任意の時刻にコードを実行する方法はありません。サーバーコードを変更する必要がありますが、この問題を解決することはできません。 (たとえ、デバイス上の任意の時間にコードを実行する方法があっても、30分後にデバイスをオンにしたり、ネットワークにアクセスできないため、問題は解決しません)。

何らかの理由でサーバーを変更すると、要件を変更する必要があります。これはあなたがそれを記述するときに解決することはできません。

+0

ありがとうRob ...私は間違いなくサーバー側の実装を見ていきます。 – User

+0

Rob、フォームが編集されるたびに30分が経過するまでアプリがバックグラウンドに入るたびに提出することをお勧めしますか?それはクライアントによって完全に制御できないのですか? – danh

+0

実際には、フォームが編集されるたびに「30分が経過するまで」とは関係なく、提出すると言っています。コミットする編集と結合する編集をサーバーに決定させます。より複雑な解決策として、アプリは全面的にフォアグラウンドにとどまる場合は30分後に提出することができ、バックグラウンドに入るときに積極的に提出することができます(どれくらいの時間のタイムスタンプとともに)。サーバトラフィックはそれほど少なくなりますが、クライアントコードはもっと多くなります。サーバーのトラフィックが大きな問題でない限り、私はそれを最初の方法でやっています。 –

2

バックグラウンドでフォームを送信する場合は、アプリがバックグラウンドで一時停止されている場合、フォームが送信しない可能性があります。

最初にフォームを送信できます.30分以内にフォームを編集した場合は、フォームを再送信できます。

+0

ザッツ正しいが、それは私の要件ではありません。 – User

+0

バックグラウンドでリクエストを送信することはできますが、リクエストがバックグラウンドで行われることを保証できないため、データが失われる可能性があります。 –

+0

実際には、ユーザーはバックグラウンドでアプリを保持することも、アプリを強制終了することもできます。それがバックグラウンドであれば、私はそのサービスを打つことができます。しかし、ユーザーがアプリを殺した場合、サービスを打つことはできますか? – User

0

バックグラウンドモードを有効にしてアプリケーションを送信し、バックグラウンドモードのサポートが有効になっていないAppleのガイドラインなしで作業を処理する場合。あなたのアプリは拒否されます。 appdidenterバックグラウンドコールの処理を開始する前に、バックグラウンドモードのサポートガイドラインを確認してください。ユーザーにデータの入力を促すことができますが、自動保存ではなく自動送信し、次回にフォームを復元してすぐにユーザーエクスペリエンスを向上させることができます。

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/

関連する問題