如何根据 Kony 应用程序在 iOS、Android 或网络浏览器上运行来执行逻辑
How to execute logic in a Kony app depending on whether it runs on iOS, Android or a web browser
我正在使用 Kony 创建一个全渠道应用程序,虽然它都是一个单一的 Javascript 代码库,但我想根据应用程序是否 [=] 有条件地执行一些逻辑19=] 在 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.
}
柯尼支持Preprocessor Directives such as #ifdef
much like the C compiler's preprocessors。由于Kony项目是用Javascript编写的,为了不破坏Javascript语法,这些语句必须以特殊注释的形式添加。因此,例如 #ifdef
变为 //#ifdef
.
这些指令可用于编写是否内置于应用程序中的代码,具体取决于主机 OS。所以我通过写这个解决了这个问题:
var channel;
//#ifdef PLATFORM_NATIVE_IOS
channel = "ios"
//#endif
//#ifdef PLATFORM_NATIVE_ANDROID
channel = "android"
//#endif
然后根据 channel
变量的值编写我的其余逻辑。
要获得可在这些 //#ifdef
语句中使用的已定义宏的完整列表,您可以查看每个 Kony Visualizer 项目默认创建的 kony_sdk.js
模块的前几行。
另一个解决方案是依赖 kony.os
命名空间中的 kony.os.deviceInfo
函数。
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 代码库21=] 反之亦然。
我正在使用 Kony 创建一个全渠道应用程序,虽然它都是一个单一的 Javascript 代码库,但我想根据应用程序是否 [=] 有条件地执行一些逻辑19=] 在 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.
}
柯尼支持Preprocessor Directives such as #ifdef
much like the C compiler's preprocessors。由于Kony项目是用Javascript编写的,为了不破坏Javascript语法,这些语句必须以特殊注释的形式添加。因此,例如 #ifdef
变为 //#ifdef
.
这些指令可用于编写是否内置于应用程序中的代码,具体取决于主机 OS。所以我通过写这个解决了这个问题:
var channel;
//#ifdef PLATFORM_NATIVE_IOS
channel = "ios"
//#endif
//#ifdef PLATFORM_NATIVE_ANDROID
channel = "android"
//#endif
然后根据 channel
变量的值编写我的其余逻辑。
要获得可在这些 //#ifdef
语句中使用的已定义宏的完整列表,您可以查看每个 Kony Visualizer 项目默认创建的 kony_sdk.js
模块的前几行。
另一个解决方案是依赖 kony.os
命名空间中的 kony.os.deviceInfo
函数。
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 代码库21=] 反之亦然。