Как выполнить логику в приложении Kony в зависимости от того, работает ли оно на iOS, Android или в веб-браузере - PullRequest
1 голос
/ 24 апреля 2019

Я создаю многоканальное приложение, используя Kony , и хотя это всего лишь одна кодовая база Javascript, я бы хотел условно выполнить некоторую логику в зависимости от того, работает ли приложение на iOS, Android или веб-браузер. Что-то вроде:

if(isAndroid()) {
    //Do some stuff specific to Android.
}
else if(isIos()) {
    //Do some stuff specific to iOS.
}
else if(isWeb()) {
    //Do some stuff specific to Web.
}

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Другое решение заключается в использовании функции kony.os.deviceInfo из пространства имен kony.os.

var deviceInfo = kony.os.deviceInfo();
var os = deviceInfo.name /*android and web*/ || deviceInfo.osname /*iOS*/;
if(os === "i-phone" || os === "i-pad"){
    //Do some stuff specific to iOS
}
else if(os === "android"){
    //Do some stuff specific to Android
}
else if(os === "thinclient"){
    //Do some stuff specific to web.
}

Возможно, это чище, но в результате все логика приложения включается в каждую сборку независимо от того, для какой платформы она предназначена. Так что это будет лучше, если количество логики, которую вы хотите использовать условно, невелико - возможно, потому, что вы не хотите загрязнять свою кодовую базу Android с помощью набора логики, которая будет выполняться только на iOS или наоборот.

1 голос
/ 24 апреля 2019

Kony поддерживает Директивы препроцессора , такие как #ifdef во многом как препроцессоры C .Поскольку проекты Kony написаны на Javascript, эти операторы должны быть добавлены в виде специальных комментариев, чтобы не нарушать синтаксис Javascript.Так, например, #ifdef становится //#ifdef.

Эти директивы могут использоваться для написания кода, который встроен в приложение или не зависит от операционной системы хоста.Итак, я решил это, написав следующее:

var channel;
//#ifdef PLATFORM_NATIVE_IOS
channel = "ios"
//#endif
//#ifdef PLATFORM_NATIVE_ANDROID
channel = "android"
//#endif

И затем записав остальную часть моей логики, основываясь на значении моей переменной channel.

Полный список определенных макросов, которые вы можете использовать в этих операторах //#ifdef, приведен в первых нескольких строках модуля kony_sdk.js, созданного по умолчанию в каждом проекте Kony Visualizer.

enter image description here

...