如何维护用户已在ios应用程序中登录的会话

时间:2016-02-17 07:39:36

标签: ios objective-c asp.net-mvc web-services wsdl

成功登录服务电话后,我正在向我的应用程序显示仪表板,我们还有其他服务电话。

问题是在运行时间应用程序之后,然后终止应用程序线程,应用程序和服务调用之间的链接被折叠。

如果用户登录应用程序并杀死应用程序,则如何维护该用户已被记录。 (杀死应用程序双击主页按钮并向上滑动应用程序)。

我是否必须在应用程序上调用相同的登录服务才能完成启动。 或检查用户是否已登录

我的问题是维护会话以访问其他服务。但是从服务器端来看,它始终表示用户在从后台杀死app后没有登录。

@All 您的信息有助于提供集成服务。 在此先感谢。

3 个答案:

答案 0 :(得分:3)

您可以将BOOL值设置为NSNumber对象,并在登录完成后将其添加到NSUserDefault

NSUserDefaults *boolUserDefaults = [NSUserDefaults standardUserDefaults];
[boolUserDefaults setObject:[NSNumber numberWithBool:YES] 
                     forKey:@"loginStatus"];

稍后您将能够使用-boolForKey:中的NSUserDefaults函数以普通BOOL的形式检索该值,并根据该值检查用户是否已登录。

此外,您可以根据您的要求维护本地数据库,coredata等。

<强>更新

如果您想维护会话,可以要求服务器团队为您提供登录API响应&amp;将其保存为NSUserDefaults中的字符串,并在服务调用中传递该字符串。

答案 1 :(得分:1)

如果登录成功,请在下方。

[[NSUserDefaults standardDefaults] setValue:@"yes" forKey:@"isLoggedIn"];
[[NSUserDefaults standardDefaults] synchronize];

用于检查以下用途。

if ([[[NSUserDefaults standardDefaults] valueForKey:@"isLoggedIn"] isEqualToString:@"yes") {
    NSLog(@"You are logged in");
} else {
    NSLog(@"You are not logged in");
}

答案 2 :(得分:0)

我不确定您的服务器实施。通常,登录后,客户端(移动应用程序)将收到令牌。此令牌应包含在之后发出的请求中,以向服务器显示该用户已登录。

当从服务器返回登录api时,http标头是一个开始检查是否设置了某个标记的好地方。如果是,您可能需要保存该令牌:

[[NSUserDefaults standardDefaults] setValue:token forKey:@"loginToken"];
[[NSUserDefaults standardDefaults] synchronize];

然后,如果应用程序被杀死,则在启动时:

NSString *token = [[NSUserDefaults standardDefaults] valueForKey:@"loginToken"];
//set the token to http header