[最新版]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をファイルパスに変換する関数があるので、それで変換していきました
教えていただき有難うございます
参考にさせていただきながらいろいろ試してみます