iOS-检测静默模式

iOS-检测静默模式,ios,objective-c,iphone,silent,Ios,Objective C,Iphone,Silent,我需要检测手机是否处于静音模式。我找到并(播放一个.caf文件),但没有一个工作正常。旧方法使用不推荐使用的工具,而新方法在这两种情况下(静默模式和非静默模式)总是给出“否” 在这一点上,有人能提出什么建议吗 试试下面的解决方案,并告诉我它是否适合您: -(BOOL)silenced { #if TARGET_IPHONE_SIMULATOR // return NO in simulator. Code causes crashes for some reason

我需要检测手机是否处于静音模式。我找到并(播放一个.caf文件),但没有一个工作正常。旧方法使用不推荐使用的工具,而新方法在这两种情况下(静默模式和非静默模式)总是给出“否”


在这一点上,有人能提出什么建议吗

试试下面的解决方案,并告诉我它是否适合您:

 -(BOOL)silenced {
     #if TARGET_IPHONE_SIMULATOR
         // return NO in simulator. Code causes crashes for some reason.
         return NO;
     #endif

    CFStringRef state;
    UInt32 propertySize = sizeof(CFStringRef);
    AudioSessionInitialize(NULL, NULL, NULL, NULL);
    AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state);
    if(CFStringGetLength(state) > 0)
            return NO;
    else
            return YES;

    }

看到这里,你可以在这里找到你的答案:@Anbu.Karthik的可能副本这是Swift,但没关系,我尝试了它的Objective-C版本,但没有得到好的结果。@sschunara这个答案使用了我提到的旧方法。它们都不推荐使用,与其他不推荐使用的方法不同,这些方法无法正常工作。不,此解决方案与旧方法一样,无法正常工作,因为正如我多次提到的,AudioSessionInitialize和getProperty方法都不推荐使用。在两种情况下(无论是否静默),它都返回NO。