Just My Life & My Work

Archive for the ‘iOS’ Category

[iOS] 不合法的伺服器憑證問題

這是個很奇妙的議題,明明是用去年人家寫的案子呼叫API的程式碼,連第三方套件也一模一樣,所帶入的方法參數一模一樣,但是卻跑不出相同的結果⋯⋯

不知怎麼命名這篇文章,暫且以不合法的伺服器憑證問題為名吧!似乎跟http和https有關聯?還有什麼SSL?

然後就跑出這幾行訊息:

The certificate for this server is invalid. You might be connecting to a server that is pretending to be “xxx.ooo.com.tw” which could put your confidential information at risk.

查了網路前人的解法,原來只要在兩個delegate改成這樣⋯⋯

- (BOOL)connection:(NSURLConnection *)connection
canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
{
    return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
    [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
    [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
}

起初還想要請負責server端的人改安全性程度,不過既然去年的project都可以成功跑出結果,還是由我app端來處理問題吧!

寫了以上的code,還是不太明白意義⋯⋯知道的人請跟我說一下><;

參考:How to use NSURLConnection to connect with SSL for an untrusted cert?NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813) iOS

[iOS] iOS 8 定位服務規則

iOS 8已經在9/18釋出,所有使用者只要有符合的機型,都可以選擇是否要升級!身為開發者的我,當然要及時讓身旁的測試機更新作業系統,因為想來測試iOS 8 定位服務規則

現在詢問的文字可以客制化,如較小字體的就是我設定的呢!

現在詢問的文字可以客制化,如較小字體的就是我設定的呢!

話說,昨晚更新我親愛的The New iPad,花了將近一小時的時間完成升級,但畫面卻顯示要我連結iTunes,我也跟著指示做⋯⋯iTunes居然要我回復iPad,也就是裡頭App的資料都會消失殆盡⋯⋯「×!」當下真的很不爽,不過想想裡頭也沒什麼特別的資料,很多重要的資料都儲存在雲端,我只要登入各大小App,就能取回我大部份的資料囉~

(繼續閱讀…)

[iOS] 11項被退件的主要原因

最近Apple公佈11項被退件的主要原因,仔細看這些原因,發生在我身上的不禁令我會心一笑,看來大多數的App也有同樣的問題,所以我並不孤單XD~

crash debug

(繼續閱讀…)

[iOS] 使用Flurry記錄使用事件

一個想長遠發展的APP,有必要觀察使用者的行為狀況,很直覺地我們能透過記錄使用者點擊APP中的各個功能,經過簡單的統計與分析,就能一窺使用者對我們APP的喜好,於是持續改進來獲得使用者的支持!

在此我來介紹使用Flurry記錄使用事件

Flurry_SessionGrowth_2009to2012

這麼簡單記錄使用者行為的平台,Flurry發展得相當好,可以從2009年Q1到2011年Q4看出,於今日2014年想必有更多開發者在使用它! (繼續閱讀…)

[iOS] 模仿iPhone密碼鎖

由於專案需求,一個App同時要給管理者使用者使用,那我們有些功能就要設定權限,比如只有知道密碼的人才能使用該功能!

若有時間的話,我也想自己刻一個iPhone密碼鎖,不過礙於時間有限,找第三方套件直接套用就可以啦~

iphone locker

很幸運地找到一個方便使用的Library,拿Demo用的View Controller來改就完成了大半!設定密碼、修改密碼、刪除密碼三個功能一次滿足!再搭配上將密碼存到KeyChain中的Library,新的功能就在兩小時內完成~

此外,我們還能修改密碼鎖的外觀,比如背景顏色、按鈕(不按和按)顏色、文字顏色、文字內容等等。

這個模仿套件iPhone密碼鎖,用起來跟Apple內建的一模一樣!

話說,這個專案已經四個月沒有動了呢⋯⋯

參考:GitHub – ABPadLockScreen

[iOS] 將密碼儲存於KeyChain

為了安全地儲存使用者的密碼,建議將密碼儲存於KeyChain中。哈~要不是資深工程師提點,不然我真的還是會儲存在User Defaults中呢!

Keychain

KeyChain是iOS提供的一種安全保存私密資料的方式,整個系統的keychain被保存在隱秘的位置(/private/var/Keychains/keychain-2.db),其中保存的資料是經過加密的。

KeyChain優點:

  • 每個組( keychain-access-groups )之間資料存取隔離,沒有權限的app無法讀取他人資料,保證資料的安全
  • 全域性統一儲存,即使刪除app,keychain中的資料依然存在,下次重新安裝app還能存取
  • 存儲後的資料會加密
  • 同一個組的app可以共享keychain中的資料

KeyChain缺點:

  • 刪除app後不會清除keychain裡的資料,如果儲存密碼等敏感性資料有一定的風險。(越獄後keychain能被導出來)

(繼續閱讀…)

[iOS] 使用 SymbolicateCrash 分析崩潰紀錄

一直以來我都只看IDE中的crash log,沒想到這次要查看蘋果審查委員給的crash log檔案,這時候麻煩可大了,如果沒有弄清楚crash在哪,審委是不會讓我上架的⋯⋯看了它給的檔案,僅知道是IAP(應用內購買)程序有問題,儘管我怎麼測都沒有發生過!之後我陸續送了兩個版本,審委依然給我同樣的回覆,讓我不得不去找辦法轉譯crash log檔!

crash debug

很幸運地我總算學會SymbolicateCrash來分析崩潰紀錄啦~

(繼續閱讀…)

[iOS] 使用 CocoaPods 管理第三方套件

專案越做越多、越做越大,肯定會使用到第三方套件,因為我們不想重新打造「輪子」,如此能夠加快開發速度,更能專注在專案核心需求上!

cocoapods13

於是我們想要有效率地使用第三方套件,就可以考慮使用CocoaPods這個工具。

(繼續閱讀…)

[iOS] 不讓資料檔案備份到iCloud

由於送審被退,才知道某些檔案不能備份到iCloud,畢竟iCloud目前只有5GB,只有像使用者產生的資料可以備份之外,若檔案可以在網路上再次下載,就不用特地又備份到iCloud!

file backup to icloud

我把檔案儲存在Private Documents中~

我不想要備份Private Documents中的所有檔案~這時候我可以設定movie、music、night light這三個資料夾不要備份到iCloud,因為裡頭會放上GB的影片檔。

(繼續閱讀…)

[iOS] 測試Debug與Release模式

現在用Xcode開發iOS APP,我總是用Debug模式來執行,但是最後APP要上架,此時就會以Release模式來跑,因為這兩者環境有些為差異,我想知道在給使用者使用是什麼狀況,那麼我可以怎麼測試呢?

Debug & Release Mode3

按向右三角形,可以測試Debug和Release模式喔!

(繼續閱讀…)

標籤雲