簡體   English   中英

如何在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代碼庫,但我想根據該應用程序是在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM