In which case audioSession.currentRoute.outputs empty?
I have a mobile application. It has some play audio. It works fine my devices always, but I receive many crashes from real users in Crashlytic. Simply, my code is:
- (void) checkAndResetAudioSession {
.
.
AVAudioSession * audioSession = [AVAudioSession sharedInstance];
.
.
AVAudioSessionPortDescription * outputPort = [audioSession.currentRoute.outputs objectAtIndex:0];
.
}
I get crashes which says:
Fatal Exception: NSRangeException
0 CoreFoundation 0x106eb3ea0 __exceptionPreprocess
1 libobjc.A.dylib 0x106085a40 objc_exception_throw
2 CoreFoundation 0x106dc5a90 -[__NSCFArray count]
3 MyApp 0x303b235e4 -[AudioSessionManager checkAndResetAudioSession] (AudioSessionManager.mm:100)
.
.
As I understand, it crashes because of it tries to reach 0th index object of audioSession.currentRoute.outputs
variable. That means, output should be empty. In which case, audioSession.currentRoute.outputs can be empty? As I understand, it is output devices. So, at least there should be always one output device.
Additional information, as I see, this problem happens almost always in iOS 12 and mostly iPhone X, 7 and 7 plus (%50 crashes come from these 3 devices).
ios objective-c iphone
add a comment |
I have a mobile application. It has some play audio. It works fine my devices always, but I receive many crashes from real users in Crashlytic. Simply, my code is:
- (void) checkAndResetAudioSession {
.
.
AVAudioSession * audioSession = [AVAudioSession sharedInstance];
.
.
AVAudioSessionPortDescription * outputPort = [audioSession.currentRoute.outputs objectAtIndex:0];
.
}
I get crashes which says:
Fatal Exception: NSRangeException
0 CoreFoundation 0x106eb3ea0 __exceptionPreprocess
1 libobjc.A.dylib 0x106085a40 objc_exception_throw
2 CoreFoundation 0x106dc5a90 -[__NSCFArray count]
3 MyApp 0x303b235e4 -[AudioSessionManager checkAndResetAudioSession] (AudioSessionManager.mm:100)
.
.
As I understand, it crashes because of it tries to reach 0th index object of audioSession.currentRoute.outputs
variable. That means, output should be empty. In which case, audioSession.currentRoute.outputs can be empty? As I understand, it is output devices. So, at least there should be always one output device.
Additional information, as I see, this problem happens almost always in iOS 12 and mostly iPhone X, 7 and 7 plus (%50 crashes come from these 3 devices).
ios objective-c iphone
Did you check what happens when you have a bluetooth speaker connected and you move the phone out of range?
– Gerd K
Jan 1 at 15:43
thanks a lot @GerdK , I tried. I dont have airpods, but I have a bluetooth headphone, logitech. when I connect it to the device, it works fine and output has 1 element which is logitech headphone. when I move headphone out of range, than its pairing is disconnected and I still see output has one element but now, it is Speaker. I will try to test with AirPods if I have
– Adem
Jan 2 at 8:20
add a comment |
I have a mobile application. It has some play audio. It works fine my devices always, but I receive many crashes from real users in Crashlytic. Simply, my code is:
- (void) checkAndResetAudioSession {
.
.
AVAudioSession * audioSession = [AVAudioSession sharedInstance];
.
.
AVAudioSessionPortDescription * outputPort = [audioSession.currentRoute.outputs objectAtIndex:0];
.
}
I get crashes which says:
Fatal Exception: NSRangeException
0 CoreFoundation 0x106eb3ea0 __exceptionPreprocess
1 libobjc.A.dylib 0x106085a40 objc_exception_throw
2 CoreFoundation 0x106dc5a90 -[__NSCFArray count]
3 MyApp 0x303b235e4 -[AudioSessionManager checkAndResetAudioSession] (AudioSessionManager.mm:100)
.
.
As I understand, it crashes because of it tries to reach 0th index object of audioSession.currentRoute.outputs
variable. That means, output should be empty. In which case, audioSession.currentRoute.outputs can be empty? As I understand, it is output devices. So, at least there should be always one output device.
Additional information, as I see, this problem happens almost always in iOS 12 and mostly iPhone X, 7 and 7 plus (%50 crashes come from these 3 devices).
ios objective-c iphone
I have a mobile application. It has some play audio. It works fine my devices always, but I receive many crashes from real users in Crashlytic. Simply, my code is:
- (void) checkAndResetAudioSession {
.
.
AVAudioSession * audioSession = [AVAudioSession sharedInstance];
.
.
AVAudioSessionPortDescription * outputPort = [audioSession.currentRoute.outputs objectAtIndex:0];
.
}
I get crashes which says:
Fatal Exception: NSRangeException
0 CoreFoundation 0x106eb3ea0 __exceptionPreprocess
1 libobjc.A.dylib 0x106085a40 objc_exception_throw
2 CoreFoundation 0x106dc5a90 -[__NSCFArray count]
3 MyApp 0x303b235e4 -[AudioSessionManager checkAndResetAudioSession] (AudioSessionManager.mm:100)
.
.
As I understand, it crashes because of it tries to reach 0th index object of audioSession.currentRoute.outputs
variable. That means, output should be empty. In which case, audioSession.currentRoute.outputs can be empty? As I understand, it is output devices. So, at least there should be always one output device.
Additional information, as I see, this problem happens almost always in iOS 12 and mostly iPhone X, 7 and 7 plus (%50 crashes come from these 3 devices).
ios objective-c iphone
ios objective-c iphone
asked Dec 31 '18 at 14:45
AdemAdem
7,36653554
7,36653554
Did you check what happens when you have a bluetooth speaker connected and you move the phone out of range?
– Gerd K
Jan 1 at 15:43
thanks a lot @GerdK , I tried. I dont have airpods, but I have a bluetooth headphone, logitech. when I connect it to the device, it works fine and output has 1 element which is logitech headphone. when I move headphone out of range, than its pairing is disconnected and I still see output has one element but now, it is Speaker. I will try to test with AirPods if I have
– Adem
Jan 2 at 8:20
add a comment |
Did you check what happens when you have a bluetooth speaker connected and you move the phone out of range?
– Gerd K
Jan 1 at 15:43
thanks a lot @GerdK , I tried. I dont have airpods, but I have a bluetooth headphone, logitech. when I connect it to the device, it works fine and output has 1 element which is logitech headphone. when I move headphone out of range, than its pairing is disconnected and I still see output has one element but now, it is Speaker. I will try to test with AirPods if I have
– Adem
Jan 2 at 8:20
Did you check what happens when you have a bluetooth speaker connected and you move the phone out of range?
– Gerd K
Jan 1 at 15:43
Did you check what happens when you have a bluetooth speaker connected and you move the phone out of range?
– Gerd K
Jan 1 at 15:43
thanks a lot @GerdK , I tried. I dont have airpods, but I have a bluetooth headphone, logitech. when I connect it to the device, it works fine and output has 1 element which is logitech headphone. when I move headphone out of range, than its pairing is disconnected and I still see output has one element but now, it is Speaker. I will try to test with AirPods if I have
– Adem
Jan 2 at 8:20
thanks a lot @GerdK , I tried. I dont have airpods, but I have a bluetooth headphone, logitech. when I connect it to the device, it works fine and output has 1 element which is logitech headphone. when I move headphone out of range, than its pairing is disconnected and I still see output has one element but now, it is Speaker. I will try to test with AirPods if I have
– Adem
Jan 2 at 8:20
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53988679%2fin-which-case-audiosession-currentroute-outputs-empty%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53988679%2fin-which-case-audiosession-currentroute-outputs-empty%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Did you check what happens when you have a bluetooth speaker connected and you move the phone out of range?
– Gerd K
Jan 1 at 15:43
thanks a lot @GerdK , I tried. I dont have airpods, but I have a bluetooth headphone, logitech. when I connect it to the device, it works fine and output has 1 element which is logitech headphone. when I move headphone out of range, than its pairing is disconnected and I still see output has one element but now, it is Speaker. I will try to test with AirPods if I have
– Adem
Jan 2 at 8:20