[英]Cordova/jQuery - Identifying whether your app is being run on Web/Mobile browser or mobile app (Android/iOS)
[英]How to execute logic in a Kony app depending on whether it runs on iOS, Android or a web browser
我正在使用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.
}
Kony与C编译器的预处理器一样,支持#ifdef
等预处理器指令 。 由于Kony项目是用Javascript编写的,因此必须以特殊注释的形式添加这些语句,以免破坏Javascript语法。 因此,例如#ifdef
变为//#ifdef
。
这些指令可用于编写由应用程序内置或不由应用程序内置的代码,具体取决于主机操作系统。 所以我通过写这个解决了这个问题:
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.
}
这也许更干净,但是结果是所有应用程序逻辑都捆绑到每个内部版本中,而不管它用于哪个平台。 因此,这只有在您希望有条件地运行的逻辑量很小的情况下才更好—可以说是因为您不想用一堆只能在iOS上执行的逻辑来污染Android代码库,反之亦然。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.