轉發的一篇文章 – 香港 App 開發的出路?

我們也經常回顧公司的出路。踫巧年頭找內地網時看到的一篇文章轉,抓了下來就忘了記下出處。對不起。香港走的方向不是外包企業 App,而是走創作之路。就正如我們開發 《囍帖》及《動相冊 Motalbum》一樣,制作屬於自己的東西。

=====

2000年互聯網泡沫過後,香港互聯網產業發展令人堪憂。現如今移動互聯網飛速發展,然而提及香港,多數時候人們會想到兩句話:“IT行業已死,App基本外包”。

實際上,“外包”只是香港移動應用開發產業鏈的一端,其代表是高度商業化的香港催生出的專門提供App定制服務的大公司;而另一端,則是在市場、創意與技術的夾縫中苦苦掙扎的中小型開發團隊及個人開發者。而這正是當下香港移動應用開發所面臨的嚴峻考驗。

“四大App外包公司,App只是新媒體營銷的載體”

MTEL、Green Tomato、Cherrypicks、Nuthon,這四家是被稱為“Top 4”的香港移動應用“外包”開發公司。他們為大企業提供移動應用定制開發服務,客戶要什麼,他們做什麼。其所製作的應用大多屬於內容提供(如公司製度、業界資訊、信息定制等)、生活工具及少數小遊戲應用。

以“Top 4”為代表的大型App開發公司有強大的數據庫與技術引擎,開發應用並非難事。對他們而言,移動應用就是他們的商品,只管按需開發,不管上線運營,訂單完成,交貨,再接下一個項目。在這裡,流水線生產的移動應用只是大企業出於宣傳目的新媒體營銷載體,因此顯得千篇一律,缺乏創意。

並且,大企業在接過製作完成的App後,大多對運營、維護顯得不那麼重視,用戶體驗後勁不足,降低了App的生命週期。

長此以往,並不利於香港移動應用市場的良性發展。首先,龍頭開發公司坐擁高新技術與設計團隊,高質量高速度產出的移動應用壟斷本港市場的半壁江山,把中小心開發團隊與個人開發者逼至角落,原本就不平衡的移動應用市場變得更為失衡;

其次,沒有創新作為原動力,批量生成只會是“Made in Hong Kong”而不是“Created in Hong Kong”,香港App開發或徹底淪為外包市場,想再談創造已無力回天;最後,前有歐美,後有中日韓,充斥著大量海外優質應用的香港市場已然硝煙瀰漫,本港App再不殺出重圍,只怕徹底失去翻身機會。

“中小團隊與個人開發者,有勇無謀,舉步維艱”

香港的中小型開發團隊與個人開發者又分為兩類,一類是剛離開學校的程序員,一類是有一定經驗的創業者。

對於前者來說,他們很有自信與夢想,開發應用出於個人興趣,看重把創意轉化為現實;對於後者而言,他們想在移動互聯網市場分一杯羹,因此看重App市場反饋,他們會製作很多應用投入市場,如果其中有一個市場表現不錯,他們會專攻其一,如果市場表現都不如意,他們會繼續製作更多的App繼續投入市場,直至那個Mr.Right出現為止。

上述情況造成的後果是,投入市場的移動應用質量參差不齊,一定程度上,這使得用戶對港產App的信心產生動搖。創意再好,點子再新,沒有考慮用戶體驗而開發出來的應用,帶著界面不美觀、互動性欠缺,甚至使用不流暢的種種殘缺,又如何能在一波又一波襲來的移動應用浪潮中不被拍死在沙灘上呢?

另外,這些中小型團隊把App投入市場後實行放養,忽視推廣、管理與運營,也加劇了其市場生存空間的惡化。在龍頭公司的與海外應用的圍剿下,中小團隊雖然怀揣夢想不斷掙扎,然而能獲得投資或者盈利的終是滄海一粟。

“外包製作Vs.自主創新,如何良性發展”

Zuckerberg 認為用 html5 開發 facebook app 是錯誤的

http://chinese.engadget.com/2012/09/12/zuckerberg-html-5-facebook-mobile-app-mistake/

從至愛的科技網站看到一篇報導,表示 Facebook 靈魂人物朱克伯格(Zuckerberg)認為用 html5 開發 facebook 流動應用程式是一個錯誤。並且開始用原生碼來開發 Android 應用程式,而 iOS 原生碼的流動程式經已在早前推出。

在流動開發過程中,使用 HTML5 有一個很大的誘因 – 跨平台。無論使用 iOS 或 Android 甚至是 Windows Phone 和 Symbian。只需要一套編碼,基本上滿足你所有要求。如 Canvas API 可以助你用 Javascript 編碼完成 2D/3D 的實時繪圖,localStorage 可以快速暫存資料,亦可以用接口讓 Native / HTML5 編碼溝通,免卻在 Android 用 SharedPreference,卻在 iOS 用 NSUserDefault 的「用一套,記一套」的苦惱。但其實用 HTML5 開發應用亦有很多令人頭大的問題。

1. HTML5 支援問題 – 正當你落實跨平台開發專案,利用便利的 HTML5 編碼來作出開發。但當你發現在 iOS 的 UIWebView 運行表現出眾;用 Ice cream sandwich 的 WebView 開發亦無大問題。但你的客戶希望將軟體支援至 Android 2.3. 你就發現問題就來了,你會發現有一些重要的 HTML5 不可以使用 – 如 toDataURL(),或者 HTML5 的視頻播放。而因為 HTML5 是 WebView 內的功能,你又不一定可以混合源生編碼解決問題. 例如,我如何將 Canvas 的圖示,在沒有 toDataURL() 支援用原生碼來輸出圖片 base64 的編碼?

2. 報行速度 – 不同的流動平台的 WebView 運行速度不同,如 iOS 的 Canvas Drawing 很流暢,但 Android 的表現就有點差強人意。這樣會大大影響用戶體驗。

3. WebView 的不明內部錯誤。iOS 或 Android 的 WebView 不是萬能聖藥,都是由工程師開發。工程師是人,有人即是會有錯誤。利用 WebView 開發 App,若果 WebView 有甚麼不明錯誤,就可能無可救藥。好像用 JS 執行一個會消耗 10 分鐘的 Thread, 若用戶等久了想中途取消運作。在 Android 的平台下是不可能停止的,而 10 分鐘過後你的 app 因為你的 javascript 執行完成而莫名奇妙展示你已取消的結果。而利用源生碼,若你發現有任何部件出事,你可以有較大自由度去解決問題,亦可以控制程序報行的 lifecycle. 這是 html5 不可比擬的。

利用原生碼開發有兩個好處 – 高效和穩定。原生 API 必定得到大部份硬體支援,充份的參考文件了解 API 的支援狀況,運行上亦是最為穩定。若有甚麼問題,廠商亦能即時支援。在這個追求使用者經驗的時代來說,流暢可用的 App 比一個能讓所有群眾基本使用的 App 更為重要,才能為品牌/服務留住使用者群。

A Trial on Android Market

An experimental app – Transparent Phone Free is available on Android Market. Without sufficient promotion. This app gains 1000+ download rates within 11 days. It’s an encouraging number.

Download – Transparent Phone Free

Another Popular App

Another consultancy project which is at the top at HK App Store  – Lee Kum Kee 輕鬆由我煮

What we did:

1. Connection between iOS system and client’s CMS

2. Caching content for faster I/O and reduce data usage

3. Advanced Image processing features

4. Sophisticated use of UITableView

5. Incorporated with Core Data

 

Admob for Android 2.2

Official admob by google API supports Android 3.2+ system only. We spotted that problem as we are going to released a free version of our new app – Transparent Phone. And the solution is simple, just use the 4.1.1 version of the admob api. The system will go back to Android 2.2. =)

You can download the jar here.

Zapper (UK) vs TownCheck (HK)

上兩幅是一個叫 Zapper 的 App,來自英國。 The upper two pics is an app called Zapper from UK.

下兩幅是一個叫 Towncheck 的 App,來自香港。And the bottom two is TownCheck from HK.

大家都係 Marketing App。有差唔多的 Logo,差唔多的實時 Load Tag 手法同 Navigation 設計。我無深究誰先誰後。不過我唔係太欣賞呢種手動揀 Traceable 然後再掃 AR. 當然,前者有 3D content 尚叫實用,透過 Category 黎動態轉換 Traceable 來減輕系統負荷亦無可厚非。但後者似是用 AR 當 QR Code 玩,玩味實質重過實際操作。 Anyway, 我想試下會唔會有 hack 可以做到免除揀 Category 都可以 Detect 到 Mark,我會 suggest 同 Zeta Interactive 的曹同 IVE line-up 左 FYP 的學生點做。

Both of the apps are targeted as marketing tool. Accidentally, both apps share similar Logo, similar navigation design and similar dynamic traceable swapping technology. I can’t say one of them is copycat. But i am not quite appreciate the way that “selecting the category and look thru the mark”.

In my point of view, zapper is more practical as there are many 3D contents. Integrating AR technology is a must. It’s reasonable for zapper team to ask the user select a specific cat to load the 3D content in order to reduce system loading to trace too many marks. However, for the Towncheck, it more likely to show the “interestedness” of AR technology. In general, it looks like an AR QR Code and it seems that AR is not a must for it.

Anyway, I am gonna to hack the way to do swapping traceable with Zeta Interactive. And its team coordinating with IVE’s students on related project. Stay Tune!

Happy New Year! Wish you all have a successful 2012!

invivo will publish several iOS app in early 2012. stay tune!

Get iOS Version 獲得 iOS Version 的方法

相比 iOS5,在操作時會有些 bug (UIImagePicker Controller 的 bug) 或者誤用一些 iOS5 才新增的 APIs 如 UISlider 的 TintColor。為免觸及以上情況,可以用一些簡單的方法去獲得 iOS 的方法以下:

UIDevice *device = [UIDevice currentDevice];
deviceName = [device model];
OSName = [device systemName];
OSVersion = [device systemVersion];

又或者可以用以下的 C function 去看看系統有沒一些 class 的存在:
NSClassFromString(@”UIAlertView”);

若純粹針對這個 object 能否執行某個 message (method),可以用:
[object isResponseToSelector:@selector(functionName)];

那就可以做一些不同版本的配置!

Nexus S with USB Accessory API

因為貪 Nexus S 有 Official 2.3.4 update 而主觀地認為 Nexus S 有 USB Accessory Host 的功能。

但畢竟是主觀願望,記著是新機如 Galaxy S II 或 honeycomb 機如 Xoom 才可以有 USB Accessory Host / USB On-the-go 功能。

白花了銀兩,唯有轉玩 ADK 同 NFC.

讓 Eclipse 在 mba 跑得快。Make Eclipse Run Faster on Mac

有見 Eclipse 在 Android Run 得奇慢。所以我 StackOverflow 找找有沒讓 Eclipse Run 得快一點點。

網上教的方法如下:

對住 Eclipse.app right click -> show package contents

然後用 TextEdit 開啟 Contents/MacOS/eclipse.ini 檔案

在這個 ini 檔 set 以下設定:

Dosgi.requiredJavaVersion = 1.6  //設定 Java version 去 1.6

Xms128m

Xmx1024m <== 讓 eclipse 食多點 ram.

那就可以了,在 mac mini 感動分別不大。我會再於 Macbook Air 上面測驗。