2010年6月24日 星期四

鐵道時刻表暫時下架的原因

http://richielin-programer.blogspot.com/2010/06/blog-post_24.html

如果你查詢不到資料,請先將 iPhone 上的軟體移除後再重新安裝一次即可
PS. 如果你還有其它問題或建議,請直接 mail 給我
天秤可以直接回覆給你


簡單的說,就是因為 V3.6 版出現了小 bug
使用者更新後,還是顯示 2008/01/01 的日期
雖然如此,已經更新 V3.6 的使用者也不用擔心
因為雖然顯示的日期錯誤
但其實資料庫是有正確更新的
也就是說你查詢到的時刻表會是正確的

只是為了避免使用者的困擾,先行下架
等修正錯誤的新版審核過後再上架了

2010年6月20日 星期日

關於鐵道時刻表的改版

http://richielin-programer.blogspot.com/2010/06/blog-post.html

最近很多朋友寫信問天秤,希望天秤改版 鐵道時刻表
大致上的需求都是界面的美化及快速訂票系統的改進
沒錯,AppStore 上至今已經累積了數款 高鐵 的時刻表查詢訂票軟體
我想大部份的人都是以別款軟體的功能來希望天秤加入
既然如此,那天秤就說明一下好了
雖然看似和 鐵道時刻表 裡面的高鐵時刻表 查詢軟體類似
但其實設計理念還是有點差異

市面上的高鐵時刻表,都是以查詢單一列車為主
也就是說是查詢某個時間點附近,某車站到某車站的列車而已
至於再深入下去的查詢就沒有辦法了
但 鐵道時刻表 的系統概念比較不同
不管是 台鐵時刻表 或是 高鐵時刻表
都是以三個元素組成,查詢列表、車號、車站,而且是三個元素可以互相連結 
簡單來說
就是你可以查詢某個時間區域內,某車站到某車站的列車 
然後再由查詢到的列車車號,查詢該列車的所有停靠站 
或再進一步由停靠站來查詢所有會停靠該車站的列車

這樣的組合有什麼好處
假設你在台北上車,朋友在新竹上車,你們想搭乘同一列車到台中
你可以簡單查詢到你想搭乘的列車,然後查詢該列車有沒有停靠新竹 (或是幾點停靠新竹)
才能和朋友決定要搭乘哪一班車
甚至決定搭乘某班列車後,不用重新查詢就可以直接檢視台中站開回新竹、台北的列車
決定回程的時間及停留台中的時間
所有動作一次搞定,這是 AppStore 上其它單純只做查詢的軟體做不到的功能

再來是價格的問題
從 2009 年 1 月至現在,鐵道時刻 表的前身 火車時刻表 開始
軟體的售價就是 1.99 美金
甚至在 2010 年 1 月還加入了 高鐵時刻表 而改名為 鐵道時刻表
售價還是保持在 1.99 美金
這款軟體在 AppStore 上架至今已經一年半了,還是保持在排行榜上
天秤沒有因為它是台灣最早期的 iPhone 本土軟體而開高售價
也不會因為它的人氣而想要提高售價來大賺一筆
但是最近 AppStore 上一堆台灣寫軟體,寫了個軟體上架受到注目
就開始持續拉高價格,或是直接開高價來賺一筆
什麼心經軟體的就是一例,實在是有損會身為寫軟體的人的格調
至於時刻表的價格應該賣多少
別人天秤管不著
但是 鐵道時刻表就是台鐵、高鐵時刻表查詢二合一堅持 1.99 美金不會調漲 (調降就看心情啦~)
對於高於或等於 鐵道時刻表 的售價,功能卻只有 高鐵查詢訂票 的功能的軟體
相較之下 鐵道時刻表 更是划算

再來就是界面和快速訂票的問題
天秤只是一人工作室,白天還有正職的工作
寫軟體真的只是晚上、假日的興趣
不像其它工作室都是幾個人合作組成的專職工作室
開發速度上就是比不上別的工作室了,但是也有個好處 
天秤的軟體不需要開高價位來養活整個的工作室 (養活好幾個家庭)
接的案子也是如此,開的價格也可以比別人實在
(廣告一下,有人需要 iPhone 軟體開發的可以找天秤,價格可議,品質絕對滿意)
但是雖然如此,天秤的軟體品質不會讓人失望 
界面方面天秤已經在著手改進中,或許更新幾版後就會讓人耳目一新了
快速訂票的部份當然程式的部份也是沒有問題 
時間上會儘快找空閒的時間動手

至於其它的建議,或是有想法但懶得寄信給天秤的
都可以利用提供一下你們的意見 
讓 鐵道時刻表 這個軟體變的更好用~

2010年6月15日 星期二

如何撰寫 iPhone 及 iPad 共用的 Universal 版本的 App

http://richielin-programer.blogspot.com/2010/06/iphone-ipad-universal-app.html

首先先了解一件事
iPhone 和 iPad 目前的版本分別為 3.1.3 及 3.2 (天秤寫這篇文章的當下)
而兩者的解析度分為 768*1024 和 320*480
因為解析度的大小的差異
讓一款 App 要在不同平台運行,似乎是重新撰寫符合的解析度比較好
或是直接讓同一款 App 可以同時支援兩個不同平台也是不錯的選擇
雖然 App 可以編譯成 Universal 的版本
不過不代表程式碼就可以寫一次同時通吃兩邊
大部份的情況下,還是得依 iPhone 或是 iPad 的解析度來做修改
甚至是重新撰寫程式碼

1. 修改成支援 Universal 版本

在選單的 Project >Edit Project Settings 設定為 iPhone/iPad
iPhone OS 版本 Base SDK 可以設為 3.0 或 3.1

螢幕快照 2010-06-15 下午4.55.00.png

2. 判斷不同的平台,載入不同的 xib

因為 iPhone 和 iPad 的解析度不同
所以如果用 Interface Builder 建立的 xib 也必須依不同平台來製作
例如

MainViewController.xib (for iPhone)
MainViewControllerHD.xib (for iPad)

然後程式判斷目前運行的平台,載入不同的 xib
UI_USER_INTERFACE_IDIOM() 這個巨集,可以用來判斷目前是哪個平台
但是有個問題,這個巨集是 v3.2 以上台有定義
所以我們可以另外再做個函式來讓 V3.0 以上的版本都可以正確判斷

-(bool) isIpad

{

BOOL iPad = NO;

#ifdef UI_USER_INTERFACE_IDIOM

iPad = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);

#endif

return iPad;

}

 最後在載入 xib 的程式碼中,加入判斷式

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

// Override point for customization after app launch

if ([selfisIpad] == TRUE)

[windowaddSubview:mainViewControllerHD.view];

else

[windowaddSubview:mainViewController.view];

[windowmakeKeyAndVisible];

returnYES;

}

 

iPhone 執行結果

螢幕快照 2010-06-15 下午5.08.18.png

iPad 執行結果

螢幕快照 2010-06-15 下午5.08.34.png