着信音を静かにしたい。だから私はそれを行うためにこのリンクを使用しています - How to disable iOS System Sounds しかし、コードを使用する場合:
- (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];
}
クラッシュします
NSInvocation *volumeInvocation = [NSInvocation invocationWithMethodSignature:
[avSystemControllerClass instanceMethodSignatureForSelector:
@selector(setVolumeTo:forCategory:)]];
返される値が nil であるためです。
そして、フレームワークなどをインポートしてからこのコードを使用すると
[[AVSystemController sharedAVSystemController] setVolumeTo:0.0 forCategory:@"Ringtone"];
次のエラーが表示されて実行されません。
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_AVSystemController", referenced from:
objc-class-ref in SettingsViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
誰かが私が間違っているところを教えてください。