美文网首页&iOSiOS音视频
iOS-使用AudioServices实现连续响铃震动

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

作者: _敏哥哥_ | 来源:发表于2018-07-30 13:48 被阅读0次

    第一步,声明一个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实现连续响铃震动

        本文链接:https://www.haomeiwen.com/subject/ltcfvftx.html