2016-07-31 5 views
0

今iOSアプリケーションをサーバーに接続しています。
アプリのサーバーを使用するには、アプリケーションにアクセストークンが必要です。
ユーザーがログインすると、リフレッシュトークンでアクセストークンが取得されます。
ログイン後、ユーザーはもうログインする必要はありません。ユーザーは、インスタントグラムやFacebookなどのログを記録せずにアプリを使用できます。 しかし、アクセストークンは3600秒(1時間)で有効期限が切れるので、更新トークンを で使用してアクセストークンを更新/更新する必要があります。 しかし、リフレッシュトークン/アクセストークンを1時間ごとにクエリ/更新するにはどうすればよいですか? アプリはバックグラウンドでも毎時自動的にこれを行うと思います。 Alamofireを使用してアクセストークンを取得できます。 しかし、私はアプリケーションと接続サーバーを使用することはありません。iOS/swift用にリフレッシュトークンを含むアクセストークンを自動的に取得するにはどうすればよいですか(毎時)

私のアプリはiOS用で、Swiftでコード化されています。

+0

AppDelegateのapplicationDidBecomeActive関数内でリクエストを実行することができます。この機能は、アプリケーションが非アクティブ(バックグラウンド)からアクティブに状態を変更するたびにトリガーされます。 –

+0

次に、コードの実行時間をどのように制御できますか? (1時間ごとにコードを実行したい) – kimpro

+0

私はNSDateをUserDefaultsに保存し、保存されたNSDateを現在の日付と比較し、それが1時間以上であればサーバーへの呼び出しを実行する。とにかくサーバーへの呼び出しを実行するオプションもあります。サーバーはこのロジックを実行します。アプリが複数のプラットフォームをターゲットにしている場合は、より良いアプローチです –

答えて

0

ユーザーがアプリを最初に開いたとき(フォアグラウンドになったとき)、リフレッシュしてタイマーを開始できます(55分間)。タイマーが切れると、更新することができます。アプリケーションがバックグラウンドに移動すると、タイマーが破棄されます。アプリケーションがバックグラウンドでリフレッシュを実行する必要があるとは思わないでください。そうしてはならず、理由もありません。

上記はすべて行う必要があります。アプリがフォアグラウンドになると、あなたの現在のトークンがどれくらい長く有効であるかを確認し、N-5分間タイマーをリフレッシュせずに開始することができます。おそらく毎分実行するようにタイマーを変更することで、リフレッシュ失敗やインターネット接続を処理する方法について考えることができます。

関連する問題