添加系统提示音

直接上步骤~
声音文件在这儿下载

1.引入头文件

#import <AVFoundation/AVFoundation.h>

2.声明全局的变量

/**
 设置两次响的时间最小时间间隔
 */
static const CGFloat kDefaultPlaySoundInterval = 3.0;
/**
 用于存储最后一次响声的时间
 */
@property (strong, nonatomic) NSDate *lastPlaySoundDate;

3.系统声音的添加以及播放

- (void)playSoundAndVibration{
    NSTimeInterval timeInterval = [[NSDate date]
                                   timeIntervalSinceDate:self.lastPlaySoundDate];
    if (timeInterval < kDefaultPlaySoundInterval) {
        //如果距离上次响铃和震动时间太短, 则跳过响铃
        NSLog(@"skip ringing & vibration %@, %@", [NSDate date], self.lastPlaySoundDate);
        return;
    }

    //保存最后一次响铃时间
    self.lastPlaySoundDate = [NSDate date];

    // 收到消息时,播放音频
    [self playNewMessageSound];
}
/**
 *  系统铃声播放完成后的回调
 */
void EMSystemSoundFinishedPlayingCallingback(SystemSoundID sound_id, void* user_data)
{
    AudioServicesDisposeSystemSoundID(sound_id);
}
// 播放接收到新消息时的声音
- (SystemSoundID)playNewMessageSound
{
    // 要播放的音频文件地址
    NSURL *audioPath = [[NSBundle mainBundle] URLForResource:@"in" withExtension:@"caf"];
    // 创建系统声音,同时返回一个ID
    SystemSoundID soundID;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)(audioPath), &soundID);
    // Register the sound completion callback.
    AudioServicesAddSystemSoundCompletion(soundID,
                                          NULL, // uses the main run loop
                                          NULL, // uses kCFRunLoopDefaultMode
                                          EMSystemSoundFinishedPlayingCallingback, // the name of our custom callback function
                                          NULL // for user data, but we don't need to do that in this case, so we just pass NULL
    );

    AudioServicesPlaySystemSound(soundID);

    return soundID;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,650评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,273评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,301评论 4 61
  • 女儿是个特别喜欢动物的孩子,依稀记得她上幼儿园的时候看动物世界,看到一头狮子在猎捕一只鹿,当她看到狮子一口咬死了鹿...
    宜轻晨阅读 285评论 2 2
  • 对于一个未婚女性,甚至只有一次寡淡恋爱经历的女性来说,可能立场不那么正确,但有什么关系,我只是站在一个未曾经历爱情...
    正解Z阅读 533评论 0 1