最近要做一个项目,需要持续响铃并振动,知道有私有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系统中,后台持续定位是一项关键功能,尤其对于那些依赖实时地理位置信息的应用,如导航、运动追踪等。为了理解这一功能,我们首先需要探讨iOS的App生命周期和苹果的能源效率策略。 iOS的设计理念强调用户体验...
以下将详细介绍iOS 8后台持续定位的工作原理、实现方法以及相关的开发者策略。 **一、iOS 8后台定位服务** 1. **工作原理**:iOS 8后台定位服务允许应用在后台运行时持续获取用户的位置信息,即使应用被最小化或者...
除了基本的振动函数,高级功能可能包括自定义振动模式、振动强度控制、振动持续时间调整等。此外,考虑到性能优化,插件可能还内置了防止过度使用振动硬件的机制,以避免耗电和用户不适。 总结来说,"Unity 振动...
在iOS移动开发中,车牌号录入是一个常见的需求,特别是在交通管理、停车应用或者导航软件中。自定义键盘的使用能够提供更加便捷且符合用户习惯的输入体验。本篇将深入探讨如何在iOS中实现车牌号录入功能,并使用...
微信(v6.2.0.19)ios6停更版
如果你决定保持当前系统版本不变,但又想尝试iOS 17的新铃声,可以通过以下步骤操作: 1. 下载并解压名为“iOS 17新增铃声”的压缩包,确保你已经获取了所有新铃声的音频文件。 2. 连接你的iOS设备到电脑,使用...
iOS证书申请和HBuilderX在线打包流程 在iOS应用开发中,申请iOS证书是必不可少的一步骤,而HBuilderX提供了在线打包功能,简化了iOS应用的开发和发布流程。下面将详细介绍iOS证书的申请和HBuilderX在线打包流程。 ...
网页模板设计中,为了提供与iOS5设备类似的用户体验,开发者经常使用基于jQuery的插件来实现仿ios5通知中心的弹出振动效果。这个压缩包文件"网页模板——基于jQuery仿ios5 通知中心弹出振动插件效果.zip"包含了实现...
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旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧...
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 ...
描述中提到,“如果不想更新xcode9.3,运行项目在9.3的手机上面需要安装ios devicesupport 11.3”,这表明在使用特定版本的Xcode(这里是9.3)时,为了能够在运行iOS 11.3系统的设备上顺利运行和测试应用,需要添加...
这本书的反复强调“非常好”,暗示了其内容的深度和质量,对于想要提升iOS开发技能的开发者来说,无疑是一份宝贵的资源。 首先,Swift 3的主要改进包括语法的优化、类型安全的增强以及对API的更新。书中会详细介绍...
Xcode是Apple官方推出的集成开发环境(IDE),主要用于开发iOS、iPadOS、macOS、watchOS和tvOS等平台的应用程序。...开发者需要紧跟Apple的更新步伐,利用Xcode的工具和资源,持续优化他们的应用程序。
wii ios53 官方ios 专用 wii ios53 官方ioswii ios53 官方ios
在iOS应用开发过程中,真机调试是不可或缺的一个环节。它允许开发者在实际设备上测试应用程序,确保其在不同iOS版本和设备上的兼容性和性能。本文将深入探讨如何使用iOS真机调试包,特别是针对iOS 15.1、15.0、14.8...
《iOS Helper:苹果iOS系统的全能助手》 在iOS设备的使用过程中,用户常常会遇到各种问题,例如系统更新、数据管理、应用安装等。而"iOS Helper"正是为解决这些问题而设计的一款强大实用工具,专为苹果iOS系统提供...
总之,“最新iOS 17.0真机调试包”对于iOS开发者来说是非常重要的资源,它使得开发者能在iOS新版本发布之前就开始适配和测试,确保应用的质量和用户体验。配合Xcode的强大功能,以及对Objective-C和Swift的支持,...
一旦你有了AVAudioPlayer对象,就可以调用其`play`方法来播放声音: ```objc [audioPlayer play]; ``` 如果想要停止播放,调用`stop`方法: ```objc [audioPlayer stop]; ``` 接下来,我们讨论如何在iOS设备上实现...
在设置好测试脚本后,只需在Xcode中运行测试,`ios_monkey`就会开始执行。测试过程中,它会记录每个事件以及相应的结果,包括成功、失败或错误。开发者可以通过日志文件分析测试结果,找出问题所在。 5. **优点与...