In which case audioSession.currentRoute.outputs empty?












0















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).










share|improve this question























  • 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


















0















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).










share|improve this question























  • 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
















0












0








0








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).










share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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





















  • 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














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
});


}
});














draft saved

draft discarded


















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
















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

Monofisismo

Angular Downloading a file using contenturl with Basic Authentication

Olmecas