Сценарий:Что такое эквивалент приложения iOSWillTerminate в приложении IBM MobileFirst Hybrid?
Я хочу, чтобы вызвать функцию выхода из системы, если приложение завершается. Я могу сделать это с помощью собственного кода:
- (void)applicationWillTerminate:(UIApplication *)app
{
// Run Logout function
}
Проблема:
Как сделать это в IBM mobilefirst гибридных приложений?
// ******************************************** ****
Edited
Прежде всего, пользователь Войти в приложение, если ключ пользователя в правильный идентификатор пользователя и пароль, он добавит UserIdentity в «loginRealm».
WL.Server.setActiveUser("loginRealm", userIdentity);
Далее пользователь закрывает приложения без выхода из системы. Таким образом, когда пользователь Войти в другой раз, сервер MFP не возвращает никакого воздействия, так как это ударит это исключение:
не может изменить самобытности уже зарегистрированного пользователя в области 'loginRealm. Приложение должно выйти из системы в первую очередь.
Следовательно, я должен выйти из системы с сервера MFP, установив «loginRealm» в null в адаптере;
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») немедленно возвращает true после WL.Client.updateUserInfo(); ? Можем ли мы удалить строку приложения reload для кода в функции выхода из системы?
Благодаря @ Идан Адар, выход из системы при входе в систему путем продления продолжительности экрана заставки выглядит как решение. Тем не менее, не было бы совершенно неудобно для пользователя ждать в заставке (либо пользователь является логином, либо нет? Как продлить экран заставки только в случае, когда WL.Client.isUserAuthenticated ("loginRealm") Верно? Я обновил свой вопрос, извините за то, что не объяснил мой сценарий, подробно описанный ранее. – user1872384
См. здесь: https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-7-1/foundation/ advanced-client-side-development/common-ui-controls/# splashscreen –
Внутри ссылки он вызывает customLogicCallback(), в функции wlCommonInit() для продления продолжительности заставки. Можете ли вы дать мне пример кода customLogicCallback для проверка WL.Client.isUserAuthenticated («loginRealm») является истиной и ложью? Это та часть, в которой я застрял. Спасибо. – user1872384