Just a Computer Graphics Studio & My Life

Posts tagged ‘debug’

[iOS] 呼叫Web Service除錯

今天來講一下簡單的問題,不知道要怎麼稱呼這一篇,就姑且叫呼叫Web Service除錯吧~

其實就是串API時所發現的奇異問題!使用PostmanChrome呼叫都很成功回傳我要的資料,卻在寫進iOS中卻得到不預期的結果,先前有提到過Basic Authentication,程式傳遞token後,回傳結果表示沒有傳遞token給server,明明就是照先前的code複製貼上修改API Function名稱,這次居然有問題讓我很納悶。

人不是萬能,總得要投降來找救兵,以便跳出框框,看見問題的癥結。還是找我們寫後台的資深工程師幫忙查看,搞了兩小時多,Function名稱換掉也一樣,最後資深工程師發現,原來URL不小心多打一個「/」~

錯:
http://happystudio.notebook.com:5000/api/ecg/?start_date=2017-10-18&end_date=2017-11-17

對:
http://happystudio.notebook.com:5000/api/ecg?start_date=2017-10-18&end_date=2017-11-17

原因:?前多一個/

那為何Postman或Chrome測試沒有問題?因為這兩個工具會自動把沒有「/」,變成有「/」,來符合後台的API格式,然而iOS SDK就沒做這個容錯處理。這要歸類成相容性問題嗎?其實複製URL貼上到Chrome測試,我就有發現網址會跳成有「/」。

花了點時間,算是幫後台debug啦~

廣告

[iOS] 編譯錯誤問題

第二次遇到類似的編譯錯誤問題,居然還讓我花些時間debug,只好把握時間記錄下來,這樣就能避免再次浪費時間除錯啦~

iOS 編譯錯誤問題00002

(繼續閱讀…)

關於Access Control Allow Origin

關於Access Control Allow Origin。查了網路,SO裡頭有好多人有同樣的問題,發現最好的解決方式就是透過server來設定response的header。

我使用Chrome來debug,發現正要用的domain會有下列回應,套上先人使用的domain來測試,沒有這樣的回應,所以猜想是server設定的問題囉~

Access Control Allow Origin.png

(繼續閱讀…)

[iOS] 拆掉和包裝套件 (Unarchive and Archive Library)

又到了要套用第三方套件的時候,一般而言都是找最「受歡迎」的GitHub開源套件,因為做得好大家有目共睹,還會給作者一顆星!不過在台灣的市場,要套Beacon SDK就得找台灣廠商,去年旅遊App套一個廠商的Beacon SDK,搞了一陣子的背景偵測有問題,現在購物App也要來套另一個廠商的Beacon SDK,這個廠商製作各種「可串接」套件都有些問題,這次當然也少不了啦XD~

回想三年多前iBeacon被Apple提出來至今,台灣市場總算熱絡了起來,可以回顧一下我先前撰寫的初探iBeacon

(繼續閱讀…)

[iOS] 顯示編譯日期與時間

每次開發後會編譯釋出給專案經理測試,然而有時候會忘記該裝置是舊的版本,因為有太多測試機在公司,拿來拿去也編來編去,測完後隔幾天就不小心拿到舊版本的機子,就很有可能測出不期望的bug出來,這實在耗費時間哪~

compile date time.jpg

現在想把編譯日期和時間顯示在App首頁下方,如此就能很清楚知道該版本的新舊。

(繼續閱讀…)

[圖解] 專案測試項目

回想兩年前開始做這個給美國寶寶使用的App,從無到有開始打造,因為關鍵的功能尚不知如何實作,於是邊學習邊開發。主要的用途就是讓寶寶自己開影片來看,因為影片檔案很多且很大,需要有個後台來存放,使用者必須從網路下載影片回來App,此外還有進階使用功能,便是應用內購買來下載更多影片。

Baby專案檢查項目.png

回想當初製作時功能流程的複雜程度,App使用起來功能簡單又基本(使用者角度),然而開發起來就覺得實在好複雜(工程師角度),每個細節都要處理恰到好處,於是要花許多時間來測試與除錯。

像是下載影片、儲存影片、播放影片、加入我的最愛、應用內購買、限時播放與循環播放、播放清單、推薦親友、獎勵兌換、家長閘等等。不列出來我都忘記,列出來讓我又想起更多細節,乍看之下就只是個影片播放App,其中的奧秘都呈現在斷斷續續一年以來的開發過程之中。

可能因為自己還沒有小孩(快有了:P~),所以開發這個給寶寶使用的App,說實在的並沒有讓我很興奮,常會卡在某些功能流程上。

像是超大影片(例如100MB)要下載,就不能先全部載到記憶體,再轉存到硬碟,而是要每下載一小部分就從記憶體轉存到硬碟,以免超過App所能乘載的記憶體量而崩潰。

還有當時想要背景下載,但實際上只作前景下載,而且一次只能下載一個影片,所以使用者要開著螢幕乾等影片下載完畢,後來有加上背景下載(10分鐘內)。

此外,應用內購買必須模擬真實購買情況,好在Apple有區分開發環境(Development)與產品環境(Production),讓我可以無限次數購買,只是測試帳號購買產品後,沒有辦法回復到還沒購買的狀況,所以要不斷更改產品ID,或是增加測試帳號,來購買同一個商品。

我想這些學習理應感到很有成就感,只是我會想能不能沿用到未來的專案,當然多少都會對未來專案有助益,也希望開發過程中能有空閒來記錄下我的學習歷程,好讓未來的我或其他學子,能快速上手!

最近同事需要匯出開發文件,我在寶寶App也因應客戶需求,以Apple Doc的格式釋出,多虧一年半前我有記錄下來,直接貼連結給同事參考,節省不少學習時間。

最後的感想是,學海無涯,自己對新的事物也總是抱著好奇的心去認識與學習,然而時間有限之下,我必須選擇對我意義最多且價值最大的題目來實現。

[圖解] 除錯五個階段 (The 5 Stages of Debugging)

如果沒有除過錯的人,就不是個稱職的軟體工程師。也就是說,只要你是個軟體工程師,肯定除過錯!剛好碰見一張讓我感同身受的圖解除錯五個階段 (The 5 Stages of Debugging),仔細想了一下,我好像也差不多經歷如此狀況。

圖解 除錯五個階段 The 5 Stages of Debugging (繼續閱讀…)

標籤雲

%d 位部落客按了讚: