[英]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.