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

What is the equivalent of iOS applicationWillTerminate in IBM MobileFirst Hybrid app?

场景:

我想在应用程序终止时调用注销功能。我可以使用本机代码来完成:

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

问题:

如何在 IBM mobilefirst 混合应用程序中实现?

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

已编辑

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

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

接下来,用户在没有注销的情况下关闭应用程序。因此,当用户再次登录时,MFP 服务器将不会return 任何反馈,因为它会触发此异常:

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.

中定义的logout函数中

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

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

我尝试过的步骤:

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

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

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

我做错了吗?或者有没有其他方法可以在 WL.Client.updateUserInfo(); 之后立即获得 WL.Client.isUserAuthenticated("loginRealm") return true; ?我们可以去掉注销功能中reload app这行代码吗?

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

请注意,似乎无论如何都不建议使用该功能? applicationWillTerminate when is it called and when not

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