[Titanium]安裝的錯誤

一個好不容易在納期當天趕出來的案子,因為客戶本身沒有安裝好相同的titanium開發環境而又再拖了好幾天。後來才知道,現在的alloy似乎還無法支援node.js的1.0以上的版本,所以才會在新安裝的電腦上一直無法把我完成的程式重新在客戶的開發環境中重新包裝出來!
查詢node.js版本使用:

node -v

如果不是是用的版本,可以用

sudo npm rm npm -g

來解除安裝,然後到node.js版本列表中下載安裝。
閱讀全文

[Titanium]在android上實現多國語言對應

titanium_android_i18n之前曾經碰過在ANDROID的時候,由於命名問題造成的錯誤。但當真正要實踐在android中的多國語言對應時才發現,並不是單單只有改檔名的問題,不只存放多國語言的XML的資料夾的位置不同,還需要透過修改AndroidManifest.xml的配合才能夠達到多國語言的目的。
在這部份,其實在appcelerator的wiki中已經有蠻清楚的說明。只是這次使用的是alloy,所以稍微記錄一下目前的目錄結構(如左)。順便也記錄一下這次在製作AndroidManifest.xml時碰到的一點點小問題。

閱讀全文

[TITANIUM] 在android中的webview取得cookie

雖然titanium一向號稱可以使用同樣的程式碼同時製作出android跟ios的app,但實際上事情總不是這麼的歡樂….
像是一個簡單的是用twitter帳號來進行登入的動作,由於api的工程師是使用cookie跟CSRF token配對好的金鑰來跟api端進行認證,ios因為webview跟HTTPClient會自動共用cookie,所以只要在webview登入twitter後,就可以以新建立的HTTPClient來跟api索取token然後進行跟api端的互動。
只是到了android的時候,webview與HTTPClient不再自動共用cookie,所以我們得要在HTTPClient把object傳送到api之前利用setRequestHeader帶入Cookie,才有辦法取得正確的token。
所以問題就在於怎麼在登入成功的webview中,取出當時的cookie。接著google會告訴我們在這邊有這麼一個方法:

webView.addEventListener('load',function(e) {
  var cookies = webView.evalJS("document.cookie").split(";"); 
  Ti.API.info( "# of cookies -> " + cookies.length  );
  for (i = 0; i <= cookies.length - 1; i++) {
    Ti.API.info( "cookie -> " + cookies[i] );
  }
});

可惜我所得到的卻始終是空值(NULL)。
閱讀全文