web-dev-qa-db-ja.com

ローカル通知用のカスタムサウンドを選択する

ローカル通知で再生するサウンドをどのように変更しますか?以下のコードを使用して、デフォルトのサウンドを再生します。

notif.soundName = UILocalNotificationDefaultSoundName;

だから、私はこれを以下で試しましたが、うまくいきませんでした。私は何をすべきか?ご協力いただきありがとうございます!

notif.soundName = @"sound.caf";
31
abcd

うまくいくはずです。サウンドが実際にアプリのバンドル内にあり、正しい形式(線形PCMまたはIMA4-iOS用にサウンドを変換する方法を説明しているほとんどどこでもその方法を説明)であり、30秒未満であることを確認します。

29

次を使用して、wavおよびmp3から変換できます。

afconvert -f caff -d LEI16@44100 -c 1 in.wav out.caf
37
Rafael Sanches

また、次のコマンドを使用してmp3をcafに変換しようとしました:

afconvert clockalarm.mp3 clockalarm.caf -d ima4 -f caff -v

ここの1つのレッスン:ローカル通知の音に苦労するために数時間を費やしました。異なるビットレートとフォーマットで変換しようとしました。しかし、ついに、iOS 6.1エミュレーターに欠陥があるに違いないことがわかりました。コードをデバイスに展開しましたが、うまく機能しますが、エミュレーターでは音がしません。

16
Mason Zhang

私はこれらすべての問題に出くわし(回答に感謝)、. wavから.caf(6.1シミュレーター)に変換することで問題を解決することができました。最後に必要なことは、.cafがアプリのバンドルに含まれていることを確認することでした。これを確認/修正するには...

[Project Navigator]でファイルを右クリックし、[Show File Inspector]を選択して、[Target Membership]エリアでプロジェクトの横にチェックマークが付いていることを確認します。私の場合、「LocalNotificationExampleTests」がチェックされた唯一のアイテムでした。 「LocalNotificationExample」にチェックマークを付けると、デバイスで音が聞こえなくなる問題が修正されました。

8
Robert George

Swiftの場合、通知スケジューリング機能のnotifオブジェクトにUNNotificationSound.initを使用します。

Swiftの例を次に示します。

func scheduleNotifications(inSeconds: TimeInterval, completion: @escaping (_ Success: Bool) ->()){
        ...
        notif.sound = UNNotificationSound.init(named: "CustomSound.mp3") 
        ...
}

Appleによると、最後のメモ:「サウンドファイルは、アプリのバンドルまたはアプリのデータコンテナーのLibrary/Soundsフォルダーに含まれている必要があります。両方の場所にファイルがある場合、〜/ Library/Soundsのファイルが優先されます。 」

2
Repose