ios - 使用 url scheme 切换应用程序时定期监听事件的最佳实践

标签 ios swift swift2

我对 Swift 和 iOS 开发完全陌生,我遇到了一些设计十字路口。

我在我的应用程序中使用第三方银行登录服务,我使用 url scheme 打开它。 url scheme 打开银行应用程序,我输入我的凭据,然后银行应用程序将使用我唯一的 url scheme 标识符再次打开我的应用程序,AppDelegate 将触发此事件。

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    return true
}

银行 api 公开了一个端点,我可以调用它来收集尝试登录的状态,如果成功,我将获得一些用户信息。否则我会得到适当的错误响应。

现在我正在创建一个 NSTimer 以每秒调用一次此收集,并检查其状态。哪个工作正常,一切都很好,花花公子。

self.timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "collect:", userInfo: nil, repeats: true)

我觉得这不是一个很好的解决方案,因为当应用程序切换到银行应用程序进行身份验证时,我的应用程序进入后台线程,并且 NSTimer 事件不会触发。

问题变成了,我是否最好在我的 LoginViewController 中监听 openURL 的 AppDelegate 事件,并在它发生时开始收集身份验证的状态?

这是一个可行的选择,甚至可能吗?还是 NSTimer 被认为是一个好的解决方案?

在此先感谢,我希望我能说得通。

最佳答案

在您的情况下,最好直接在 openURL 事件中调用 View Controller 的方法。不需要轮询,因为如果我理解正确的话,openURL 会给你正确的答案。 定时器轮询总是针对特定事件而失败,这只是不必要的能源消耗。

关于ios - 使用 url scheme 切换应用程序时定期监听事件的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31131857/

相关文章:

ios - 应用在 Admob 搜索的应用商店中不可见

swift - 如何突出显示 UIImageView 中图像的一部分?

ios - 在 Swift 中转义字符串

ios - 如何在 Swift 中使用包含同一键的多个值的查询参数构建 URL?

ios - 使用泛型类型的 Swift 工厂

iphone - 在另一个类中更改 NSString 时更新 UILabel 文本

ios - 如何根据 nsarray 过滤谓词

ios - 无法使用类型为“(快照 : (DataSnapshot)) Swift 3) 的参数列表调用类型 'User' 的初始值设定项

ios - 自定义 UITableViewCell 导致 UISearchBar 崩溃

ios - 全局设置 iOS 自动时间