IOS成长之路-使用系统默认声音、震动

xiaoxiao2021-02-27  305

导入框架:

代码:

[cpp]  view plain  copy #import <UIKit/UIKit.h>   #import <AudioToolbox/AudioToolbox.h>      @interface MsgPlaySound : NSObject   {       SystemSoundID sound;//系统声音的id 取值范围为:1000-2000   }   - (id)initSystemShake;//系统 震动   - (id)initSystemSoundWithName:(NSString *)soundName SoundType:(NSString *)soundType;//初始化系统声音   - (void)play;//播放   @end   [cpp]  view plain  copy #import "MsgPlaySound.h"      @implementation MsgPlaySound      - (id)initSystemShake   {       self = [super init];       if (self) {           sound = kSystemSoundID_Vibrate;//震动       }       return self;   }      - (id)initSystemSoundWithName:(NSString *)soundName SoundType:(NSString *)soundType   {       self = [super init];       if (self) {           NSString *path = [NSString stringWithFormat:@"/System/Library/Audio/UISounds/%@.%@",soundName,soundType];           //[[NSBundle bundleWithIdentifier:@"com.apple.UIKit" ]pathForResource:soundName ofType:soundType];//得到苹果框架资源UIKit.framework ,从中取出所要播放的系统声音的路径           //[[NSBundle mainBundle] URLForResource: @"tap" withExtension: @"aif"];  获取自定义的声音           if (path) {               OSStatus error = AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&sound);                              if (error != kAudioServicesNoError) {//获取的声音的时候,出现错误                   sound = nil;               }           }       }       return self;   }      - (void)play   {       AudioServicesPlaySystemSound(sound);   }  

apple系统默认声音名称说明:(此说明来自于http://bbs.weiphone.com/read-htm-tid-6262661.html)

1.声音格式是MP3或m4r的需要转成caf格式(可先转成aif , aiff,然后修改后缀) 2.路径在/System/Library/Audio/UISounds 里,需要更改的可以根据以下列表进行替换 3详细列表: 信息  ReceivedMessage.caf--收到信息,仅在短信界面打开时播放。  sms-received1.caf-------三全音  sms-received2.caf-------管钟琴  sms-received3.caf-------玻璃  sms-received4.caf-------圆号  sms-received5.caf-------铃声  sms-received6.caf-------电子乐  SentMessage.caf--------发送信息  邮件  mail-sent.caf----发送邮件  new-mail.caf-----收到新邮件  电话  dtmf-0.caf----------拨号面板0按键  dtmf-1.caf----------拨号面板1按键  dtmf-2.caf----------拨号面板2按键  dtmf-3.caf----------拨号面板3按键  dtmf-4.caf----------拨号面板4按键  dtmf-5.caf----------拨号面板5按键  dtmf-6.caf----------拨号面板6按键  dtmf-7.caf----------拨号面板7按键  dtmf-8.caf----------拨号面板8按键  dtmf-9.caf----------拨号面板9按键  dtmf-pound.caf---拨号面板#按键  dtmf-star.caf------拨号面板*按键  Voicemail.caf-----新语音邮件  输入设备声音提示  Tock.caf-----------------------点击键盘  begin_record.caf-----------开始录音  begin_video_record.caf--开始录像  photoShutter.caf------------快门声  end_record.caf--------------结束录音  end_video_record.caf-----结束录像  其他  beep-beep.caf--充电、注销及连接电脑  lock.caf------------锁定手机  shake.caf---------“这个还没搞清楚”  unlock.caf--------滑动解锁  low_power.caf--低电量提示  语音控制  jbl_ambiguous.caf--找到多个匹配  jbl_begin.caf------等待用户的输入  jbl_cancel.caf-----取消  jbl_confirm.caf----执行  jbl_no_match.caf---没有找到匹配  日历  alarm.caf--日历提醒  iPod Touch 1G  sq_alarm.caf  sq_beep-beep.caf  sq_lock.caf  sq_tock.caf 

/************************************/

在需要声音的类的.h文件中添加     #import <AudioToolbox/AudioToolbox.h> static SystemSoundID shake_sound_male_id = 0; -(void) playSound {     NSString *path = [[NSBundle mainBundle] pathForResource:@"shake_sound_male" ofType:@"wav"];     if (path) {         //注册声音到系统         AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&shake_sound_male_id);         AudioServicesPlaySystemSound(shake_sound_male_id); //        AudioServicesPlaySystemSound(shake_sound_male_id);//如果无法再下面播放,可以尝试在此播放     }          AudioServicesPlaySystemSound(shake_sound_male_id);   //播放注册的声音,(此句代码,可以在本类中的任意位置调用,不限于本方法中)      //    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);   //让手机震动

/******************************************************************************************************************************************/

主要我们收到订单推送时,要设置声音提示,注意一定要开启background modes ,不然app在后台时收不到声音,会变成系统声音

首先一定要调用静态库#import <AudioToolbox/AudioToolbox.h>

 

设置代码如下,在收到订单推送的地方判断

   //音效文件路径

    NSString *path = [[NSBundle mainBundlepathForResource:@"haoyebao" ofType:@"wav"];

这里是指你的音乐名字和文件类型

    NSLog(@"path---%@",path);

    //组装并播放音效

    SystemSoundID soundID;

    NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];

    AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID);

    AudioServicesPlaySystemSound(soundID);

 

2.如果要设置消息收到时显示系统声音,那么就设置在收到消息的地方开启声音

  //设置声音,其中1312是系统声音编号,可以选择你喜欢的

//     AudioServicesPlaySystemSound(1312);

转载请注明原文地址: https://www.6miu.com/read-2152.html

最新回复(0)