gpt4 book ai didi

ios - IBM MobileFirst 混合应用程序中的 iOS applicationWillTerminate 等效项是什么?

转载 作者:行者123 更新时间:2023-11-29 01:26:28 24 4
gpt4 key购买 nike

场景:

如果应用程序终止,我想调用注销函数。我可以使用 native 代码来做到这一点:

- (void)applicationWillTerminate:(UIApplication *)app
{
// Run Logout function
}

问题:

如何在 IBM mobilefirst 混合应用程序中执行此操作?

//************************************************* ***

已编辑

首先,用户登录到应用程序,如果用户输入正确的用户名和密码,它会将用户身份添加到“loginRealm”。

WL.Server.setActiveUser("loginRealm", userIdentity);

接下来,用户关闭应用程序而不注销。因此,当用户再次登录时,MFP 服务器将不会返回任何反馈,因为它会遇到此异常:

Cannot change identity of an already logged in user in realm 'loginRealm'. The application must logout first.

因此,我必须通过在适配器中将“loginRealm”设置为空来从 MFP 服务器注销用户;

WL.Server.setActiveUser("loginRealm", null);

上面这行代码位于authentication-config.xml中定义的注销函数中。

客户端设备运行这行代码,将会触发注销功能。此外,它会在成功时重新加载应用程序:

WL.Client.logout('loginRealm', {
onSuccess: WL.Client.reloadApp
});

我尝试过的步骤:

1) 在 WlcommonInit() 我添加了 WL.Client.updateUserInfo();如果 WL.Client.isUserAuthenticated("loginRealm") 返回 true,我将从服务器注销用户。但是,WL.Client.isUserAuthenticated("loginRealm") 将始终返回 false。这是因为,在 WL.Client.updateUserInfo(); 之后,标志需要花费一些时间(30 秒到 2 分钟)才能变为真。所以我的登录仍然失败并遇到同样的错误。

2) 我试图在用户单击登录按钮期间注销用户。但是由于reloadApp,应用程序会刷新并再次返回登录页面。我从 IBM mobilefirst 网站获得的注销代码。因此用户需要点击并输入 2 次才能登录到主菜单。

WL.Client.logout('loginRealm', {
onSuccess: WL.Client.reloadApp
});

我做错了吗?或者是否有任何其他方法可以让 WL.Client.isUserAuthenticated("loginRealm") 在 WL.Client.updateUserInfo() 之后立即返回 true; ?我们可以删除注销功能中的 reload app 这行代码吗?

最佳答案

我认为这是不可行的,因为注销功能(在 MFP 中)将需要服务器连接(请求和响应),如果应用程序当时被终止,我认为这将导致不可预测的结果。

请注意,尽管似乎不建议使用该功能? applicationWillTerminate when is it called and when not

为了模拟它,您可能应该做的是登录时注销,这样在打开应用程序时就会出现该应用程序已注销的情况。您可以延长启动屏幕的持续时间,以便最终用户不会看到她/他已登录(如果 session 在应用程序关闭和重新打开之间仍然存在),直到真正注销并然后您可以再次显示登录屏幕或任何其他需要的屏幕。

关于ios - IBM MobileFirst 混合应用程序中的 iOS applicationWillTerminate 等效项是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33950050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com