2017年8月31日 星期四

iOS 自動化測試教學 UI Testing

Xcode 有內建的 UITest 的功能
可以把你做的事情錄起來,轉成程式碼
在執行 UITest 的時候,你執行的是程式碼的部分,還是可以設斷點

實作如下:
1. 新增 iOS UI Testing Bundle
*要以新增 target 的方式新增,用新增 file 找不到 Bundle。
*也可以 File -> New -> Target...






創好之後會多一個資料夾


在 test navigator 中會有剛剛創的測試 bundle、預設 class 及預設 function
*可以自己另外寫測試 function,只要是 test 開頭的,Xcode 都知道是要做測試,測試時,會自動測試。test 開頭檔名舉例:testLogin...等。


2.撰寫測試 code
有兩種方式可以撰寫測試code,一種是直接打程式,另一種就是開頭提到的用錄的,Xcode會幫你轉成程式碼。
這裡示範用錄的。

把游標放在你要撰寫的地方,按下紅色錄影鍵( 🔴,在斷點旁邊):


*如果放在不能錄的地方,錄影鍵則不能按。


3.開始錄影


錄完後,回到 Xcode 就會看到剛才錄的,並轉成程式碼。


4.按下綠色打勾的地方的按鈕,還沒執行過會是灰色的 ▶,按下去就會執行。

// 遇到錯誤是否繼續執行
continueAfterFailure = false



從 Report navigator 可以看到專案中的每個 function testing 的覆蓋率。


開啟 Code Coverage 的方法如下:


按下 Close 就設定完成囉。


Tests 的表格裡可以看到每個階段執行的事情,按下眼睛可以看到當下的截圖。


2017年8月28日 星期一

iOS 推播 Notification 配合使用 Firebase

需要的東西有
1.憑證
2.Firebase
3.Code

基本上我是按照這篇文章 Push Notification教學但是完全照做無法順利執行,就另外寫一下哪裡要改。

1.憑證
會用到的有三張

  • XXX.certSigningRequest,就是CSR,且之前就有的話可以沿用,不用重創。
  • aps_development.cer,Apple Push Notifications,推播需要用到的。
  • XXX.p12,Firebase 設定 APN 需要用到的憑證。
    • 在創這張的時候,要整個憑證匯出,而不是打開之後只選鑰匙匯出!

    • 只選鑰匙匯出,上傳至 Firebase 時會出現『繫結的憑證與您的應用程式不符』錯誤。

2.Firebase的部分照著做就對了

3.程式部分,有新的寫法,照著網站上寫會出錯,也無法利用 Xcode 內的提示完全除錯。
解了問題之後的程式法如下:



最後要加
func applicationWillTerminate(_ application: UIApplication) {
        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}





2017年8月23日 星期三

swift3 串接 JSON API 範例

除了以內建的函式呼叫API之外,還可以使用套件,例如AFNetworking等
本文章是用內建的函式呼叫。


因照做之後無法順利執行,且他的範例中包含下載圖片。
因此練習做了一個功能比較單純的範例。

1.取得 API 網址

2.撰寫送出request的設定

3.task是送出request。

  • 解析收到的data,轉換編碼utf8,就是string那個,是JSON的格式
  • 將string分解成想要的物件,例如NSArray等

4.task.resume() 執行task送出request



NSURLRequest解釋
URL:API網址
cachePolicy:一個具有暫存的特定策略
timeoutInterval:連線最大秒數


cachePolicy策略選擇



  • useProtocolCachePolicy
    • default
    • 用於特定的URL加載請求
  • reloadIgnoringLocalCacheData
    • 舊稱為NSURLRequestReloadIgnoringCacheData
    • 忽略local cache data,直接從網址撈
  • reloadIgnoringLocalAndRemoteCacheData
    • 忽略local cache data
    • 只要protocol同意,指示該代理和其他中間設備忽略local cache data
    • Unimplemented
  • reloadIgnoringCacheData
    • reloadIgnoringLocalCacheData的舊稱
  • returnCacheDataElseLoad
    • 優先使用現有的cache data,就算是很久以前或是已經過期的資料依然使用
    • 如果要的資料不存在於現有的cache,才從URL讀取
  • returnCacheDataDontLoad
    • 使用local cache data
    • 沒有local cache data,也不透過URL讀取
    • 常用於『離線』模式
  • reloadRevalidatingCacheData
    • 如local cache data是有效的,則使用local cache data
    • 如與來源確認資料非有效,則從URL讀取
    • Unimplemented


dataTask

數據任務便利方法。 這些方法創建了繞過正常委託,並提供了一個簡單的可取消異步接口來接收數據。
data:接收的資料
response:回應的內容。如:status code及headers{Cache-ControlContent-Type、Date、Expires、Server、Set-Cookie、Transfer-Encoding}
error:錯誤內容



2017年8月4日 星期五

ios 上架注意事項


  • 預覽圖片大小:

iPhone

iPad




可以放小尺寸 (iPhone 6s, iPad 9寸以下) 的畫面輔助,但是上面說的兩種尺寸一定要有。
詳細大小參考網址:
http://help.apple.com/itunes-connect/developer/#/devd274dd925


  • 廣告識別碼
如果只有放 Admob 的廣告,再送出審核前的最後一步要選說有放廣告。並勾選相對應的選項。
參考網址:https://goo.gl/3hPctq