やること
既存のiOSプロジェクトの通知用にカスタム警告音を作成し、実際に動作するところまでの手順を説明します。
- iOSアプリのPush通知音の作成
- 既存プロジェクトに通知音ファイル設置
- コードの修正
1.iOSアプリのPush通知音の作成
まず、カスタム警告音で使用できるのは以下のオーディオフォーマットになります。
- リニアPCM
- MA4(IMA/ADPCM)
- μLaw
- aLaw
詳細はAppleの「LocalおよびPush Notificationプログラミングガイド」を読んでください。
大まかな作業の流れ
- GarageBandで音ネタを作成
- afconvertでaiffからcafフォーマットに変換
GarageBandで音ネタを作成
ここでは通知音の作成にはGarageBandを使います。
ここでの注意点は音の長さを30秒以内にすることです。音を作成したらメニューの「共有」>「曲をディスクに書き出し」で下記のような設定でファイルを書き出します。
ここまでで、aiffフォーマットによる音源作成が完了です。
afconvertでaiffからcafフォーマットに変換
次にaiffフォーマットからcafフォーマットに変換します。
Terminalを起動して、下記のように入力します。
[plain]
<pre>afconvert aiffファイルのパス 書き出したいファイルのパス -d ima4 -f caff
[/plain]
例えばこんな感じになります。
[plain]
%afconvert ~/Desktop/source.aiff ~/Desktop/target.caf -d ima4 -f caff
[/plain]
cafファイルが無事作成できたら30秒以内になっているか確認してください。
また、ファイルサイズが大きすぎないかも注意しておくと良いです。
参考までに、実際に作成したcafフォーマットのファイルを公開しておきます。
このようにしてcafフォーマットのカスタム警告音が作成できます。
既存プロジェクトに通知音ファイル設置
次に、cafファイルをXcodeに登録します。cafファイルをXcodeプロジェクトのSupporting Filesディレクトリ等にドラッグ&ドロップします。
そして、下記のような設定でFinishボタンを押して下さい。
これでcafファイルがあなたのプロジェクトに登録されました。あとはソースコードで通知の際に呼び出されるようにすればOKです。
コードの修正
ローカル通知の場合
UILocalNotificationインスタンスのsoundNameにファイル名を設定します。
[plain]
localNotif.soundName = @"test.caf";
[/plain]
今回の例ではファイルパスは考慮せず、ファイル名だけを指定するようにしてください。絶対パスなどで設定してもうまくいかないと思います。
リモート通知の場合
APNsから下記のようなペイロードを受信できるようにします。
[plain]
{
"aps" : {
"alert" : "Push Test"
"sound" : "test.caf"
}
[/plain]
あとは、実機にアプリをインストールして動作確認してください。
iPhone等がミュート状態になっていないことをお忘れなく。