2013-03-03 44 views
0

有沒有人知道直接更新會更新公共目錄結構中的所有內容。我爲多個應用程序使用了相同的代碼庫,唯一的變化是js文件中的某些設置,告訴應用程序如何操作。有沒有一個目錄,我可以把這個js文件,從直接更新功能是安全的?Worklight直接更新

我無法在IBM網站上找到任何特定信息。

+0

通常情況下,您應該將環境特定的js代碼放在apps/app_name/environment_name/js/app_name.js文件中。您可以使用wlEnvInit()函數來執行特定的設置。但是,爲什麼你擔心js文件中的代碼?應用程序更新時只會更改已更改的文件。你有什麼理由害怕代碼改變? – 2013-03-03 04:19:49

+0

即時通訊的問題是我有一個應用程序可以連接到後端的多個商店之一。所以我所做的只是改變config.js,它會決定這個應用代表哪個商店。所以工作原理看起來像1應用程序,但取決於配置我打包它,它在技術上是一個不同的商店應用程序。我擔心的是,因爲worklight將其視爲1個應用程序,它將更新包括config.js在內的所有內容,並且技術上會更改該應用程序。 – tik27 2013-03-04 15:48:30

回答

2

據我所知,直接更新將更新您使用的所有皮膚網頁資源(html,css,js)。但是,我不是專家。

如果您僅支持Android和iOS應用程序並需要存儲設置的方式,我推薦使用JSONStore。否則看看Cordova Storage,Local StorageIndexedDB

使用名爲settings的JSONStore集合將允許您將數據存儲在應用程序目錄中的磁盤上。它會一直存在,直到您調用destroy之類的刪除方法或直到應用程序被卸載。還有一些方法可將集合鏈接到Worklight適配器,以便將數據從服務器上拉出/推送到服務器。以下鏈接將提供更多詳情。

唯一的變化是一個js

內某些設置的設置創建一個集合:

var options = {}; 
options.onSuccess = function() { 
    //... what to do after init finished 
}; 
options.onFailure = function() { 
    //... what to do if init fails 
} 
var settings = WL.JSONStore.initCollection('settings', 
    {background: 'string', itemsPerPage: 'number'}, options); 

您可以添加新的設置initCollection的onSuccess調用後:

settings.add({background: 'red', itemsPerPage: 20}, options); 

您可以在initCollectio後找到存儲的設置ň的onSuccess被稱爲:

settings.findAll({onSuccess: function (results) { 
    console.log(JSON.stringify(results)); 
}}); 

您可以在Getting Started Modules閱讀更多關於JSONStore。參見模塊:7.9,7.10,7.11,7.12。在IBM InfoCenter的API文檔中還有更多信息。上述方法是:initCollection,addfindAll

+0

所以我可以加載我在我的js文件中的配置。那麼當應用程序更新時不用擔心。因爲如果你看上面,我有1個應用程序代表5個商店,所以取決於config.js我與應用程序打包連接到不同的商店,並顯示不同的標誌 – tik27 2013-03-04 15:53:19

0

自5.0.3版本以來,我認爲直接更新不會更新所有webresources,只會更新您使用的皮膚。

說你有皮膚清晰度和皮膚skin2 您對高清

  1. 作任何改動變形點焊服務器 - >你會得到一個直接更新 高清僅
  2. 作任何改動skin2上服務器 - >沒有直接更新你。

你是skin2:

  1. 作任何改動skin2在服務器 - >爲skin2僅
    • 作任何改動變形點焊的JavaScript也駐留在skin2直接更新(併爲此結束結果是def + skin2 concatination),只更新皮膚2
    • 更改爲def,僅適用於圖片(也檢查來自應用程序描述符的圖片擴展名:「) - >沒有直接更新

這就是直接更新如何工作。

還請分享一些關於問題的更多細節,我看你使用js文件,你在哪裏改變它?你什麼意思是激動人心,給出一個更好的(簡化的)現實生活中的例子,因爲你不清楚你在嘗試什麼。

+0

我有1個代碼庫,config.js文件指定了什麼後端(存儲)和使用什麼標誌。因此,公司A擁有商店1,2和3.應用程序代碼除了config.js之外都是相同的,它告訴應用程序應該代表什麼Store(1,2或3)。所以配置Js擁有像Options.StoreId,Options.StoreName,Options.StoreLogo等信息。另外一部分原因是客戶擁有消費者版本並且正在玩1個應用程序。所以我想保留Config.js的直接更新路徑。 – tik27 2013-03-05 14:52:07

3

我認爲你們應該小心使用哪些術語,以免混淆可能尋求類似幫助的人。

環境特定於您正在使用的操作系統。 iOS,黑莓,Android等環境。

皮膚基於環境,並非通用於所有平臺。當你創建一個皮膚時,你必須選擇你正在運行的環境。

所以要更正一些,直接更新將更新全部在目標環境中的皮膚資源。

例如:你有Android和iOS版本

當您創建的皮膚,你正在創建本質上是響應式設計爲您的參數的應用程序。例如,如果您的Android OS爲2.3和4.2,則可以爲兩者設置外觀。但是,這些使用單一的網絡資源庫。該APK對於這兩個版本的應用(默認情況下)都是相同的,並且有兩個可用的皮膚。在運行時利用IBM Worklight的'運行時皮膚'(因此名稱)它通過參數檢查的操作系統和加載該皮膚覆蓋Web代碼。

你可以在技術上覆蓋所有的網頁代碼,使兩個皮膚完全不同,但這會很笨重和低效。

當您直接更新時,您正在更新該特定環境的所有資源(包括兩個皮膚),而不是通用文件夾/環境。

所以更新的Android(兩個皮膚)將更新Web資源(如果您部署了Android wlapp)並且iOS版本將保持不變。

如果您在構建之後查看Android項目(本地 - >資產 - > www - >默認或外觀),則可以找到通用環境生成的共享Web資源。但是,只有在每次進行新構建時纔會出現這種情況。

Browser Test 在圖片中,我有一個左側皮膚的舊版Android。右邊是在部署common.wlapp後,對較新的常用資源的預覽。所以你可以看到他們是分開的。

對不起,如果它是囉嗦,但我想我會徹底。

要回答原始問題,您是否想過通過用戶輸入或設置加載存儲的所有參數?如果您嘗試連接到3個不同的商店,請爲訪問不同後端或特定適配器的設置控制創建一些表單。您也可以創建3個不同的config.js,根據您設置的參數進行加載,以便設置。另一種選擇是設置商店專用的不同版本的應用程序。

例子。版本1.11,1.12,1.13可以是同一應用的3個版本,用於商店1,2,& 3.他們可以被修改和更改並擁有3組網絡資源。當你需要更新時,跳到版本1.21,1.22,1.23。這似乎是一個解決方法,但它可能是您獲得同一應用程序的3個版本屬於單個應用程序類別的最佳選擇。 (保留3個config.js類型以修改3個商店)。

+0

感謝您的理解。客戶不希望客戶知道商店關係是什麼,所以他們想要品牌的應用程序。但版本技巧看起來很不錯。最後,看起來我們可能會首次將配置加載到json商店,或者說服客戶根據成本獲取更多許可證。 – tik27 2013-03-08 15:32:30