身為一個程式設計者,寫過那麼多支程式都是為了應付老闆或客戶需求,難免希望有一支程式作品可以代表自己,讓大家因為使用這支程式而認識你,看到你的價值。而 AppStore 提供了這個平台,幾十萬支程式就在這平台上流傳著,只要有心成為一員,你也可以在這平台上發表自己的程式,供全世界的人下載使用,甚至付費,賺錢多一筆額外收入。
就某些程度來說,AppStore 平台的確滿足許多程式設計師多年來的夢想,對於有心想嘗試人來說,我個人有一句體驗深刻的話,那就是:
「有 Hello World,就有 Hello AppStore」
從Hello World 到Hello AppStore
從 Hello World到 Hello AppStore,回首來時路,才發覺這條路並不太難,只是一切得從無到有,在完全得不到任何外援的條件下,在身邊都沒人嘗試或願意分享相關經驗的環境下,這條 Hello AppStore 的路還是走得非常辛苦。
很多事情我的感受非常深刻,我漸漸可以理解為何願意分享,願意協助的人似乎越來越少。我想也不用多說什麼,總之我還是做到了。
我知道有些人對我這趟的 AppStore 之旅很感興趣,所以我也簡單的寫一下這心路歷程。或許說不上參考價值,就當自己的一段回憶好了。
嘗試 iPhone 程式的開發,最低的投資限度為:
1.一台 MAC 電腦
2. Object-C 語言。
如果又以 AppStore 為目標,則要再加上一項:每年 99 美金的 IDP 憑證,以及 MAC 要 10.6.x 版以後才行。
需不需要 iPhone / iPad?可以說不需要。不過強烈建議最好要有,因為模擬器無法模擬加速器 / GPS / 相機 / 藍芽,除非你有把握寫出沒問題的程式。
看起來就這麼簡單。其實除了學寫 Object-C 程式語言比較恐怖之外,其他一點都不難,有點小錢買 MAC 跟 iPhone,又有貴人教學相助,就可以幫你搞定其他事情,只要專心寫好自己的程式準備上架就夠了。
如果沒錢買 MAC 也沒貴人相助,那麼你必須具備以下的條件…
你要有強烈的學習慾望,和一顆超級強壯的心臟,足以讓你排除萬難。
其實就這麼簡單,如此而已…
第一支Hello World的誕生
所以,我們先談如何寫出第一支 Hello World 程式該具備的事情,之後再來談上架 AppStore。
首先,要先有一台 MAC 電腦,如果沒錢買 10.6.x 的 MAC 電腦,只要你要有強烈的學習慾望,以及一顆超級強壯的心臟,足以讓你排除萬難,也還是有辦法生出來。至於怎麼來的,我不能告訴你去偷去搶。
再來,上 Apple.com 去註冊 ADC Member,這是免費的,就可以下載最新的 SDK,然後把它裝在 10.6.x 的 MAC 電腦上。目前最新的 SDK 還限定在 10.6.4 以上,所以要先把 MAC 升級到最新的 10.6.4 才能繼續安裝 SDK 。裝好之後會有 XCode 跟 iPhone 的模擬器,就可以開始寫 iPhone 的第一支 Hello World 程式了,成果可以在模擬器上面檢視。
第一支 Hello World 程式,環境要求也只是這麼簡單。
如果之前寫過微軟的 Visual Studio 或是其他類似相關的程式語言,要來學習寫 iPhone 程式,最好先了解以下的幾件事:
1.C 語言的基礎 ==> 高中或大學的計算機概論多少都會教一點,只要不去 Copy 作業,自己有動手寫過 C 語言程式,懂得最基本的 if, else, while, for 迴圈…這些基本的應該就夠了。
2.了解 iPhone 程式架構的 MVC 結構,以及 Delegate 的概念跟用法。這個很難解釋,有點像在玩角色扮演遊戲,需要時間跟強烈的學習心態,它跟以往你學過的任何視窗程式都不一樣。
3.熟悉 Object-C 那種怪異的語言結構,需要時間跟強烈的學習心態。其實這就像是國語跟台語的差別,耳濡目染之後多少也會懂,要學好的話得多花點心思跟時間。
4.熟悉 XCode / Interface Builder 的開發環境。其實這就像學開車一樣,懂得坐進駕駛座之後,學習方向盤,油門/煞車/離合器,排檔桿…的作用。
以上寫的看似簡單,但實際上產出第一支 Hello World 程式卻沒有想像中容易。參考很多範例的做法,照著做都 OK,但自己打造就掛了,程式一 Run 就當機給你看,幾乎每個學習者都會遇到這種情況,尤其之前愈是習慣微軟視窗的開發環境,這種情況愈是無法避免。而上面四點還沒成立的時候,要生出第一支 Hello 還算小有難度,反過來說,生出 Hello World 之後也會跟著對這四點有基礎認識。
如果還是完全摸不著頭緒時,很簡單,只要你有一顆超級強壯的心臟,足以讓你排除萬難,上 youtube 搜尋 iphone hello world,就會跑出一堆教學影片,照著影片跟著做,弄懂這四點只是時間上的問題。
一旦生出 Hello World 之後,我相信 Hello AppStore 就在不遠處了。你會發現寫 iPhone 的程式真的很有趣,很多動畫函數全都已經 Ready 了,你可以用原本看起來很怪異的 Object-C 語法,有趣的操縱它們,讓你的程式畫面充滿生動的動畫效果。 iPhone 程式語法很有創意,尤其是當你已經懂了基本時,再參考 youtube 上的進階教學或是 Google 搜到的討論,會發現這些 Object-C 程式中隱藏的新鮮玩意兒,是以往寫過的程式語法中體會不到的樂趣。
寫出程式之後,我們會想把程式丟到手機中 Run 看看,或是想把程式丟到 AppStore 上面賣,這兩個動作就需要購買 IDP 憑證才能做到。
如果你只是想把程式丟到自己的手機而已,不想花錢購買 IDP,只要你有一顆超級強壯的心臟,足以讓你排除萬難,先把 iPhone 給 JB,再對 XCode 動點手腳,總之這也有方法,但我還是不能告訴你去偷去搶。
購買 IDP(iOS Developer Program)
購買 IDP 不是什麼難事,不過對台灣之前申請的開發者來說,似乎是吃盡了苦頭,最主要的原因竟然出自 Apple 的購買 IDP 流程沒有完美整合它們的訂購系統。好在我先前爬過了文,一天就開通搞定了。所以把我的做法跟重點簡單說一遍。
要申請 Apple 的相關服務時,必須先申請一組 Apple ID,如同申請一組奇摩帳號就可使用奇摩拍賣/無名小站/奇摩信箱/即時通…是一樣的意思。在 Apple 網站上的很多地方,都可以依照網頁上的指示連線到申請 Apple ID 的頁面。如果是申請 IDP 而使用的 Apple ID,最好依照以下步驟來準備。
1.準備好自己的姓名,住址,電話,信用卡,以及銀行帳戶資料(用來收錢的,因為上 AppStore 賣程式的錢最後要匯到你使用的這個帳戶),這些資料全都要標準英文。以及最重要的,準備一個保證收得到信且不會被廣告信淹沒的 E-Mail 帳號,拿這E-Mail帳號來當 Apple ID 的登入帳號,未來所有的訊息聯絡都會透過這個E-Mail帳號。
2.用第1.點的資料申請一組專用的 Apple ID(申請網址),而這組 Apple ID 是專用來應付IDP的相關服務(建議與買 App 的 iTunes 帳號分開,別用同一組)。這組的 Apple ID 要很謹慎的填寫正確,因為美商蘋果會對這個 Apple ID 做更多且更嚴謹的身分驗證,設法確認這個 Apple ID 的真實身分,並非只是個空殼假 ID,不然將來一有錯誤時,軟體很可能無法上架,甚至還可能會收不到錢。
3.補完這組 Apple ID 的資料,填上正確的戶籍地址,姓名….都要用英文。須注意的是,一旦地址有問題時,會影響到後續的身分驗證,甚至將來要收錢都可能出現問題(所以我的五碼達人在此時就派得上用場了)。
4.用這組 Apple ID 註冊 ADC(Apple Developer Center) member。登入 ADC 之後,如果這組 Apple ID 沒有註冊啟用 IDP,ADC 的頁面會在很多地方貼心叮嚀的提示您加入IDP,所以很容易看得到的提示,像這樣。
5.申請 IDP 時就會問東問西了,小心仔細填妥之後就會要你付款,然後畫面會回到台灣蘋果的訂購網頁,確認一切沒問題之後就可以開心的下訂,下訂之後會產生一張訂單要你刷卡付費。這時候把訂單號碼記下來,後面會用得到。
刷卡付費完成不代表 IDP 生效,還需要經過驗證啟動的程序才算整個完成。付費完大約過一段時間之後(幾個小時),IDP 的訂購系統收到付款通知,會主動發出一封啟動 IDP 連結的郵件到 Apple ID 的信箱,這連結是用來驗證訂單付款人和申請IDP是不是同一個人,也就是我前面提到的,Apple透過這個手段來驗證IDP帳號的真實身份。
正常的情況下,啟動郵件的連結按下去,IDP 就生效了。不過台灣的申請者沒有這麼好運,點下去之後出現驗證失敗的機率很高。
因為台灣蘋果的訂單網頁有些欄位是預設中文(縣市)不能改。IDP 的啟動驗證連結會去檢查訂單,但是 IDP 系統不認識訂單的中文欄位,於是跳出驗證失敗的訊息,跟一個回報問題的連結頁面,其他說明都沒有。很多人於是傻傻的在網頁填了問題網頁卻等了多天等不到回應,不然就是又看到說明寫著要「傳真」身分證或護照影本到國外的傳真號碼,國際傳真過去之後竟然說沒收到,林林總總,總之拖了很多天才會處理好。據說有人花了五十幾天才處理到好。
解決的方式也很簡單,準備好上述的資料跟訂單號碼,然後打給台灣蘋果的 0800-020-021 免費客服專線,按2轉接訂單處理,輸入完訂單號碼之後,按指示請專人接聽,用親切的中文直接跟他說要轉接 ADC 處理驗證失效的問題,他會幫你轉到香港 ADC,接著再用親切的中文跟香港 ADC 轉述問題,仔細聽他怎麼說(大都是廣東腔國語),通常不用五分鐘就搞定了。
如果沒有意外,幾分鐘之後會再寄一封啟用 IDP 驗證連結的郵件,這次點下去應該就會生效了。網路上有的人是被要求 E-Mail 寄護照影本,我猜可能是訂單全部用中文而申請IDP全部用英文,導致內容差太多,反正看怎麼做就怎麼做,都是中文溝通所以也不會有其他問題了,這通電話打下去通常一天內就能搞定。
邁向 AppStore:上架(Ready for sale)
前面提到,如果要將程式丟進實體手機內執行,或是上架到 AppStore 上發表,得購買 IDP 才能辦到。而 IDP 和這兩個動作之間的關係,則是透過電子憑證來達到這個機制。購買IDP 且開通啟用之後,才可以取得所需的憑證檔案,而編譯過的程式必須經過這些憑證進行簽署,才能讓程式在實體手機上執行,或是在 AppStore 上面發表。
IDP 啟用之後,登入 ADC member 畫面就不一樣了,會多出幾個東西出來。我把有關AppStore的重點挑出來說明,只有三個:
1.iOS Provisioning Portal:申請開發憑證/發布憑證/上架軟體ID/其他….
2.iTunes Connect:軟體上架/銷售/iAd/報表…相關。
3.Contracts, Tax, & Banking Information:銀行帳戶/稅表合約—這個是登入 iTunes Connect 之後才看得到的項目。要在 AppStore 賺錢當然得填上自己的銀行帳號跟符合美國稅法的稅務資料,稅務合約是用來說明跟證明你跟美國沒有任何關係,請他們不要扣你的稅。稅務合約中有兩個重要的項目得用標準英文地址,且一旦確定存檔就不能再更改,所以我的五碼達人得再度上場。有問題或是沒有填妥,Apple 不會發錢,通過審核的付費軟體也不會上架。
整個上架的大致上的動作分成兩大步驟,第一個是申請憑證來簽署編譯準備上架的程式,第二是發布並上傳編譯且簽署過的程式檔。
先到第一項申請相關的憑證(開發憑證/發布憑證),申請完下載安裝在自己的 MAC 電腦上,接著就可以在 XCode 編譯時選擇需要的憑證檔進行簽署了。要上架的話,得用發布憑證 (Distribution Certificate) 來編譯,編譯出來的檔案就是準備上架的二進位編譯檔。這些動作在登入 iOS Provisioning Portal 之後的首頁有提供教學,照著做就行了。
要上架的話,得先登入到 iTunes Connect,到首頁的 Manage Your Applications 去新增要發布的應用程式 ID,填一些欄位(如軟體描述),選好相關的問題(如這個軟體是不是18禁)之後會出現 Ready for Upload 的訊息,這時候就可以用 XCode 的 Organizer 程式來上傳剛剛提到用發布憑證編譯的的二進位編譯檔,也就是我們寫好準備上架的程式了。
上傳的軟體還必須經過 Apple 的審查(Review),如果前面的步驟沒有問題時,上傳的軟體沒多久就會停在 Wait for review,這狀態可能會等上好幾天,網路上的說法是一到七天都有。等到 In Review 就表示已經有人開始要審核了,之後就得看情況了。新的軟體 In Review 可能還要再等上兩三天,如果只是軟體更新,In Review 沒問題的話大概幾個小時就過了(我猜是看會不會當機之類的檢查而已)。通過之後就會顯示綠色的 Ready for Sale,表示可以或已經上架了。如果是被退件 (Rejected),除了會顯示紅燈之外,也會收到 E-Mail通知說明退件的理由。
退件的理由通常只會說明一項,修改完再上傳送審又得跑一次流程,又得等上好幾天了。如果又因為別的理由再度退件,日後又得再重跑一次流程送審。所以每次送審的時候最好再全部檢查一遍。我個人很幸運沒有被退過,依照網路上的說法,常見的退件理由如下:
1.會當機,或明顯的 BUG 被抓包….
2.功能跟軟體描述不符
3.軟體名稱不符規定:例如使用 iPhone 開頭,或是名稱跟已上架的某軟體相同,或是太相近且容易混淆。
4.關鍵字與軟體功能無關…之前有人寫了個遊戲,關鍵字寫台灣,結果被退件…原因是遊戲跟台灣沒有直接關聯。
5.使用系統提供的圖示按鈕卻沒有照圖示功能運作。
例如五碼達人的首頁用了一個放大鏡的圖示,內定是「搜尋」的功能,按下去要有搜尋結果產生。
之前有人把他拿來做產生亂數的動作,結果被退件…搜尋到很多人都是因為誤用系統圖示而被退件,所以保險一點就是用文字,不然就是自己畫圖示。
6.沒有實質功能的按鈕不能顯示。例如 lite 免費版做一個按鈕只會顯示要用戶付費購買的提示。
7.按下去沒有任何提示就離開程式的按鈕。例如直接呼叫內建的地圖,直接連到 AppStore 的頁面,或開啟 Safari 瀏覽器,一定要先提示用戶會離開程式,用戶選擇是之後才執行。
8.使用地圖時 Google 標題被常態蓋掉。有人因為這邊放廣告把 Google 字樣遮住而退件。
9.對應環境需求必須有錯誤處理。例如需使用網路連線時,網路不通或連不上指定網站要提示使用者。需使用GPS時,無法啟動GPS也要有提示。啟用廣告時如果抓不到廣告,需將廣告隱藏,不能讓畫面空出一片空白廣告。
10.軟體啟動頁面用了iPhone桌面截圖(必退)
11.軟體模擬 iPhone 故障(必退)
12.使用非公開的 API。幾乎必退。
13.有侵權嫌疑,尤其是軟體內要盡量避免與 Apple 商標和 Apple 產品名稱有關的內容。例如國外有人把照片的外框做成像寶麗來(立可拍)的底片就被退了。
14.不良的隱喻與暗示:有人不小心拿了一張大麻葉當底圖,就被退件了。美女寫真、純賣養眼圖的 App 也很可能被退。
15.iPad應用軟體必須支援四個方向的啓動(如果 Apple 認為你的程式必須支援而沒有支援的話,會退件)。
….GOOD
版主回覆:(01/06/2011 06:55:43 PM)
Good
GOOD
版主回覆:(01/06/2011 06:56:10 PM)
Good 兔~
很棒,受用,感恩!
版主回覆:(02/16/2011 01:15:43 AM)
Thanks!!
我想請教您
Contracts, Tax, & Banking Information
你有去申請ein稅號嗎??
還是不用??
其中有一個問題是
Do you have any U.S. Business Activities?
In general, you have U.S. Business Activities if you have employees in the United States, or own, lease or control equipment or other assets in the United States that you use to derive revenue from the iPhone Developer Program.
如果勾YES.->就會問
Are you required to file a U.S. income tax return (whether an individual return or corporate return) with respect to the income you earn from the iPhone Developer Program?
—->就需要EIN 稅號
如果勾NO.->就沒有稅號問題
PS.我們是公司開發的~做為商業收入
方便的話可以回EMAIL給我嗎??感恩!
版主回覆:(07/07/2012 10:37:20 PM)
我是選NO,它的意思是問你跟美國有沒有商業上的往來。我不是美國公民,也沒有跟美國有任何生意上的來往。
您好
請問如果用個人名義申請,未來上架後在app store顯示的程式開發商可以變更嗎?還是必須使用當初註冊時的真實姓名不得更改?
謝謝您
版主回覆:(08/09/2012 02:54:32 AM)
照網頁上的申請和上架流程,個人開發者的開發者顯示名稱是不能更改的,
至於能不能透過別的管道申請改名,我就不清楚了