Я строю приложение чата, когда в приложении Line нажмите на кнопку «Пуск», он передаст пользователя на веб -сайт чата, посвященный им. В настоящее время при обработке на Android все все еще отображается нормально, но когда я строю на iOS, ничего не отображается. HTML этого экрана.
My Server: < /p>
Код: Выделить всё
public String init(
@RequestParam(value = "liffChannelId") String liffChannelId,
@RequestParam(value = "messageChannelId") String messageChannelId,
@RequestParam(value = "isInit", required = false) String isInit,
@RequestParam(value = "idToken", required = false) String idToken,
HttpServletRequest request, Model model) {
if (Objects.isNull(isInit)) {
return "s2013_chat";
}
ChatForm form = chatHelper.init(liffChannelId, messageChannelId, idToken, page, request);
return "s2013_chat";
}
< /code>
и в моем JS: < /p>
$(document).ready(function () {
const urlParams = new URLSearchParams(window.location.search);
const isInit = urlParams.get("isInit");
if (!isInit) {
initLiffApp();
}
});
function initLiffApp() {
const messageChannelId = new URLSearchParams(window.location.search).get("messageChannelId");
if (!messageChannelId) {
alert("MessageChannelId is missing");
return;
}
const liffChannelId = new URLSearchParams(window.location.search).get("liffChannelId");
if (!liffChannelId) {
alert("LiffChannelId is missing");
return;
}
const liffId = new URLSearchParams(window.location.search).get("liffId");
if (!liffId) {
alert("LiffId is missing");
return;
}
liff
.init({
liffId: liffId
})
.then(() => {
const idToken = liff.getIDToken();
if (!idToken) {
alert("Failed to get ID Token");
return;
}
sendToServer(liffChannelId, messageChannelId, idToken);
})
.catch(err => {
console.error("LIFF init error", err);
});
}
function sendToServer(liffChannelId, messageChannelId, idToken) {
const redirectUrl = `/counseling/chat/client?liffChannelId=${encodeURIComponent(liffChannelId)}&messageChannelId=${encodeURIComponent(messageChannelId)}&isInit=1&idToken=${encodeURIComponent(idToken)}`;
window.location.href = redirectUrl;
}
< /code>
При возвращении в первый раз, в JS позвоните на сервер Liff, чтобы получить Idtoken, и в настоящее время вызовет на сервер еще 1 время с Isinit. В это время бэкэнд начнет обработку. Однако, создавая iOS, я заметил, что, когда init в первый раз он возвращает пользовательский интерфейс экрана, не отображая ничего (я думаю, что это связано с обработкой, когда ISinit является нулевым, он возвращается, не вызывая Liff). < /P>
Я пытался комментировать ISINIT переменный чек, и теперь UI отображается, но не получает никаких CSS и JS.//if (Objects.isNull(isInit)) {
// return "s2013_chat";
//}
Подробнее здесь: https://stackoverflow.com/questions/797 ... g-liff-sdk