[CS193P] 第十六堂課摘要及心得筆記

在這一次的課程內容中,我們將看到如何在iPhone上操作多媒體相關的內容,包含播放音樂、音效還有影片。此外,還會順便談到要如何讓應用程式出現在設定的程式中,還請讀者們多加指教!
評論
評論

在這一次的課程內容中,我們將看到如何在 iPhone 上操作多媒體相關的內容,包含播放音樂、音效還有影片。此外,還會順便談到要如何讓應用程式出現在設定的程式中,還請讀者們多加指教!

聲音播放

一般來講,我們在 iPhone 平台上涉及聲音的操作大約可以歸類為以下幾種:

  • 播放音效
    • 按鍵聲
    • 提示音效
    • 操作的效果音效
  • 長度不固定的音樂檔(像是音樂或是 Podcast 等)
  • 線上串流的音訊
  • 錄音

而以上這些功能,在 iPhone 上大多是由 Core Audio 這套 Framwork 來達成,這套 Framework 包含了許多不同層級的功能,如下面所列:

較高層、包裝成簡單使用的介面:

  • System Sound API -- 簡短的音效播放
  • AVAudioPlayer 類別 -- ObjC 的音樂播放 API

低層級,需要花比較多功夫設定但提供較多的控制選項:

  • Audio Toolbox -- 播放和錄製音訊、串流播放
  • Audio Units -- 處理音效
  • OpenAL -- 3D 環繞效果

在我們的開發過程中,我們可以依照使用的情境來決定要用哪一種 API,但大多數的情況,我們可以單純的就直接使用包裝過、抽象化的 System Audio API 和 AVAudioPlayer 就可以了。

首先我們就先來看看 System Audio API,誠如上面所提及的,這一系列的 API 是用來播放較短的音效,也就是五秒鐘以內的聲音檔,具有以下特色:

  • 沒有重複播放
  • 沒有音量控制
  • 立刻播放
  • 僅限.caf/.aif/.wav 這幾種格式

而在使用上可以分為兩步驟,首先我們要先註冊音效,在透過註冊所得到的 ID 呼叫另外一函式播放。範例程式碼如下:

NSURL *fileURL = ... // 檔案位置 SystemSoundID myID; // 建立 ID  AudioServicesCreateSystemSoundID ((CFURLRef)fileURL, &myID); // 註冊音效 AudioServicesPlaySystemSound (myID); // 播放音效  AudioServicesDisposeSystemSoundID (myID); // 當記憶體不足時,刪除已註冊的音效

有趣的是,iPhone 預設有一組常數 kSystemSoundID_Vibrate 代表著 iPhone 振動的 ID,所以我們可以透過呼叫 AudioServicesPlaySystemSound (kSystemSoundID_Vibrate); 來讓手機振動。不過需要注意,由於硬體的缺乏,若是 iPod Touch 的話則不會有任何反應。

而當我們如果需要播放比較長的檔案時,就得借助 AVAudioPlayer 了!此類別具備了那些 Sound Audio API 所沒有提供的功能,像是循環播放、控制暫停播放或是同時播放數個音效等等。簡單的使用範例如下:

AVAudioPlayer *player; NSString *path = [[NSBundle mainBundle] pathForResource...]; NSURL *url = [NSURL fileURLWithPath:path]; player = [[AVAudioPlayer alloc] initWithContentsOfURL:url];

要注意的是,雖然他建立的時候使用的是 NSURL,但就如同 Sound Audio API 一樣,只支援本機端的檔案,並不能線上串流播放。至於何播放、暫停音樂時,只需要呼叫其 play 和 pause 方法就好了,相當的容易理解。

就如同大多數的 Cocoa Touch API 一樣,AVAudioPlayer 錄製音效

除了音效的播放之外,我們也可以透過 AVAudioRecorder 來錄製音效,使用的方式與上面的 AVAudioPlayer 相當類似:

AVAudioRecorder *recorder; NSError *error = nil; NSURL *url = [NSURL ...]; // 預計寫入的位置 recorder = [[AVAudioRecorder alloc] initWithURL:url settings:nil error:&error];

而錄製和暫停的方法名稱分別為 record 和 pause,只需要對建立好的 AVAudioRecorder 呼叫即可。而 delegate 的方法也幾乎跟 AVAudioPlayer 相同,在這邊筆者就不加詳述。

MediaPlayer

除了上述的幾個 API 之外,Cocoa Touch 也提供了 MediaPlayer 這個 Framework,讓我們能夠輕易的取用使用者所儲存在 iPhone 中的音樂資料和影片。

而就如同我們挑選照片時會使用 UIImagePickerController 一般,MPMediaPickerController 則是用來存取使用者的音樂。這個類別可以指定讓使用者挑選單一或是複數個影音資料,對於可挑選的影音資料也可以進行設定。而當使用者挑選完之後,則是會呼叫 delegate 方法 mediaPicker: didPickMediaItems: 來進行回傳。

經由 MPMediaPickerController 所回傳的會是 MPMediaItemCollection 物件,這個物件可以呈現播放清單、專輯等等,有興趣的讀者還請自行參考文件。

影片播放

在 iPhone 上若我們需要播放影片,必須透過 MPMoviePlayerController

</p> <h3>設定</h3> <p>

我們在 iPhone 內建的設定程式中可以看到許多軟體的設定選項,這些設定的選項會在我們將軟體安裝進 iPhone 時一併加入到設定程式中。背後的運作則是透過修改應用程式的 NSUserDefault 來對應用程式進行溝通。

雖然 iPhone OS 提供了一個統一的地方讓使用者作應用程式設定,但若是我們將所有的設定一股腦的統統放到其中,會造成整個 iPhone OS 的操作遲緩。因此 Apple 在他們的官方文件中建議,對於比較常用的選項,像是股票軟體的股票代碼、地圖軟體的顯示模式切換等,這一類的設定應該要直接放在應用程式中。而對於比較少修改的設定,像是 Safari 的搜尋引擎或是 E-Mail 帳號等,則就會適合放在設定程式中。

而我們要如何建立設定的介面呢?事實上,這些介面是系統自動建立的,我們並不需要做額外的設定,只需要在 XCode 中加入 Settings Bundle,裡面會包含著一個 root.plist,其中就會紀錄所需要建立的設定選項,包含 TextField、Switch 和 Slider 等等有支援。詳細的使用方式請參考官方的文件說明。

結論

這次的內容主要對於多媒體相關的 API 做概略性的介紹。在下一次的課程中,我們將學到如何使用 Bonjour 這套 Apple 所制定的網路協定來讓 iPhone 之間進行網路的互動,還請各位讀者繼續支持。

參考資源


零售業瘋跨域,深耕各式消費者的全零售時代到來!

PChome 24h 購物的 Z 世代及壯世代的用戶不斷增長,足見 PChome 24h 購物運用過去幾十年來的網路零售經驗穩紮穩打,以綜合型電商角色分眾溝通不同的消費者,豐富品牌風格調性,也把握客群黏著度。
評論
photo credit:爆米花數位
評論

根據資策會《 2021-2022 民生消費數據力大調查》報告,2022 年零售業在相關服務或產品的投資成長最大,從各個品牌的布局來看,這兩年零售業不斷推出新店型或是跨域結合,不管是原先產業別、市場、線上線下的界線都不斷被消弭,往全通路邁進。

跨產業-從女性搶攻家庭客 寶雅也賣五金、3C!

原先以美妝生活用品在女性市場打出一片天的寶雅,在去年也開始拓展旗下商品及服務,推出主打複合式居家用品的電商平台,更橫跨 3C 家電,此外更成立 Youtube 頻道《寶家 POYA HOME 》教導民眾如何運用商品自行解決居家修繕。

photo credit:Poyahome YouTube頻道
寶雅拓展觸角,從女性生活用品搶攻複合式居家用品市場,更開設 Youtube 頻道居家修繕教學。

跨市場-個人化需求激增 超商跨足生鮮快商務

看好個人化及小家庭需求,統一超商也開設 open now 便利快超市,以生鮮為主要販賣品項,擴大肉品、海鮮等生鮮商品,也與旗下 foodomo 串接外送服務,搶攻市區的生鮮需求,未來更可能複製類似店型更多進入社區。全家便利商店也跟進 711 開設社區生鮮便利新店型「 Famisuper 」,選址在台北市大安區及新竹竹北的住商混合都會區。新店型專攻小份量、易保存的生鮮商品,也配合都市生活習慣,包括冷凍法式料理及常溫酒櫃(紅酒、白酒、燒酒……)。另外近期也在板橋開設新店,更針對「快行動」、「懶商機」和「綠生活」等目標開發許多新服務,如首創 APP 訂便當功能,與在地商圈便當品牌合作,可以到全家取貨現做便當,除此之外也導入保溫餐食智能取貨櫃,讓保溫延長,不用擔心錯過用餐時段。此外也因疫情網購興盛,並開發了 EC 自助寄取功能,還有雙溫功能,讓民眾可以自助拿取包裹,減少等待時間。生鮮快商務市場越來越熱,零售商們也前仆後繼投入,紛紛針對都市型態消費推出新模式。

photo credit:shutterstock
為搶攻個人化及小家庭市場,統一超商與全家便利商店不斷開設新店型,也投入生鮮快商務市場。

跨線上線下-疫情渴望接觸 電商開店平台協助開拓全通路布局

電商開店平台 shopline 近期在台北誠品生活南西店開設實體概念店,集結30間人氣電商品牌,推出三個月快閃實體店,並根據不同波段推出不同主題,如第一波毛孩超市以寵物用品及品牌為主、第二波潮時尚伸展台以穿搭潮流品牌為主,第三波則以城市野餐為主題,販賣戶外露營野餐用品。此外各檔期也與公益團體合作,並搭配社群活動獲得 IP 贈品,企圖吸引更多消費者上門。一般消費者對於電商購買的疑慮就是沒有辦法接觸到實品, Shopline 的做法幫助電商品牌有實際接觸到消費者的機會,開發更多的消費者,對於品牌和電商平台而言是雙贏。

大型電商平台穩紮零售經驗 深耕跨域消費者

根據經濟部統計處的統計,電商市場的銷售成長率又優於整體零售業,原先以 3C 商品打下電商版圖的 PChome 24h 購物,近年來也不斷深耕各類消費者市場,根據內部觀察,35-44 歲的消費者躍升為今年消費最活躍的族群,年成長率近 30%;18-24 歲Z世代也有明顯成長,年成長率近 20%,2022 年整體消費者結構年輕化。掌握這些趨勢, PChome 24h購物也在接下來的檔期調整策略,深耕跨域消費者。以往用首創分會場的情境式購物吸引消費者,今年五月檔期又再進一步讓分會場界限消失,以不同角色類型的媽媽區分,給予消費者送禮建議,從 3C 到美妝通通都有,集結不同品類商品,在會場內也藉由產品跨域來滿足消費者不同需求!「520」5月20日檔期也將目標受眾擴及到所有想表達愛的對象,以柔性訴求來溝通跨域消費者,不同於過往市場單純向女性或媽媽背景的消費者喊話,有機會持續提升新客群。

photo credit:爆米花數位
PChome 24h 購物深耕各類消費族群,柔性訴求也是行銷溝通的重要策略之一。

除此之外, PChome 24h 購物今年也特別與皓式宅食工作室跨域合作,推出「藍帶主廚到你家」饗宴料理餐盒,讓消費者在今年母親節不用冒著疫情的危險出門慶祝,在家也能享受星級料理,滿足高消費族群的精緻味蕾。另外,也推出「 Lofi Mom 」特別企劃,將媽媽的叨念聲如「出來吃飯!」、「又把家當飯店!」等熟悉的語句融入 chill beats 中,搭配日系動畫並結合母親愛用好物進一步呈現商品,嶄新的跨域行銷手法令人耳目一新!

photo credit:爆米花數位
PChome 24h購物推出「Lofi Mom」特別企劃,結合媽媽的碎念及 Chill beats,引起異鄉遊子共鳴。

在這些操作下, PChome 24h 購物的 Z 世代及壯世代的用戶不斷增長,足見 PChome 24h 購物運用過去幾十年來的網路零售經驗穩紮穩打,以綜合型電商角色分眾溝通不同的消費者,豐富品牌風格調性,也把握客群黏著度。

無論是實體或是電商起家的零售業不斷在嘗試跨域,提供更多通路和服務,未來的全零售時代將會提供消費者什麼樣的新局面,讓我們拭目以待。

本文章內容由「爆米花數位」提供,經關鍵評論網媒體集團廣編企劃編審。