我不希望我的应用一启动就要求登录。相反,我想提示用户根据“需要”登录。因此,例如,如果用户与要求他登录的应用程序的一部分进行交互,则只有在那时才会出现登录提示。
我有几个问题:
1) 以前有没有人做过这种“惰性”登录,如果有,您的经历如何?难不难管理?这对用户来说是一种令人困惑的体验吗?
2) 实现它的最佳方法是什么?
我有一个提示用户登录的 LoginViewController。我想在当时可见的任何 View Controller 的 View 之上以模态方式显示此 View Controller 。
我还希望其他各种 View Controller 对 LoginViewController 一无所知,以最大限度地减少耦合。
理想情况下,我有一些 LoginManager 单例,它可以管理与登录有关的任何事情。
然后例如,如果一些随机 View Controller MyCoolViewController 需要用户身份验证某个功能,比如按下按钮,它可以调用:
- (void)buttonPressed:(id)sender {
// If the user isn't logged in, show the login modal view on top of this VC
if (![[LoginManager sharedManager] requireLoginWithViewController:self]) {
return;
}
// Code that is protected by login
}
但是我需要一种方法来知道登录是否成功。这可以通过委托(delegate)或回调来解决,但意味着每个 View Controller 都知道一些我想避免的关于 LoginController 的信息。
另一种方法是创建 UIViewController 的 ProtectedViewController 子类,我的所有 View Controller 都将继承该子类,并提供访问 protected 功能的功能,并在需要时显示登录 Controller 。
您如何看待这些方法?还有什么更有意义的吗?我很想听听您关于“懒惰”登录的经验。
最佳答案
我已经通过以下方式实现了这种延迟日志记录方法(没有问题):
- 创建了一个带有注销、登录(用户名/密码)的设置 View ,它可以是一个通用的登录页面,也可以是一个 UIWebView。
- 应用程序将数据发送到服务器进行身份验证(在 JSON 消息中)。
- 成功登录:我将登录数据存储在钥匙串(keychain)中(使用单例模式,参见 this Apple sample code 或 this tutorial )
- 如果用户想要使用应用程序的敏感部分,我会请求存储的用户名的密码,并且能够注销并使用不同的帐户登录。该应用程序将输入的密码与存储的密码进行比较(离线模式)或将其发送到服务器(在线连接)。但它可以根据要求以不同的方式实现。
而且用户喜欢它!
祝你好运!
关于ios - 如何处理延迟登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15958359/