WebsiteBeaver / CordovaCall

Cordova CallKit & ConnectionService plugin for iOS/Android that displays the native call UI for VOIP apps
MIT License
196 stars 91 forks source link

"Calling accounts" issue on Android 6.0 #30

Closed domnich closed 6 years ago

domnich commented 6 years ago

Hi, thank you so much for your awesome plugin! It works great on IOS and on Android 8+, but I have problem with activating calling accounts on Android 6.0. Have 2 situations - where it works correct and not correct:

1. Working behaviour 1) Lunch app first time 2) Get incoming call 3) As it told in plugin description about Calling accounts settings page - "On Android Oreo and above this doesn't happen anymore 😃 The Calling accounts screen gets skipped, and the native call UI is shown immediately." So for Android 6 I'll need to enable it. 4) Try to make outgoing call.

In this case outgoing calls will work.

1. Non working behaviour 1) Lunch app first time 2) Try to make outgoing call

In this case 'native calling screen' will appears, plugin will use 'native phone but' it will call via sim card...To make it works through internet calls I'll need to go to my mobile calls settings/settings/Calling accounts enable them and only after that I will be able to make calls via internet.

To sum up - When you call "receiveCall" method first time it checks calling accounts and if needed cause 'Calling accounts' page and all works fine, but method sendCall method don't do it.

Maybe I miss something, but is there any way to call "Accounts list" on app start or on sendCall method for old Android 6.0 or maybe there is some other solution for this situation?

Thank you.

D-Marc1 commented 6 years ago

This is expected behavior. For some reason, Android forces you to go through Calling Accounts. The only reason you’re able to skip it on Oreo is because @dmarcs came up with an awesome hack.

D-Marc1 commented 6 years ago

My apologies, I realized that I misinterpreted your question. This is a confirmed bug that should be fixed soon.

domnich commented 6 years ago

Thank you! Waiting for update.

domnich commented 6 years ago

Guys, I have one more question about plugin.

I start a call, then I push app to background - call in progress and then I lock my device. Should phone call continue when device is locked ? In my after I lock device the call is still in progress. Didn't found any info about this in plugin description or in issues...Maybe there is a way how to stop call when device is locked or maybe I'm missing something completely...

D-Marc1 commented 6 years ago

I personally think it should continue, as this is the behavior of a normal phone call; we did this on our video chatting app.

But if you still want to do it, you can always use the pause event or resign on iOS.

domnich commented 6 years ago

Thank you!

dmarcs commented 6 years ago

@domnich Thank you for pointing out this bug. It's fixed in version 1.1.4. Like you described, there was never a problem with Android API 26 and above. This bug only happened for lower versions when calling sendCall without ever calling receiveCall. If you tried calling sendCall('David') for example, it would call 32843 which is the numerical representation of David. This happened because CordovaCall didn't prompt the Calling Accounts screen on sendCall. It only prompted the Calling Accounts screen on receiveCall. Once you turned on Calling Accounts for your app, both sendCall and receiveCall worked well.

In CordovaCall version 1.1.4, the Calling Accounts screen is shown whether you call sendCall or receiveCall, so you'll never see the numerical representation if you use sendCall. Once you turn on Calling Accounts for your app, it won't prompt you again. You only need to turn it on once. The problem before was that it only prompted you on receiveCall and not sendCall.

domnich commented 6 years ago

@dmarcs Thanks for your help!