前提需要导入<AVFoundation/AVFoundation.h>框架

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
#import "CXDAudioTool.h" //自定义播放工具类,根据传入音频文件名,设置声音@interface ViewController ()@property (nonatomic, assign) SystemSoundID soundID;/** 存放音效文件 */
@property (nonatomic, strong) NSMutableDictionary *soundIDs;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];
}- (IBAction)buyao {[CXDAudioTool playSoundWithSoundname:@"buyao.wav"];
}- (IBAction)bigWang:(id)sender {[CXDAudioTool playSoundWithSoundname:@"m_17.wav"];
}- (IBAction)smallWang:(id)sender {[CXDAudioTool playSoundWithSoundname:@"m_16.wav"];
}#pragma mark - 点击屏幕背景音效
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{AudioServicesPlayAlertSound(self.soundID);
}///懒加载
- (SystemSoundID)soundID
{if (_soundID == 0) {// 根据音效文件,来生成SystemSoundIDNSURL *url = [[NSBundle mainBundle] URLForResource:@"win.aac" withExtension:nil];CFURLRef urlRef = (__bridge CFURLRef)(url);AudioServicesCreateSystemSoundID(urlRef, &_soundID);}return _soundID;
}///懒加载
- (NSMutableDictionary *)soundIDs
{if (_soundIDs == nil) {_soundIDs = [NSMutableDictionary dictionary];}return _soundIDs;
}@end

以下是自定义工具类 CXDAudioTool

#import <Foundation/Foundation.h>@interface CXDAudioTool : NSObject+ (void)playSoundWithSoundname:(NSString *)soundname;@end

#import "CXDAudioTool.h"
#import <AVFoundation/AVFoundation.h>@implementation CXDAudioToolstatic NSMutableDictionary *_soundIDs;+ (void)initialize
{_soundIDs = [NSMutableDictionary dictionary];
}+ (void)playSoundWithSoundname:(NSString *)soundname
{// 1.定义SystemSoundIDSystemSoundID soundID = 0;// 2.从字典中取出对应soundID,如果取出是nil,表示之前没有存放在字典soundID = [_soundIDs[soundname] unsignedIntValue];if (soundID == 0) {CFURLRef url = (__bridge CFURLRef)[[NSBundle mainBundle] URLForResource:soundname withExtension:nil];AudioServicesCreateSystemSoundID(url, &soundID);// 将soundID存入字典
        [_soundIDs setObject:@(soundID) forKey:soundname];}// 3.播放音效
    AudioServicesPlaySystemSound(soundID);
}@end

ps:文件需要自己导入

转载于:https://www.cnblogs.com/chixuedong/p/5370070.html

iOS之播放音效(AVFoundation)相关推荐

  1. ios微信h5棋牌游戏自动播放音效填坑

    开发中不可避免遇到一些ios和安卓适配的坑: ios不可以自动播放音乐的机制,使一些h5游戏播放背景音乐和音效无法播放: 正常情况下ios只允许用户自己去打开音效.但是这样的机制并不适合很多项目.而去 ...

  2. iOS录音播放简例-AVFoundation

    iOS录音播放简例-AVFoundation 本例简单介绍一个demo,录制一段声音,再播放它,用的是AVFoundation框架. 一.添加AVFoundation框架,在.m文件中引入 #impo ...

  3. iOS开发 AudioServices(音效播放)的使用

    一.介绍 AudioToolbox.framework是一套基于C语言的框架,使用它来播放音效其本质是将短音频注册到系统声音服务(System Sound Service).System Sound ...

  4. iOS开发——播放系统音效、自定义音效

    播放系统音效.自定义音效工具类 需求大致分为三种: 1.震动 2.系统音效(无需提供音频文件) 3.自定义音效(需提供音频文件) 我的工具类的封装: // // WQPlaySound.h // WQ ...

  5. iOS音频播放(一):概述

    (本文转自码农人生) 前言 从事音乐相关的app开发也已经有一段时日了,在这过程中app的播放器几经修改,我也因此对于iOS下的音频播放实现有了一定的研究.写这个 系列的博客目的一方面希望能够抛砖引玉 ...

  6. iOS音频播放 (一):概述 转

    2019独角兽企业重金招聘Python工程师标准>>> 基础 先来简单了解一下一些基础的音频知识. 目前我们在计算机上进行音频播放都需要依赖于音频文件,音频文件的生成过程是将声音信息 ...

  7. iOS 音频播放,录音,视频播放,拍照,视频录制

    iOS开发系列--音频播放.录音.视频播放.拍照.视频录制 2014-12-26 09:15 by KenshinCui, 149110 阅读, 67 评论, 收藏, 编辑 --iOS多媒体 概览 随 ...

  8. 视频直播APP源码开发iOS音频播放流程

    视频直播APP源码开发iOS音频播放流程 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的, ...

  9. iOS音频播放 (二):AudioSession 转

    原文出处 :http://msching.github.io/blog/2014/07/08/audio-in-ios-2/ 前言 本篇为<iOS音频播放>系列的第二篇. 在实施前一篇中所 ...

最新文章

  1. 写代码神器!双屏敲代码飞起,包邮送一台!
  2. 增加ESXI中虚拟机CENTOS系统分区容量
  3. 青海省计算机应用能力考试,青海省2015年职称计算机应用能力考试西宁考区四月份考试安排通知...
  4. php自动分配,PHP上传文件时自动分配路径的方法_php技巧
  5. angular微信支付实际url地址不同
  6. 左右无缝轮播图的实现
  7. shiro+redis多次调用doReadSession方法的解决方案
  8. 图说苹果工作站-MAC PRO
  9. [thinkphp 5.0源码阅读] 缓存(一)
  10. mysql char(36)_MySQL中char(36)被認為是GUID導致的BUG及解決方案
  11. jquery学习之$(document).ready()
  12. 小程序 图片显示模式详解
  13. 数据库原理 | 第1章 概述
  14. 移动端H5页面在ios设备上软键盘顶起页面后隐藏,页面不回弹的解决方案
  15. java锟斤拷锟斤拷锟_锟斤拷?UTF-8与GBK互转乱码问题
  16. c语言24小时制转化12,在C ++中将时间从24小时制转换为12小时制
  17. 【WebGIS】leaflet入门-自定义MarkerIcon
  18. uni-app中uni-ui组件库的使用
  19. Hadoop HIPI
  20. 蜂鸟E203软件环境的搭建(一)

热门文章

  1. python3列表推导式
  2. 基于 abp vNext 和 .NET Core 开发博客项目 - 定时任务最佳实战(三)
  3. 视图插入数据_数据库DQL、DML、DDL、DCL 详解
  4. 单片机检测stc没反应_stc单片机无法烧录,一直正在检测目标单片机怎么办?
  5. Oracle 原理:逻辑备份和恢复
  6. linux踩内存内存越界,Linux如何调试内存泄漏?超牛干货奉献给你(代码全)
  7. 电脑如何测网速_Macbook Pro怎么查看网速Mac怎么测网速?
  8. Linux / argv、environ 和 env 的联系
  9. TCP/IP / 如何进行流量控制( flow control )?
  10. 启明云端分享|ESP32-S3 Smartconfig一键配网