[最新版]iOSで使用可能なSystem SoundのID一覧
システムサウンドについてまとめました
システムサウンドの再生
システムサウンドを再生するには、AudioToolboxフレームワークを活用します。
システムサウンドはユニークなIDに関連付けられており、そのIDを指定することで再生します。
以下は、アプリにbundleされた音声ファイルをシステムサウンドとして利用するコードの例です。
import AudioToolbox
var soundID: SystemSoundID = 0
if let soundURL = Bundle.main.url(forResource: "sound", withExtension: "caf") {
AudioServicesCreateSystemSoundID(soundURL as CFURL, &soundID)
}
AudioServicesPlaySystemSound(soundID) // sound.cafファイルの再生
予め用意されたシステムサウンド
上記では、自ら用意した音声ファイルを用いた再生方法を示しましたが、iOSに予め用意されたシステムサウンドが複数あります。
例えば、IDに1001を指定すると、メール送信音を再生することができます。
しかし、Apple公式では、どのIDを指定すればどんなサウンドが再生されるのかの情報を提供していません。
よって、いくつかのサイトで公開されているようなSystemSoundIDの表を参考に必要なIDを取得し、これを指定する必要がありました。
iOSのバージョンとシステムサウンド
iOSはバージョン更新のたびにさまざまな機能が追加されていますが、その中で使用されているサウンドもどんどん増えています。
これらの追加されたサウンドにも、対応するSystemSoundIDが存在しますが、どのサイトでも更新されたいませんでした。
(iOS7前後までの情報しか確認できませんでした)
そのため、iOS17が公開されたこれを機に、利用可能なSysystemSoundIDの一覧を取得しまとめておくことにしました。
[最新版]利用可能なSystemSoundID一覧
解析して使用可能なSystemSound一覧を取得しました。
1つの音声に対し、複数の番号が割り当てられているものもあります。
iOS16.0以降に関しては、どのiOSバージョンからそのIDが使用可能にあったのかを記載しております。
(15より前に追加された物に関しては、いつ追加されたのかを調べていません。気が向いたらやります。)
SystemSoundID | File Name | version |
---|---|---|
30 | ringback_tone_ansi.caf | |
31 | ringback_tone_cept.caf | |
32 | busy_tone_ansi.caf | |
33 | busy_tone_cept.caf | |
34 | call_waiting_tone_ansi.caf | |
35 | call_waiting_tone_cept.caf | |
36 | end_call_tone_cept.caf | |
37 | ringback_tone_hk.caf | |
38 | ringback_tone_aus.caf | |
39 | ringback_tone_uk.caf | |
1000 | new-mail.caf | |
1001 | mail-sent.caf | |
1002 | sms-received1.caf | |
1003 | ReceivedMessage.caf | |
1004 | SentMessage.caf | |
1005 | alarm.caf | |
1006 | low_power.caf | |
1007 | sms-received1.caf | |
1008 | sms-received2.caf | |
1009 | sms-received3.caf | |
1010 | sms-received4.caf | |
1012 | sms-received1.caf | |
1013 | sms-received5.caf | |
1014 | sms-received6.caf | |
1015 | sms-received1.caf | |
1016 | tweet_sent.caf | |
1017 | alarm.caf | |
1018 | Swish.caf | |
1020 | Anticipate.caf | |
1021 | Bloom.caf | |
1022 | Calypso.caf | |
1023 | Choo_Choo.caf | |
1024 | Descent.caf | |
1025 | Fanfare.caf | |
1026 | Ladder.caf | |
1027 | Minuet.caf | |
1028 | News_Flash.caf | |
1029 | Noir.caf | |
1030 | Sherwood_Forest.caf | |
1031 | Spell.caf | |
1032 | Suspense.caf | |
1033 | Telegraph.caf | |
1034 | Tiptoes.caf | |
1035 | Typewriters.caf | |
1036 | Update.caf | |
1050 | ussd.caf | |
1051 | SIMToolkitCallDropped.caf | |
1052 | SIMToolkitGeneralBeep.caf | |
1053 | SIMToolkitNegativeACK.caf | |
1054 | SIMToolkitPositiveACK.caf | |
1055 | SIMToolkitSMS.caf | |
1057 | Tink.caf | |
1060 | WebcamStart.caf | iOS16~ |
1070 | ct-busy.caf | |
1071 | ct-congestion.caf | |
1072 | ct-path-ack.caf | |
1073 | ct-error.caf | |
1074 | ct-call-waiting.caf | |
1075 | ct-keytone2.caf | |
1100 | lock.caf | |
1103 | Tink.caf | |
1104 | key_press_click.caf | |
1105 | Tock.caf | |
1106 | connect_power.caf | |
1107 | RingerChanged.caf | |
1108 | photoShutter.caf | |
1109 | shake.caf | |
1110 | jbl_begin.caf | |
1111 | jbl_confirm.caf | |
1112 | jbl_cancel.caf | |
1113 | begin_record.caf | |
1114 | end_record.caf | |
1115 | jbl_ambiguous.caf | |
1116 | jbl_no_match.caf | |
1117 | begin_record.caf | |
1118 | end_record.caf | |
1119 | camera_shutter_burst.caf | |
1120 | airdrop_invite.caf | iOS17~ |
1121 | camera_shutter_burst_begin.caf | |
1122 | camera_shutter_burst_end.caf | |
1123 | key_press_click.caf | |
1124 | focus_change_keyboard.caf | |
1125 | focus_change_app_icon.caf | |
1126 | focus_change_large.caf | |
1127 | focus_change_small.caf | |
1128 | navigation_push.caf | |
1129 | navigation_pop.caf | |
1130 | keyboard_press_normal.caf | |
1131 | keyboard_press_delete.caf | |
1132 | keyboard_press_clear.caf | |
1150 | vc~invitation-accepted.caf | |
1151 | vc~ringing.caf | |
1152 | vc~ended.caf | |
1153 | ct-call-waiting.caf | |
1154 | vc~ringing.caf | |
1155 | key_press_delete.caf | |
1156 | key_press_modifier.caf | |
1157 | wheels_of_time.caf | |
1158 | go_to_sleep_alert.caf | |
1159 | warsaw.caf | |
1160 | nfc_scan_complete.caf | |
1163 | access_scan_complete.caf | |
1165 | 3rd_party_critical.caf | |
1166 | PaymentReceived.caf | |
1167 | Doorbell.caf | iOS16~ |
1168 | PaymentReceivedFailure.caf | iOS16~ |
1200 | dtmf-0.caf | |
1201 | dtmf-1.caf | |
1202 | dtmf-2.caf | |
1203 | dtmf-3.caf | |
1204 | dtmf-4.caf | |
1205 | dtmf-5.caf | |
1206 | dtmf-6.caf | |
1207 | dtmf-7.caf | |
1208 | dtmf-8.caf | |
1209 | dtmf-9.caf | |
1210 | dtmf-star.caf | |
1211 | dtmf-pound.caf | |
1253 | DeviceShutdown.caf | iOS16~ |
1254 | long_low_short_high.caf | |
1255 | short_double_high.caf | |
1256 | short_low_high.caf | |
1257 | short_double_low.caf | |
1258 | short_double_low.caf | |
1259 | middle_9_short_double_low.caf | |
1260 | camera_timer_final_second.caf | |
1261 | camera_timer_countdown.caf | |
1262 | health_notification.caf | |
1263 | MultiwayJoin.caf | |
1264 | MultiwayLeave.caf | |
1265 | multiway_invitation.caf | |
1270 | PushToTalkJoined.caf | iOS16.2~ |
1271 | PushToTalkLeft.caf | iOS16.2~ |
1272 | PushToTalkUnmute.caf | iOS16.2~ |
1273 | PushToTalkMute.caf | iOS16.2~ |
1274 | PushToTalkUnmuteFail.caf | iOS16.2~ |
1275 | SenderConfirmation.caf | iOS17~ |
1276 | ReceiverConfirmation.caf | iOS17~ |
1277 | ReceiverConnect.caf | iOS17~ |
1300 | sms-received1.caf | |
1301 | ReceivedMessage.caf | |
1302 | new-mail.caf | |
1303 | mail-sent.caf | |
1304 | alarm.caf | |
1305 | lock.caf | |
1306 | key_press_click.caf | |
1307 | sms-received1.caf | |
1308 | sms-received2.caf | |
1309 | sms-received3.caf | |
1310 | sms-received4.caf | |
1312 | sms-received1.caf | |
1313 | sms-received5.caf | |
1314 | sms-received6.caf | |
1315 | sms-received1.caf | |
1317 | alarm.caf | |
1318 | Swish.caf | |
1320 | Anticipate.caf | |
1321 | Bloom.caf | |
1322 | Calypso.caf | |
1323 | Choo_Choo.caf | |
1324 | Descent.caf | |
1325 | Fanfare.caf | |
1326 | Ladder.caf | |
1327 | Minuet.caf | |
1328 | News_Flash.caf | |
1329 | Noir.caf | |
1330 | Sherwood_Forest.caf | |
1331 | Spell.caf | |
1332 | Suspense.caf | |
1333 | Telegraph.caf | |
1334 | Tiptoes.caf | |
1335 | Typewriters.caf | |
1336 | Update.caf | |
1340 | PINEnterDigit_AX.caf | iOS16~ |
1341 | PINDelete_AX.caf | iOS16~ |
1342 | PINSubmit_AX.caf | iOS16~ |
1343 | PINUnexpected.caf | iOS16~ |
1344 | PINEnterDigit.caf | iOS16~ |
1345 | PINDelete.caf | iOS16~ |
1360 | connect_power.caf | |
1361 | connect_power.caf | |
1362 | HeadphoneAudioExposureLimitExceeded.caf | |
1363 | HealthNotificationUrgent.caf | |
1364 | MicMute.caf | |
1365 | MicUnmute.caf | |
1366 | MicUnmuteFail.caf | |
1367 | ScreenSharingStarted.caf | |
1368 | MediaPaused.caf | |
1369 | MediaHandoff.caf | |
1370 | NavigationGenericManeuver.caf | |
1393 | ScreenCapture.caf | |
1394 | payment_success.caf | |
1395 | payment_failure.caf | |
1396 | acknowledgment_sent.caf | |
1397 | acknowledgment_received.caf | |
1398 | nfc_scan_failure.caf | |
1400 | Notification_Haptic.caf | |
1401 | Ringtone_US_Haptic.caf | |
1402 | Ringtone_UK_Haptic.caf | |
1403 | Alarm_Haptic.caf | |
1404 | SiriStart_Haptic.caf | |
1405 | SiriStopSuccess_Haptic.caf | |
1406 | SiriStopFailure_Haptic.caf | |
1407 | Stockholm_Haptic.caf | |
1408 | Beat_Haptic.caf | |
1410 | DoNotDisturb_Haptic.caf | |
1413 | Timer_Haptic.caf | |
1414 | NavigationLeftTurn_Haptic.caf | |
1415 | NavigationRightTurn_Haptic.caf | |
1416 | Detent_Haptic.caf | |
1417 | NavigationGenericManeuver_Haptic.caf | |
1418 | CameraCountdownTick_Haptic.caf | |
1419 | CameraCountdownImminent_Haptic.caf | |
1420 | ET_RemoteTap_Receive_Haptic.caf | |
1421 | ET_RemoteTap_Send_Haptic.caf | |
1422 | ET_BeginNotification_Haptic.caf | |
1424 | StockholmActive_Haptic.caf | |
1425 | StockholmActiveSingleCycle_Haptic.caf | |
1426 | StockholmFailure_Haptic.caf | |
1427 | SedentaryTimer_Haptic.caf | |
1428 | HourlyChime_Haptic.caf | |
1429 | Preview_AudioAndHaptic.caf | |
1430 | Alert_ActivityGoalAttained_Haptic.caf | |
1431 | Alert_ActivityGoalBehind_Haptic.caf | |
1432 | Alert_ActivityGoalClose_Haptic.caf | |
1433 | Alert_BatteryLow_10p_Haptic.caf | |
1434 | Alert_BatteryLow_5p_Haptic.caf | |
1435 | Alert_Calendar_Haptic.caf | |
1436 | Notification_Haptic.caf | |
1437 | Notification_Haptic.caf | |
1438 | Notification_Haptic.caf | |
1439 | Notification_Haptic.caf | |
1440 | Alert_PassbookBalance_Haptic.caf | |
1441 | Alert_PassbookGeofence_Haptic.caf | |
1442 | Alert_PhotostreamActivity_Haptic.caf | |
1443 | Alert_ReminderDue_Haptic.caf | |
1444 | Notification_Haptic.caf | |
1445 | Alert_WalkieTalkie_Haptic.caf | |
1446 | BatteryMagsafe_Haptic.caf | |
1447 | BuddyPairingFailure_Haptic.caf | |
1448 | BuddyPairingSuccess_Haptic.caf | |
1449 | CameraShutter_Haptic.caf | |
1450 | Alert_MapsDirectionsInApp_Haptic.caf | |
1451 | MessagesIncoming_Haptic.caf | |
1452 | MessagesOutgoing_Haptic.caf | |
1453 | OnOffPasscodeFailure_Haptic.caf | |
1458 | OrbLayers_Haptic.caf | |
1459 | PhoneHangUp_Haptic.caf | |
1460 | PhotosZoomDetent_Haptic.caf | |
1461 | QB_Dictation_Haptic.caf | |
1464 | StopwatchLap_Haptic.caf | |
1465 | StopwatchReset_Haptic.caf | |
1466 | StopwatchStart_Haptic.caf | |
1467 | StopwatchStop_Haptic.caf | |
1468 | TimerCancel_Haptic.caf | |
1469 | TimerPause_Haptic.caf | |
1470 | TimerStart_Haptic.caf | |
1471 | TimerWheelHoursDetent_Haptic.caf | |
1472 | WalkieTalkieActiveStart_Haptic.caf | |
1473 | WorkoutComplete_Haptic.caf | |
1474 | WorkoutCountdown_Haptic.caf | |
1475 | Alert_3rdParty_Haptic.caf | |
1476 | WorkoutSelect_Haptic.caf | |
1477 | WorkoutPressStart_Haptic.caf | |
1479 | TimerWheelMinutesDetent_Haptic.caf | |
1480 | PhoneAnswer_Haptic.caf | |
1481 | PhoneHold_Haptic.caf | |
1482 | WalkieTalkieActiveEnd_Haptic.caf | |
1484 | UISwitch_On_Haptic.caf | |
1485 | UISwitch_Off_Haptic.caf | |
1486 | UISwipe_Haptic.caf | |
1487 | SystemStartup_Haptic.caf | |
1488 | BuddyPairingRemoteConnection_Haptic.caf | |
1489 | BuddyPairingRemoteTap_Haptic.caf | |
1490 | QB_Dictation_Off_Haptic.caf | |
1491 | RingtoneDucked_US_Haptic.caf | |
1492 | RingtoneDucked_UK_Haptic.caf | |
1493 | SalientNotification_Haptic.caf | |
1494 | Notification_Salient_Haptic.caf | |
1495 | ET_BeginNotification_Salient_Haptic.caf | |
1496 | Alert_Calendar_Salient_Haptic.caf | |
1497 | Notification_Salient_Haptic.caf | |
1498 | Notification_Salient_Haptic.caf | |
1499 | Alert_ReminderDue_Salient_Haptic.caf | |
1500 | Notification_Salient_Haptic.caf | |
1501 | Alert_3rdParty_Salient_Haptic.caf | |
1502 | 3rdParty_DirectionUp_Haptic.caf | |
1503 | 3rdParty_DirectionDown_Haptic.caf | |
1504 | 3rdParty_Success_Haptic.caf | |
1505 | 3rdParty_Failure_Haptic.caf | |
1506 | 3rdParty_Retry_Haptic.caf | |
1507 | 3rdParty_Start_Haptic.caf | |
1508 | 3rdParty_Stop_Haptic.caf | |
1509 | Alarm_Nightstand_Haptic.caf | |
1510 | Alert_BatteryLow_5p_Salient_Haptic.caf | |
1511 | NavigationLeftTurn_Salient_Haptic.caf | |
1512 | NavigationRightTurn_Salient_Haptic.caf | |
1513 | NavigationGenericManeuver_Salient_Haptic.caf | |
1514 | SedentaryTimer_Salient_Haptic.caf | |
1515 | Alert_ActivityGoalAttained_Salient_Haptic.caf | |
1516 | Alert_ActivityGoalBehind_Salient_Haptic.caf | |
1517 | Alert_PassbookGeofence_Salient_Haptic.caf | |
1518 | WorkoutSaved_Haptic.caf | |
1522 | VoiceOver_Click_Haptic.caf | |
1523 | SiriAutoSend_Haptic.caf | |
1525 | HummingbirdCompletion_Haptic.caf | |
1526 | HummingbirdNotification_Haptic.caf | |
1527 | RemoteCameraShutterBurstBegin_Haptic.caf | |
1528 | RemoteCameraShutterBurstEnd_Haptic.caf | |
1529 | WorkoutPaused_Haptic.caf | |
1530 | WorkoutResumed_Haptic.caf | |
1531 | GoToSleep_Haptic.caf | |
1532 | Warsaw_Haptic.caf | |
1533 | AutoUnlock_Haptic.caf | |
1534 | Alert_ActivityFriendsGoalAttained_Haptic.caf | |
1535 | Alert_SpartanConnecting_Haptic.caf | |
1536 | Alert_SpartanConnecting_LowLatency_Haptic.caf | |
1537 | Alert_SpartanConnected_LowLatency_Haptic.caf | |
1538 | Alert_SpartanDisconnected_LowLatency_Haptic.caf | |
1543 | AccessScanComplete_Haptic.caf | |
1544 | BuddyMigrationStart_Haptic.caf | |
1545 | SOSFallDetectionPrompt_Haptic.caf | |
1546 | SOSEmergencyContactTextPrompt_Haptic.caf | |
1547 | WorkoutStartAutodetect.caf | |
1548 | WorkoutCompleteAutodetect.caf | |
1549 | WorkoutPausedAutoDetect.caf | |
1550 | WorkoutResumedAutoDetect.caf | |
1551 | WorkoutPaceAbove.caf | |
1552 | WorkoutPaceBelow.caf | |
1553 | WalkieTalkieReceiveStart_Haptic.caf | |
1554 | WalkieTalkieReceiveEnd_Haptic.caf | |
1555 | Alert_Health_Haptic.caf | |
1556 | MultiwayJoin.caf | |
1557 | MultiwayLeave.caf | |
1558 | MultiwayInvitation.caf | |
1559 | 3rd_Party_Critical_Haptic.caf | |
1560 | Alert_1stParty_Haptic.caf | |
1561 | HealthNotificationUrgent.caf | |
1563 | Siren_Countdown_Major_Haptic.caf | iOS16~ |
1564 | Siren_Countdown_Minor_Haptic.caf | iOS16~ |
1566 | Doorbell_Haptic.caf | iOS16~ |
1567 | System_Notification_Haptic.caf | |
1568 | SOSFallDetectionPromptEscalation_Haptic.caf | |
1570 | HealthReadingComplete_Haptic.caf | |
1571 | HealthReadingFail_Haptic.caf | |
1572 | HeadphoneAudioExposureLimitExceeded.caf | |
1573 | ScreenCapture.caf | |
1576 | PushToTalkJoined.caf | iOS16.2~ |
1577 | PushToTalkLeft.caf | iOS16.2~ |
1578 | PushToTalkUnmute.caf | iOS16.2~ |
1579 | PushToTalkMute.caf | iOS16.2~ |
1580 | PushToTalkUnmuteFail.caf | iOS16.2~ |
1581 | WorkoutPrecisionStart_Haptic.caf | iOS17~ |
1582 | IntervalEnded.caf | iOS16.2~ |
1583 | IntervalUpcoming.caf | iOS16.2~ |
1584 | Elevation.caf | iOS17~ |
1585 | SenderConfirmation.caf | iOS17~ |
1586 | ReceiverConfirmation.caf | iOS17~ |
1587 | ReceiverConnect.caf | iOS17~ |
3001 | SwTest1_Haptic.caf | iOS17~ |
もっと簡単にシステムサウンドを使いたい
サウンドIDからは実際にどんなサウンドなのか分かりずらいです。
そのため、使用可能なシステムサウンドをenumにまとめて、サウンド名を指定することで再生可能となるライブラリを作りました。
こんな感じで使用可能です。
import SystemSound
AudioServicesPlaySystemSound(.sentMessage)
これまではこんな感じに書く必要がありました。
AudioServicesPlaySystemSound(1004)
(at)available属性をつけて定義してあるので、もし使用できないOSバージョンで使用しようとするとエラーを吐いてくれるので安心して使用可能です。
終わりに
スターください。
Discussion
素晴らしい!
最近Swiftをさわり始めた者です
こちらのサイト大変ありがたく参考にさせていただいております
cafファイル名、カテゴリーとSystemSoundIDの紐付けを調べる方法を知りたいのですが
もし差し支えなければヒントでもいただけると嬉しいです
(厚かましいとは思っていますので...気が向かれたらで結構です)
ありがどうございます
CoreAudioフレームワークの中身に、IDをファイルパスに変換する関数があるので、それで変換していきました
教えていただき有難うございます
参考にさせていただきながらいろいろ試してみます