-->

2013年6月12日 星期三

Xcode 5 的新玩意 - UnitTest的進化 Xcode Test(XCT)

UnitTest顧名思義就是單元測試,意思是說把每個你撰寫的功能,個別做測試,當你的測試都沒有問題時,表示這些單元是處於絕對完成的狀態。之後再把這些個別的單元組合起來,完成一個較大的功能。像堆積木一樣,一步一步組成最後的app。這麼做的好處是,我們確保了每一個小步驟都是沒有問題的,因此當問題出現時,我們可以肯定不會是裡面的細項環節有錯誤。因此能夠幫助你節省debug的時間還有力氣。沒有在用這個功能的朋友,可以考慮加入你的coding流程。這個概念在建構大型程式是非常重要的。不過也是只有在大型程式中,才能凸顯其重要性。那麼接下來就來看看他到底多了什麼功能。

2013年4月30日 星期二

使用php及mysql使app具備連線網路資料庫(web database)的能力 (三) - 撰寫 app連線 php

前面兩篇使用php及mysql使app具備連線網路資料庫(web database)的能力 (一) - 建構資料庫使用php及mysql使app具備連線網路資料庫(web database)的能力 (二) - 撰寫 php以 mysql管理資料庫。我們建置了mysql並且知道如何撰寫php去存取mysql。現在,終於可以開始撰寫app的部份了。

本篇會撰寫一個簡單的登入頁面,能夠進行註冊,以及登入,並會顯示註冊及登入成功或失敗。







要達成上述的功能,需要進行http request。雖說Objective-C本身就有提供完成這類工作的方法,但是使用起來太過繁雜,不容易使用。而網路上有許多open source提供了這方面的功能,筆者在此使用 AFNetworking來完成這部份的工作。因此,你必須先到這裡下載這個開放原始碼,稍後會在app中使用到。下載完成後,可以開始撰寫程式碼了!

2013年4月21日 星期日

使用php及mysql使app具備連線網路資料庫(web database)的能力 (一) - 建構資料庫

前言 - 使app具備連線資料庫的方法

本系列文章是使用 php及 mysql 令 app具備連線網路資料庫能力的學習心得。由於 ios sdk並沒有直接連線資料庫的 library能夠使用,因此,現今大部分的作法是用 webView去 request網頁,再經由網頁連線 database的方式,達成連線資料庫的功能。以筆者使用的方式為範例,就如下圖所示:

當然還有其他的如 asp.net等,但是由於 php不用付費,所以筆者選擇使用 php來當做中間的橋樑。本系列文章,分為三個主題:建構資料庫、撰寫 php連線資料庫以及撰寫 app連線 php。以下就開始第一個部分。

使用php及mysql使app具備連線網路資料庫(web database)的能力 (二) - 撰寫 php以 mysql管理資料庫

在上一篇使用php及mysql使app具備連線網路資料庫(web database)的能力 (一) - 建構資料庫,我們完成了資料庫的建置。本篇會針對如何以 php連線資料庫,進行查詢及新增資料。如果你是第一次接觸 php,可以到 codecademy這個互動式教學網站看看 php相關的入門課程,大約幾小時就能對 php有個大概的了解。

2013年2月21日 星期四

使用Xcode 的source control 做版本控制 (2) - Branch

延續上一篇使用Xcode 的source control 做版本控制 (1),本篇會針對其中一項功能Branch 做說明。當在設計app時,可能會面臨一種情況,想法的分歧。比如當你切換到另一個view 時,這個view 有一個主要風格A,但是有另外一種風格B也不錯,因此而讓你舉棋不定。此時可以使用branch 功能,為另外一種風格做一個分歧。因此你的app 會分為A 走向與B 走向。那麼該如何設定分歧,以下就針對此功能做介紹。

2013年1月30日 星期三

使用Xcode 的source control 做版本控制 (1)

有一次筆者在開心專案準備嘗試新的練習的時候,赫然注意到在選擇檔案存放位置的時候,下面有個Source Control 可以勾選,那麼究竟這是什麼東西,一瞬間就勾起了許多的好奇心。經過一番研究之後,原來還有"版本控制"這個概念。其實這個概念以筆者目前的理解,就是把每個階段的構想完成之後,儲存起來並留下註解與版本編號,假如日後有不同的想法,可以從某個合適的版本從新開始,省去許多麻煩。本篇文章只先針對簡單的設定,還有使用方式做一個解說,筆者認為這個觀念建立及使用的好,不僅可以增加效率,還可以幫助整理思路。那麼以下就針對如何在Xcode 中使用Source control 做一個說明。

2013年1月29日 星期二

如何確認資料沒有備份到iCloud上







在這篇"如何不讓資料備份到iCloud"中,告訴大家如何指定資料不要備份到iCloud上。完成設定之後,程式執行也都沒有問題,可是,如何確定資料真的沒有備份到iCloud上呢?以下針對這部份跟大家做說明。

首先,必須將app安裝到你的設備上iPhone/touch/iPad,就是說這個app 進行過實機測試,至於如何進行實機測試,可以參考筆者的另一篇文章"如何在iPhone/iPad上進行實機測試"。

之後到你的"設定"->"iCloud"->"儲存與備份"->"管理儲存空間",在備份中選擇安裝測試app的設備名稱,進入到這個設備的詳細備份資訊,找到你的app就可以看到他在iCloud 中佔用多少容量了,如上圖。"手創小物"這個app第一次申請上架的時候,佔了7.4MB,因此而被蘋果reject。因此,如果你的app第一次執行之後, 就佔了很多容量,很容易就會被蘋果reject了。

如何不讓資料備份到iCloud

本篇會教你如何不讓app裡面的資料被備份到 iCloud上,上面這段是什麼意思?又為什麼要這麼做? 請聽筆者慢慢道來. 這是發生在第一次上架(手創小物 app),也是第一次被蘋果reject。理由是我違反了這個 iOS Data Storage Guidelines. 裡面羅列了4條規則,簡單的翻譯就是如下:

  1. <Application_Home>/Documents 裡面只能放使用者產生的東西。
  2. 如果你有想要放什麼東西在資料夾裡面,可能是為了能夠讓app能夠在沒網路的狀況下也能夠使用,就必須把這些東西放到 <Application_Home>/Library/Caches這裡面。
  3. 放在<Application_Home>/tmp 裡面的東西呢,用完就要去把它刪掉,不能留著佔使用者的空間。
  4. 第四點則是告訴你,有些東西使用者放到documents裡面去,你也可以把這些東西設定為不要備份到 iCloud上去,這樣可以讓使用者節省他的 iCloud空間。

筆者違反了上述的第四點,因為在 app中為了有 offline使用的功能,筆者把很多檔案都先下載下來放在 documents裡面了。筆者應該使用的是第二個規則。不過後來也不是完全依據第二條規則,因為筆者把第二和第四條規則結合了。既放在 Caches裡,又不讓它備份到iCloud上。說到這相信大家對每個資料夾會發生什麼事,都有了認知,在此就總結一下:

  • <Application_Home>/Documents 會備份到iCloud
  • <Application_Home>/Library/Caches 會備份到iCloud
  • <Application_Home>/tmp 不會備份到iCloud

以上說了這麼多,希望大家能夠避免在這部份被reject。詳細的東西當然還是得去看看蘋果的那篇規則,而筆者的方式就在這裡提供給大家參考。以下分為兩個步驟,依序進行就可以大功告成了。

2013年1月27日 星期日

為你的App添加廣告 - AdMob

我們寫App是為了什麼, 對筆者來說, 其一是自己有興趣, 可以說是自己的理想. 其二當然就是賺錢啦. 雖然錢不是萬能, 但是沒錢卻是萬萬不能. 因此, 在App裡面放些廣告, 賺點溫口費, 總是不為過的. 但是筆者建議, 若你的App是要收費的, 哪麼還是不要再放入廣告, 畢竟使用者已經付費了, 還要賺取廣告費, 未免不夠厚道, 而且也降低了App的品質.

本篇文章是介紹如何使用Google的AdMob服務, 因此你必須先有AdMob的帳號, 沒有的人可以到此處申請. 並下載它的SDK. 申請跟下載流程都在中文語系, 相信各位都不會有什麼問題的. 都準備好之後, 就可以開始以下的流程了.

2013年1月24日 星期四

如何在iPhone/iPad上進行實機測試


要想在iPhone或iPad上做實績測試, 必須要先有描述檔(Provisioning Profile), 那描述檔怎麼來呢, 首先你必須要有Apple給你的開發證書(Certificates), 然後要去新增一個App ID, 之後就能得到描述檔了. 當然你還要在Xcode中新增要用來實機測試的設備.以下筆者就針對每個項目做步驟說明.

2013年1月23日 星期三

Apple Developer Program Activation Code 無法啟動


這個問題大部分發生在非英語系國家, 其原因在於Apple公司在啟動時, 會去驗證你的開發者帳號與購買者帳號是否相同. 若你在購買的時候, 購買者資料有填入中文, 那就會造成驗證失敗. 並且會要你連絡他們的ADC. 通常寫信過去, 都要等個3-5天, 甚至有時候根本得不到回應.

解決辦法: 筆者當初寄完信之後, 等了1-2天之後, 等得不甚耐煩. 後來在網路上搜尋是否有人遇到跟我一樣的問題, 這一搜不得了, 還真不少, 也看到各式各樣的解決辦法. 後來是以打電話連絡ADC的方式解決了.以下是筆者進行的整個流程:

  1. 打電話給台灣Apple, 就是你的訂單右下角那個號碼.
  2. 問題類型, 就選訂單問題.
  3. 之後告知你的問題, 她會幫你轉到ADC
  4. 轉ADC可能會有一段時間, 因為台灣沒有ADC這個部門, 所以是轉到國外去, 這個部門也有自己的電話, 自己打過去好像要付海外通續費, 所以還是建議先打給台灣Apple, 讓他幫你轉接過去.
  5. 接通之後, 再把你的問題跟他說一下, 就會幫你解決了.