我如何编程静音传入iPhone短信?(How can I mute incoming iPhone

2019-09-16 07:54发布

我目前正在尝试使用AVSystemController私人框架静音根据用户的选择系统的噪音。 目前,我正在通过调用静音电话: [(AVSystemController object) setVolumeTo:0.0 forCategory:@"Ringtone"];

是否有一个命令要做到这一点传入的短信? 我想这将是基于在该调用确定的类别有所改变。 但是,我找不到类别引用的列表。 10的我已经能够找到(Alert, Audio/Video, Ringtone, Voicemail, VoicemailGreeting, PhoneCall, TTYCall, RingtonePreview, Alarm, Record) ,没有人来规范短信的声音。 有一类这样做呢? 如果没有,是否有任何其他方式静音从进入文本的声音?

我知道这违背了苹果公司没有私人的框架政策,但这个程序不会去了在App Store所以这是没有问题的。 我使用的是最新版本的Xcode的IOS的最新版本开发它,所以任何一种方法来完成,这将是可行的。

Answer 1:

@Jessica,你不能这样做,BCOS它的限制。 如果你想尝试它在你的应用程序,那么你的应用程序可能会在应用程序商店拒绝。

因此,使用公共API,这是不可能的。

您发现链接是使用私有的API,它不记录或保证其正常工作,你所希望的方式。 如果你想发布一个App Store的应用程序调用私有API,它会被自动拒绝。

如果要检查,是否静音与否,然后在下面的代码中使用,

    -(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;

        }


For completeness, building off this link from Dan Bon, I implement the following method to solve this problem in my apps. One thing to note is that the code checks for the iPhone simulator first - executing the below code will crash the simulator. Anyone know why?

-(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;

}

声明在视图控制器这个权利,你只需检查

if ([self silenced]) {
     NSLog(@"silenced");

else {
     NSLog(@"not silenced");
}


文章来源: How can I mute incoming iPhone text messages programmatically?