iOS IM消息声音连声用延时解决
来源:互联网 发布:闪电精灵seo怎么样 编辑:程序博客网 时间:2024/04/30 04:43
最近做IM消息, 接受到很多消息时, 如果播放声音, 会造成持续的连声, 可以这样解决, 用延时来做, 记录下 !
//注册声音
- (void)registerSystemSound
{
NSString *path1 = [[NSBundlemainBundle] pathForResource:@"sendmsg"ofType:@"caf"];
NSString *path2 = [[NSBundlemainBundle] pathForResource:@"in"ofType:@"caf"];
//注册声音到系统
CFURLRef url1 = (__bridgeCFURLRef)[NSURLfileURLWithPath:path1];
AudioServicesCreateSystemSoundID(url1,&sendmsg_sound_id);
CFURLRef url2 = (__bridgeCFURLRef)[NSURLfileURLWithPath:path2];
AudioServicesCreateSystemSoundID(url2,&receive_sound_id);
}
//播放声音
- (void)playSound:(int)type
{if(_isSoundPlaying) {
return;
};
_isSoundPlaying = YES;
//这个是重点
[selfdelayExecutePlaySoundTimeInterval:20.fcompletionCallBack:^{
_isSoundPlaying = NO;
}];
//添加音频结束时的回调
AudioServicesAddSystemSoundCompletion(sendmsg_sound_id,NULL, NULL,completionCallback, (__bridgevoid *)(self));
AudioServicesPlaySystemSound(sendmsg_sound_id);
}
//这样是每次都要注册一个声音, 播放完就注销了, 个人不建议这么做, 这个注销的可以写在dealloc中, 就是声音只需要注册一次就够了
staticvoid completionCallback (SystemSoundID mySSID,void* clientData)
{
// 在播放结束后循环播放
// AudioServicesPlaySystemSound(mySSID);
// 移除完成后执行的函数
AudioServicesRemoveSystemSoundCompletion(mySSID);
// 释放声音对象以及相关的所有资源
AudioServicesDisposeSystemSoundID(mySSID);
}
//延时操作
-(void)delayExecutePlaySoundTimeInterval:(CGFloat)timeInterval completionCallBack:(void(^)(void))completionBlock {
dispatch_time_t popTime =dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeInterval *NSEC_PER_SEC));
dispatch_after(popTime,dispatch_get_main_queue(), ^(void){
completionBlock();
});
}
- iOS IM消息声音连声用延时解决
- ios-IM
- IM消息透传
- IM收发消息问题
- iOS开发中如何解决TableView中图片延时加载
- iOS开发中如何解决TableView中图片延时加载
- iOS开发中如何解决TableView中图片延时加载
- 解决vue在ios端下点击响应延时问题
- MQ发送延时消息
- iOS延时和取消延时
- IM模块-声音麦克风监控波动
- iOS设备播放mkv格式视频无声音解决
- 解决iOS程序耳机有声音,外放没声音的问题
- ios 环信im消息和极光推送 角标怎么累计,,
- im不丢消息设计
- IOS-播放声音,中断声音
- iOS-走进IM
- 解决ssh连接延时
- ListView 上下拉刷新
- automake
- iOS 上传图片和视频
- 8.1.2 在 C# 中把行为表示成函数
- Section 1.2 Complete Search
- iOS IM消息声音连声用延时解决
- hbase 相关问题及处理
- 一、在linux上构建tomcat
- ubuntu下使用SQLite3的基本命令
- c/c++基础(二十) 类的前向声明和#include区别
- 理解ThreadLocal
- C语言中char int转换问题
- ZOJ 3826 Hierarchical Notation 模拟
- 博客转战Github Pages,欢迎访问 http://hongfanqu.com/