最近要做一个项目,需要持续响铃并振动,知道有私有api可以使用,但无奈要上线,为了保险起见,果断放弃,在网上找了一个方法可以实现如下:
需要导入头文件:
#import <AudioToolbox/AudioToolbox.h>
在播放振动的代码前面注册写下面一句代码:
1 AudioServicesAddSystemSoundCompletion(kSystemSoundID_Vibrate, NULL, NULL, soundCompleteCallback, NULL);
其中soundCompleteCallback为播放系统振动或者声音后的回调,可以在里面继续播放振动实现持续振动的功能如下:
1
2
3
4
|
void soundCompleteCallback(SystemSoundID sound,voidvoid * clientData) {
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); //震动
AudioServicesPlaySystemSound(sound);
} |
但是问题来了,如何停止,其实之前我参考了别人做的,是直接调用如下代码停止:
1
2
3
|
AudioServicesRemoveSystemSoundCompletion(sound); AudioServicesDisposeSystemSoundID(sound); AudioServicesRemoveSystemSoundCompletion(kSystemSoundID_Vibrate); AudioServicesDisposeSystemSoundID(kSystemSoundID_Vibrate); |
直接拷贝工程可用:
1 @interface ViewController () 2 { 3 SystemSoundID sound; 4 } 5 //振动计时器 6 @property (nonatomic,strong)NSTimer *_vibrationTimer; 7 @end 8 9 @implementation ViewController 10 @synthesize _vibrationTimer; 11 12 - (void)viewDidLoad { 13 [super viewDidLoad]; 14 // Do any additional setup after loading the view, typically from a nib. 15 16 } 17 //开始响铃及振动 18 -(IBAction)startShakeSound:(id)sender{ 19 20 NSString *path = [[NSBundle mainBundle] pathForResource:@"2125" ofType:@"wav"]; 21 AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &sound); 22 AudioServicesAddSystemSoundCompletion(sound, NULL, NULL, soundCompleteCallback, NULL); 23 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 24 AudioServicesPlaySystemSound(sound); 25 26 27 /** 28 初始化计时器 每一秒振动一次 29 30 @param playkSystemSound 振动方法 31 @return 32 */ 33 _vibrationTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(playkSystemSound) userInfo:nil repeats:YES]; 34 } 35 //振动 36 - (void)playkSystemSound{ 37 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 38 } 39 //停止响铃及振动 40 -(IBAction)stopShakeSound:(id)sender{ 41 42 [_vibrationTimer invalidate]; 43 AudioServicesRemoveSystemSoundCompletion(sound); 44 AudioServicesDisposeSystemSoundID(sound); 45 46 } 47 //响铃回调方法 48 void soundCompleteCallback(SystemSoundID sound,void * clientData) { 49 AudioServicesPlaySystemSound(sound); 50 }
相关推荐
IOS 后台的可持续定位,遵循苹果的机制,后台会10分钟唤醒一次,给10S的执行时间,然后关闭。这样一直循环。
最新后台持续定位,想定多久就定多久。支持最新ios8.
location驱动ios12.4 ios12.3 ios12.2 ios12.1 ios12.0 ios11.0 ios11.4
微信(v6.2.0.19)ios6停更版
ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧...
iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16...
ios 录屏开发 支持 ios9 ios10 ios11
iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS ...
Unity 振动插件3.4.1适配安卓ios
网页模板——基于jQuery仿ios5 通知中心弹出振动插件效果
HBuilderX申请iOS证书在线打包iOS文档,介绍iOS证书的申请及打包过程!
iOS 10 App Development Essentials: Learn to Develop iOS 10 Apps with Xcode 8 and Swift 3 Author: Neil Smyth Length: 816 pages Edition: 1 Language: English Publisher: CreateSpace Independent Publishing...
高仿IOS ScrollView,可持续上下拉,橡皮筋效果
ios项目适配ios6 ios7 注重页面属性的修改。
IOS AES 加密 IOS AES 加密 IOS AES 加密 IOS AES 加密 IOS AES 加密
ios画板源码ios画板源码ios画板源码ios画板源码ios画板源码
C语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 IOS.HC语言头文件 ...
iOS 10 in Swift 3 非常好的ios书! 非常好的ios书! 非常好的ios书! 非常好的ios书! 非常好的ios书! 非常好的ios书!
xcode支持iOS15.2和iOS15.4