Worklight Runtime Skins - getSkinName не работает должным образом

Я создаю образец для Worklight Runtime Skins для устройства Android по ссылке " http://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v610/05_03_Supporting_multiple_form_factors_using_Worklight_skins.pdf". Я изменил JS,CSS и HTML для нанесения скина на телефон / планшет, и то же самое проверено на работоспособность в Worklight Preview.

Но когда я пытаюсь запустить тот же код в реальном устройстве, я не получаю должный вывод, как ожидалось. Причиной этого является функциональность getSkinName() в skinLoader.js, которая не возвращает действительный результат. Я попытался использовать следующий код для определения, является ли устройство мобильным или планшетным, но обе функции дали неверные результаты.

Обнаружение устройства с помощью UserAgent: // Всегда возвращает скин "android.phone".

function getSkinName() { 
        var userAgent = navigator.userAgent; 
        var skinName = "default"; 
        alert(userAgent); 
        //android tablet 
        if(userAgent.toLowerCase().indexOf("android") != -1 && 
            userAgent.toLowerCase().indexOf("mobile") == -1){ 
            skinName = "default"; 
            alert("tablet!"); 
        } 
        //android phone 
        else if(userAgent.toLowerCase().indexOf("android") != -1 && 
            userAgent.toLowerCase().indexOf("mobile") != -1){ 
            skinName = "android.phone"; 
            alert("phone!"); 
        } 

        return skinName; 
} 

Определить устройство, используя ширину устройства: // Не работает должным образом через ориентацию

 function getSkinName() { 
        var skinName = "default"; 
        var hres = screen.width || window.innerWidth || 320; 
        var ratio = window.devicePixelRatio || 1; 
        if (ratio == 0) { 
               ratio = 1; 
        } 
        var virtWidth = hres / ratio; 
        if (virtWidth >= 640) { 
              skinName = "android.tablet"; 
        } 
    return skinName; 
 } 

Пожалуйста, поделитесь мыслями по поводу исправления getSkinName() для правильного функционирования.

1 ответ

То, что вы испытываете, может быть связано с дефектом, упомянутым в этом вопросе: IBM Worklight - "getSkinName не определено"

Исправление для упомянутого дефекта доступно в последней версии iFix для Worklight 6.1.0.1.
Если вы являетесь клиентом или деловым партнером IBM, вы можете получить его в IBM Fix Central (или по запросу поддержки PMR).

Другие вопросы по тегам