皆さんおはこんにちばんは!星野Dです〜プロデューサーから承認を得て、今後はたま〜に技術的なことも掲載していきたいと思います!もし御覧の皆さんの中にiOS開発者の方もいらっしゃればすこしでもご参考になれたら嬉しいです(≧∇≦)
それでは今回はまずiOS版フェノグラムの目玉機能となり、多くの方々からご公表を頂きましたSOUND LIBRARYのバックグラウンド再生機能について少し語りたいと思います〜この機能はiOSは標準APIとして提供されていますので、実現に関してはさほど難しくありまえん。AVPlayerかAVAudioPlayerを利用すればほぼすぐにでも実現できます。(今回は時間の都合上、本当に「バックグラウンドで音を流す」だけを語ります。SOUND LIBRARYに対応している他の部分、例えばiOSのコントロールセンターから曲の再生制御とかの機能については今回は語りません。というか時間がなくて語れません^^;どうかご理解お願いします^^;)
まず一番最初にやっておくことは、Xcodeの設定で「Capabilities」→「Background Modes」をオンにして、Modesのところ「Audio and AirPlay」にチェックを入れます。これで「このアプリはバックグラウンドでも動作するよ」とOSに伝えます。
次にコーディング作業に入りますが、必要な場所に(例えばSOUND LIBRARY画面に入った時に)オーディオをバックグラウンドでも再生できるよう、AVAudioPlayerのオブジェクトをつくって、オーディオセッションを作ります。まずはヘッダーファイルで
………
#import <AVFoundation/AVFoundation.h>
を入れれば、バックグラウンド再生に使う一連のものが使えるようになります。次にプレイヤーオブジェクトとオーディオセッションをヘッダーファイルで定義されているクラス内に作ります。例えばフェノグラムではこのように作られています:
@interface MusicView : UIView {
@public
………
AVAudioPlayer *musicPlayer;
AVAudioSession *audioSession;
}
…………
@property (nonatomic, retain) AVAudioPlayer *musicPlayer;
………
@end