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,简单四步就可以实现持续响铃。

你可能感兴趣的:(iOS-使用AudioServices实现连续响铃震动)