首页 > 其他分享 >iOS开发,改变系统铃声音量和静音,并非媒体播放音量

iOS开发,改变系统铃声音量和静音,并非媒体播放音量

时间:2023-02-06 15:44:53浏览次数:34  
标签:volumeInvocation iOS avSystemControllerClass 音量 AVSystemController 静音 铃声


它可以让iPhone手机静音。但是,AVSystemController存在于私有Celestial框架中。由于UIKit引用了这个框架,因此仍然可以在不直接引用它的情况下使用该类。

 Apple禁止使用私有API,因此仅此一点就是个坏主意。鉴于此情况,可能会放弃这个想法,因为我认为它没有解决我的问题。它确实使声音静音,但是当我插入我的配件时,即使振铃音量设置为0,系统也会以最大音量发出声音。这让我相信解决问题的答案就在于MFI文件。 无论如何,这里是如何使用私有框架/api更改铃声(这将使你的应用程序在没有某种特殊许可的情况下被拒绝)。下面是让系统铃声音量改变(静音)的方法:

 方法一:

[[AVSystemController sharedAVSystemController] setVolumeTo:0 forCategory:@"Ringtone"];

 

方法二:

无需直接引用Celestial frameork / AVSystemController.h :

复制代码
- (void) setSystemVolumeLevelTo:(float)newVolumeLevel
{   
    Class avSystemControllerClass = NSClassFromString(@"AVSystemController");
    id avSystemControllerInstance = [avSystemControllerClass performSelector:@selector(sharedAVSystemController)];

    NSString *soundCategory = @"Ringtone";

    NSInvocation *volumeInvocation = [NSInvocation invocationWithMethodSignature:
                                      [avSystemControllerClass instanceMethodSignatureForSelector:
                                       @selector(setVolumeTo:forCategory:)]];
    [volumeInvocation setTarget:avSystemControllerInstance];
    [volumeInvocation setSelector:@selector(setVolumeTo:forCategory:)];
    [volumeInvocation setArgument:&newVolumeLevel atIndex:2];
    [volumeInvocation setArgument:&soundCategory atIndex:3];
    [volumeInvocation invoke];
}
复制代码

 

以上。

 

参考:https://stackoverflow.com/questions/6284402/how-to-disable-ios-system-sounds/

标签:volumeInvocation,iOS,avSystemControllerClass,音量,AVSystemController,静音,铃声
From: https://www.cnblogs.com/tangyuanby2/p/17095607.html

相关文章

  • iOS runtime 实战之关联对象(一)
    一、什么是关联对象1、关联对象的概念:associatedObject又称关联对象,把一个对象关联到另外一个对象身上,使两者能够产生联系,我们可以通过associatedObject来给分类扩展属性......
  • 7.7BIOS和引导
    程序的运行环境中,存在着名为BIOS(BasicInput/OutputSystem)的系统。BIOS存储在ROM中,是预先内置在计算机主机内部的程序。BIOS除了键盘、磁盘、显卡等基本控制程序外,还有......
  • 音频自动增益 与 静音检测 算法 附完整C代码
    前面分享过一个算法《音频增益响度分析ReplayGain附完整C代码示例》主要用于评估一定长度音频的音量强度,而分析之后,很多类似的需求,肯定是做音频增益,提高音量诸如此类做......
  • 动画学leetcode算法!分享iOSApp算法宝开发过程中的一些想法!
    初来乍到,很喜欢这里的分享氛围,观摩了很多大佬的文章,也分享下自己刚开发的一款App:算法宝。在算法宝App里一共制作了70个leetcode算法动画。目前全部免费,无广告。目前只支持......
  • iOS异常处理机制
    一.错误处理NSError在cocoa环境下,为了能够统一表示错误的种类和消息,可以使用类NSError,类NSError在Foundation/NSError.h中声明,NSError实例有时又成为错误对象。先看一个自......
  • 移动端跨平台开发框架概览(IOS / 安卓)
    前言在移动端开发项目中。开发资源不够时,同时由两个团队维护安卓和IOS两套原生APP是成本很高的。此时,就需要选择一个同时支持多平台的客户端开发框架,能够使用一套代码,编译......
  • vuex,state,mutations,actios,getters,mdoules
    vuex是做什么的vue组件之间进行数据传递还是比较麻烦的,所以我们使用一个vuex仓库,统一管理数据和状态通俗来说vuex就是专门为vue应用程序开发的状态管理模式,采用了集中式......
  • IOS打开对应后缀文件
    IOS打开对应后缀文件通过ShareExtension打开点击文件共享后出现的上方列表,如下图在info.plist中添加Documenttypes<key>CFBundleDocumentTypes</key> <array>......
  • axios二次封装,mock前端模拟后端接口
    axios二次封装封装request,然后不用每次遇到接口就使用axios进行调用接口。封装一个基地址,然后每次调用接口的时候,只用写出来自己的函数方法就好。我们基于脚手架进行封装......
  • axios 请求
    完整文档官网文档html<inputtype="file"multipleid="files"><buttononclick="postAxios()">上传文件s</button><pid="files_progress"style="width:0px;heig......