The Issue About Using MPChangeRepeatModeCommand

Apple’s MediaPlayer framework has two APIs in iOS 10 to let you control your player’s repeat mode (to repeat a song, or a list, and so on) and shuffle mode (sequential or shuffle play) with CarPlay. They are MPChangeRepeatModeCommand and MPChangeShuffleModeCommand.

We tried to integrate these two APIs into our product, KKBOX’s audio app on iOS, but then we removed them, since they are conflicting with some popular in-car system.

Continue reading

Posted in Code, iOS | Tagged , | Leave a comment

使用 Slather 產生 iOS/Mac 專案的單元測試覆蓋率報告

在 Xcode 6 以及之前的版本中,如果你使用蘋果內建在 Xcode 當中的 OCUnit/XCUnit 等測試框架撰寫單元測試的話,Xcode 會在測試的過程中產生 gcc 格式的覆蓋率(coverage)報告,叫做 gcda (意思是 gcov data file)檔案;如果我們想將產生測試覆蓋率的流程整合到 Jenkins 等持續整合系統中,我們可以用 gonvr 等工具,將測試報告轉換成 XML 或 HTML 格式,這將我們就可以在系統中,看到每個 build 的覆蓋圖表,以及覆蓋率變化的趨勢。

但是在 Xcode 7 之後,蘋果將 gcc 的工具換成 llvm 的工具,這種幾年前的方案便變得不敷使用。在 Xcode 7 中,雖然我們可以指定要求產生 gcc 格式的覆蓋率檔案,似乎可以與我們過去的工作流程相容,但是產生出來的結果非常不準確;而蘋果的立場大概是,反正 Xcode Server 可以正確顯示覆蓋率報告,如果你用的不是 Xcoder Server,他們就不管了。而現在要將 Xcode 7 中 llvm 工具產生出來的報告,轉換成 XML/HTML 等格式,我們大概會選擇 Slather

Slather 是一套用 Ruby 開發的 command line 工具,是 llvm-cov 工具的前端,我們可以使用 gem install slather 指令安裝。

Continue reading

Posted in Code, iOS, Mac | Tagged , , , , , |