iOS-使用AudioServices实现连续响铃震动

第一步,声明一个SystemSoundID,最好是私有属性,因为我们只需要重复一个soundID:

@interface ViewController ()

{

    SystemSoundID sound;

}

@end

第二步,使用AudioServicesCreateSystemSoundID获取一个soundID:

NSString *path = [[NSBundle mainBundle] pathForResource:@"ding" ofType:@"mp3"];

    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &sound);

*这里对铃声格式的要求没有搞清楚,应该是长度不超30s的都可以,大家可以自己尝试

第三步,写一个开始响铃的入口,并且添加SoundCompletion回调:

//开始响铃及振动

-(IBAction)startShakeSound:(id)sender{

    AudioServicesPlayAlertSound(sound);

     AudioServicesAddSystemSoundCompletion(sound, NULL, NULL, soundCompleteCallback, NULL);

}

//AudioServicesAddSystemSoundCompletion的回调函数

void soundCompleteCallback(SystemSoundID sound,void * clientData) {

    AudioServicesPlayAlertSound(sound);  //重复响铃震动

}

第四步,写一个结束响铃的方法:

//停止响铃及振动

-(IBAction)stopShakeSound:(id)sender{

    AudioServicesDisposeSystemSoundID(sound);

    AudioServicesRemoveSystemSoundCompletion(sound);

}

总结:看到网上很多人用计时器或者NSObject的performSelector方法实现,比较繁琐,直接使用alertsound和callback,简单四步就可以实现持续响铃。

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

推荐阅读更多精彩内容