Objective-C
WatchKit
AppleWatch
watchOS

WatchOS AppleWatch単体で録音する

More than 1 year has passed since last update.

WatchOS向けアプリでも録音可能なものはたくさんありました。
しかしバックグラウンド録音できないのか調査しましたが、AVAudioRecorderを使用すればできそうな感じでしたがAVAudioRecorder.hファイルは存在してましたがWatchOS3ではまだ記述されていませんでした。
再生に関するものは記述されているんですがAVAudioRecorderだけはまだ公式的に使用を認めてないみたいです。
しかしSceneKitで3Dモデルをアニメーションさせた時に定義が抜けている部分が多々あったのでiOSで記述されているものをそのまま補完させる形で追記すると問題なく動くので
AVAudioRecorderは実装はされているもののヘッダーファイルに記述されていないので使えないように見せかけているかもしれないです。

今回は単体で録音するために簡素にまとめておきます。

まず
1.AppGroupsの設定をする (アプリ間でファイルを共有するもの)

スクリーンショット 2016-12-10 16.26.30.png

スクリーンショット 2016-12-10 16.26.44.png

スクリーンショット 2016-12-10 16.26.51.png

2.ボタンを押した時などの処理に以下のコードを記述

InterfaceController.m
- (IBAction)buttonOnTouch
{
    NSURL *appGroupUrl = [fileManager containerURLForSecurityApplicationGroupIdentifier:@"group.nkawai.VoiceRecorder"];
    NSDictionary *dictMaxAudioRec = @{@"WKAudioRecorderControllerOptionsActionTitleKey":@"Store"};
    [self presentAudioRecorderControllerWithOutputURL:[appGroupUrl URLByAppendingPathComponent:@"test.m4a"] preset:WKAudioRecorderPresetWideBandSpeech options:dictMaxAudioRec completion:^(BOOL didSave, NSError * _Nullable error) {
    }];
}

3.presetについては下記の通り 主に録音する時の品質
https://developer.apple.com/reference/watchkit/wkaudiorecorderpreset?language=objc

4.optionsについては下記の通り
https://developer.apple.com/reference/watchkit/wkinterfacecontroller/1653555-audio_recording_options?language=objc