AudioServices
歸屬AudioToolbox
框架,AudioToolbox
是更底層的音頻框架。
- 每個音頻文件都有唯一的SystemSoundID
typedef UInt32 SystemSoundID;
- 震動,iPod無法震動
CF_ENUM(SystemSoundID)
{
kSystemSoundID_Vibrate = 0x00000FFF
};
- 創建SystemSoundID
extern OSStatus
AudioServicesCreateSystemSoundID( CFURLRef inFileURL,
SystemSoundID* outSystemSoundID)
__OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
NSString *path = [[NSBundle mainBundle] pathForResource:@"videoChat_calling" ofType:@"mp3"];
NSURL *url = [NSURL fileURLWithPath: path];
SystemSoundID outSystemSoundID = 0;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &outSystemSoundID);
注意:文件類型填寫錯誤會crash。
- 注銷SystemSoundID
extern OSStatus
AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID)
__OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
- 播放帶震動的音頻
extern void
AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID)
__OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
extern void
AudioServicesPlayAlertSoundWithCompletion( SystemSoundID inSystemSoundID,
void (^__nullable inCompletionBlock)(void))
__OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);
- 播放音頻
extern void
AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)
__OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
extern void
AudioServicesPlaySystemSoundWithCompletion( SystemSoundID inSystemSoundID,
void (^__nullable inCompletionBlock)(void))
__OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);
- 錯誤類型
CF_ENUM(OSStatus)
{
kAudioServicesNoError = 0,
kAudioServicesUnsupportedPropertyError = 'pty?',
kAudioServicesBadPropertySizeError = '!siz',
kAudioServicesBadSpecifierSizeError = '!spc',
kAudioServicesSystemSoundUnspecifiedError = -1500,
kAudioServicesSystemSoundClientTimedOutError = -1501,
kAudioServicesSystemSoundExceededMaximumDurationError = -1502
};
提升代碼質量最神圣的三部曲:模塊設計(謀定而后動) -->無錯編碼(知止而有得) -->開發自測(防患于未然)