2014年12月15日 星期一

在iOS App實作Airplay Audio功能

前言

由於Airplay開發者能控制的部分還不多,所以只能透過在自訂播放介面加入MPVolumeView的方式開啟Airplay的功能。

實作

如果需要包含內建的音量控制元件

MPVolumeView *volumeView = [ [MPVolumeView alloc] init] ;
[view addSubview:volumeView];

如果不需要

MPVolumeView *volumeView = [ [MPVolumeView alloc] init] ;
[volumeView setShowsVolumeSlider:NO];
[volumeView sizeToFit];
[view addSubview:volumeView];

在iOS裡聲音可以分為兩大類,App sound跟System sound,System sound做為按鍵回饋或是警示聲使用,剩下的就是App sound。在MPVolumeView選擇了Airplay裝置之後,系統會自動把App sound導到支援Airplay的裝置上。

在iOS7,MPVolumeView新增了兩個property

@property areWirelessRoutesAvailable;  
@property isWirelessRouteActive; 

以及兩個通知

NSString *const MPVolumeViewWirelessRoutesAvailableDidChangeNotification;  
NSString *const MPVolumeViewWirelessRouteActiveDidChangeNotification; 

可以偵測到有airplay以及使用者改變了airplay route,如果想要在偵測到可以使用Airplay裝置時加入動畫這會是一個好的實作方法。

2014年11月26日 星期三

iOS作業系統分佈情況

在開發App之前,通常會針對目前版本分布的狀況選擇要兼容到幾版,以前都不知道要去哪看,其實Apple自己就有提供這樣的資料。
https://developer.apple.com/support/appstore/
這是最近的分布情況,可以發現iOS7跟iOS8大概差不了太多。
iOS version pic

2014年11月13日 星期四

路跑相片自動辨識

跑馬的人喜歡看照片

最近趁著還沒上班前閒著無聊,就嘗試做看看之前一直很想做的路跑相片自動辨識。說實在自己也只參加過兩場路跑,但是跑完後想找到自己的照片可不是一件容易的事。雖然運動筆記相簿有提供號碼布搜尋,但通常是透過人工tag的方式,會需要一些時間去處理,沒有這麼即時。

自動化工具可以幹嘛?

雖然我不清楚運動筆記請小幫手tag相簿的流程,但是自動化工具基本上可以將一些號碼非常清楚且可辨識的相片自動標上號碼跟其他資料一起匯入資料庫內,如此一來將可以節省相當多的人力,小幫手只要去負責標出那些機器難以辨別的情況就好。

我還是不懂你在說什麼耶?

那來看個 demo影片好了

那到底什麼時候才能用?

因為我主攻不是影像處理,所以目前這支程式的辨識率還不是很高,也許等之後成熟一點再放出來吧。

2014年11月10日 星期一

Xcode 6.1拿掉class prefix

http://scottberrevoets.com/2014/07/25/objective-c-prefixes-a-thing-of-the-past/

從Xcode 6.1之後Apple拿掉了class prefix的選項,目前只有framework需要class prefix,剩下的app code以及新的swift都不需要。

2014年11月8日 星期六

iOS app development tools

Third-Party Library Management

CocoaPods

Crash Report

Crashlytics

Test framework

objective-c: Specta+Expecta、kiwi
swift: Quick

UI Test

FBSnapShots

Version Control

Gilt

Issue tracking

Redmine、Jira、Taiga

Continuous Integration

Jenkins via virtualbox
http://blog.hsatac.net/2014/06/install-osx-mavericks-on-virtualbox/

Server Deployment

Docker

Xcode Plugin Management

Alcatraz

Debug

Faux Pas 、Deploymate