mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
work around swift4.2 AudioSession API bug
This commit is contained in:
parent
d8640f60ef
commit
409426d105
5 changed files with 45 additions and 2 deletions
|
@ -488,6 +488,7 @@
|
|||
4C4BC6C32102D697004040C9 /* ContactDiscoveryOperationTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4BC6C22102D697004040C9 /* ContactDiscoveryOperationTest.swift */; };
|
||||
4C5250D221E7BD7D00CE3D95 /* PhoneNumberValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5250D121E7BD7D00CE3D95 /* PhoneNumberValidator.swift */; };
|
||||
4C5250D421E7C51900CE3D95 /* PhoneNumberValidatorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5250D321E7C51900CE3D95 /* PhoneNumberValidatorTest.swift */; };
|
||||
4C586926224FAB83003FD070 /* AVAudioSession+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C586925224FAB83003FD070 /* AVAudioSession+OWS.m */; };
|
||||
4C618199219DF03A009BD6B5 /* OWSButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C618198219DF03A009BD6B5 /* OWSButton.swift */; };
|
||||
4C61819F219E1796009BD6B5 /* typing-animation-dark.gif in Resources */ = {isa = PBXBuildFile; fileRef = 4C61819E219E1795009BD6B5 /* typing-animation-dark.gif */; };
|
||||
4C63CC00210A620B003AE45C /* SignalTSan.supp in Resources */ = {isa = PBXBuildFile; fileRef = 4C63CBFF210A620B003AE45C /* SignalTSan.supp */; };
|
||||
|
@ -1239,6 +1240,8 @@
|
|||
4C4BC6C22102D697004040C9 /* ContactDiscoveryOperationTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ContactDiscoveryOperationTest.swift; path = contact/ContactDiscoveryOperationTest.swift; sourceTree = "<group>"; };
|
||||
4C5250D121E7BD7D00CE3D95 /* PhoneNumberValidator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneNumberValidator.swift; sourceTree = "<group>"; };
|
||||
4C5250D321E7C51900CE3D95 /* PhoneNumberValidatorTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneNumberValidatorTest.swift; sourceTree = "<group>"; };
|
||||
4C586924224FAB83003FD070 /* AVAudioSession+OWS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "AVAudioSession+OWS.h"; path = "util/UI Categories/AVAudioSession+OWS.h"; sourceTree = "<group>"; };
|
||||
4C586925224FAB83003FD070 /* AVAudioSession+OWS.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "AVAudioSession+OWS.m"; path = "util/UI Categories/AVAudioSession+OWS.m"; sourceTree = "<group>"; };
|
||||
4C618198219DF03A009BD6B5 /* OWSButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OWSButton.swift; sourceTree = "<group>"; };
|
||||
4C61819E219E1795009BD6B5 /* typing-animation-dark.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "typing-animation-dark.gif"; sourceTree = "<group>"; };
|
||||
4C63CBFF210A620B003AE45C /* SignalTSan.supp */ = {isa = PBXFileReference; lastKnownFileType = text; path = SignalTSan.supp; sourceTree = "<group>"; };
|
||||
|
@ -2692,6 +2695,8 @@
|
|||
EF764C331DB67CC5000D9A87 /* UIViewController+Permissions.h */,
|
||||
EF764C341DB67CC5000D9A87 /* UIViewController+Permissions.m */,
|
||||
45B5360D206DD8BB00D61655 /* UIResponder+OWS.swift */,
|
||||
4C586924224FAB83003FD070 /* AVAudioSession+OWS.h */,
|
||||
4C586925224FAB83003FD070 /* AVAudioSession+OWS.m */,
|
||||
);
|
||||
name = "UI Categories";
|
||||
path = ..;
|
||||
|
@ -3661,6 +3666,7 @@
|
|||
4517642B1DE939FD00EDB8B9 /* ContactCell.swift in Sources */,
|
||||
34EA69402194933900702471 /* MediaDownloadView.swift in Sources */,
|
||||
340FC8AB204DAC8D007AEB0F /* DomainFrontingCountryViewController.m in Sources */,
|
||||
4C586926224FAB83003FD070 /* AVAudioSession+OWS.m in Sources */,
|
||||
3496744D2076768700080B5F /* OWSMessageBubbleView.m in Sources */,
|
||||
34B3F8751E8DF1700035BE1A /* CallViewController.swift in Sources */,
|
||||
4C4AE6A1224AF35700D4AF6F /* SendMediaNavigationController.swift in Sources */,
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#import <UIKit/UIKit.h>
|
||||
|
||||
// Separate iOS Frameworks from other imports.
|
||||
#import "AVAudioSession+OWS.h"
|
||||
#import "AppSettingsViewController.h"
|
||||
#import "AttachmentUploadView.h"
|
||||
#import "AvatarViewHelper.h"
|
||||
|
|
|
@ -534,8 +534,7 @@ protocol CallAudioServiceDelegate: class {
|
|||
if oldOptions != options {
|
||||
Logger.debug("audio session changed options: \(oldOptions) -> \(options) ")
|
||||
}
|
||||
try avAudioSession.setCategory(category, with: options)
|
||||
|
||||
try avAudioSession.ows_setCategory(category, with: options)
|
||||
}
|
||||
} catch {
|
||||
let message = "failed to set category: \(category) mode: \(String(describing: mode)), options: \(options) with error: \(error)"
|
||||
|
|
22
Signal/src/util/UI Categories/AVAudioSession+OWS.h
Normal file
22
Signal/src/util/UI Categories/AVAudioSession+OWS.h
Normal file
|
@ -0,0 +1,22 @@
|
|||
//
|
||||
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import <AVFoundation/AVAudioSession.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface AVAudioSession (OWS)
|
||||
|
||||
// #RADAR 45397675 http://www.openradar.me/45397675
|
||||
//
|
||||
// A bug in Swift 4.2+ made `AVAudioSession#setCategory:categorywithOptions:error` not accessible
|
||||
// to Swift.
|
||||
//
|
||||
// It's still available via ObjC, so we have an objc-category method which we can call from Swift
|
||||
// which just calls the original `AVAudioSession#setCategory:categorywithOptions:error` method.
|
||||
- (BOOL)ows_setCategory:(AVAudioSessionCategory)category withOptions:(AVAudioSessionCategoryOptions)options error:(NSError **)outError API_AVAILABLE(ios(6.0), watchos(2.0), tvos(9.0)) API_UNAVAILABLE(macos);
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
15
Signal/src/util/UI Categories/AVAudioSession+OWS.m
Normal file
15
Signal/src/util/UI Categories/AVAudioSession+OWS.m
Normal file
|
@ -0,0 +1,15 @@
|
|||
//
|
||||
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import "AVAudioSession+OWS.h"
|
||||
|
||||
@implementation AVAudioSession(OWS)
|
||||
|
||||
|
||||
- (BOOL)ows_setCategory:(AVAudioSessionCategory)category withOptions:(AVAudioSessionCategoryOptions)options error:(NSError **)outError API_AVAILABLE(ios(6.0), watchos(2.0), tvos(9.0)) API_UNAVAILABLE(macos)
|
||||
{
|
||||
return [self setCategory:category withOptions:options error:outError];
|
||||
}
|
||||
|
||||
@end
|
Loading…
Reference in a new issue