【问题标题】:iOS Background Access Token RefreshiOS 后台访问令牌刷新
【发布时间】:2020-02-06 14:42:41
【问题描述】:

我希望通过在后台刷新令牌来延长访问令牌的到期时间。到期时间当前设置为 30 分钟(服务器端)并且此值不会更改,其想法是每 29 分钟我将调用一个方法来刷新访问令牌以使其存活 1 年半小时(意味着访问令牌保持活动状态将近 2 小时)。我已经读过后台任务最多需要 5 秒才能完成,然后如果需要更多时间来使用 UIKit,尽管这只会允许再花几分钟来完成所需的任务。

是否有任何特殊情况可以让我在后台执行此操作,或者是否有更好的方法来执行此操作?感谢您的帮助!

【问题讨论】:

  • 您应该使用 oath 或类似的解决方案,并仅在需要时更新令牌

标签: ios access-token background-process refresh-token


【解决方案1】:

在 AppDelegate.swift 中执行此操作。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    Timer.scheduledTimer(timeInterval: (60.0 * 29.0), target: self, selector: #selector(self.doThisEvery29Min), userInfo: nil, repeats: true)
    return true
}

@objc func doThisEvery29Min () {
    if Constant.uToken != nil {
        ServiceManager.sharedInstance.RefreshTokens() {
            (result) in
            switch result {
            case .Success(let responce):
                // update token
            case .FailureDueToService(let error):
                print(error)
                break
            case .Failure(let error):
                print(error)
                break
            }
        }
    }
}

【讨论】:

  • 应用程序暂停时不会触发Timer
  • @Paulw11 据我了解,他的意思是后台未暂停状态..如果应用程序暂停,他将无法执行任何代码。
  • 暂停状态是应用程序没有在后台主动执行的状态。当应用程序从前台移动时,它会在后台短暂运行,直到进入挂起状态。它保持挂起,除非用户将其带回前台或某些原因导致它暂时移至后台执行(位置更新、静默推送)。计时器不会导致应用从暂停状态移动。
  • @Paulw11 那么你建议的解决方案是什么?
  • 他们需要使用具有更长刷新令牌周期的身份验证系统,或者接受用户在令牌过期时可能需要重新进行身份验证的事实。根据他们最初获取令牌的方式,他们可能能够将用户的凭据保存在钥匙串中,并在需要时自动重新进行身份验证。
猜你喜欢
  • 1970-01-01
  • 2017-04-14
  • 2018-06-05
  • 1970-01-01
  • 2021-12-19
  • 2019-05-31
  • 2019-06-29
  • 2020-07-12
  • 2019-01-13
相关资源
最近更新 更多