I've been working on an Ionic Framework app for a client. One of the requirements was for the user to be able to place calls from within the app.

You would normally accomplish this with code like:

<a class="item" ng-href="tel:{{phoneNumber}}" >Call {{phoneNumber}}</a>

Unfortunately, every time the user taps a phone number to place a call, they would see an unpleasant prompt to confirm the call. Of course, no one really wants to see this, but iOS doesn't allow a WebView to place a call without the prompt.

I dug around a bit and found a really simple solution on StackOverflow from @gaqzi. First you must include the Cordova InApp Browser plugin in your app.

cordova plugin add org.apache.cordova.inappbrowser

Then, include a dialer function in your controller (or a directive). This code tells iOS to use the system browser to place the call. The prompt is not required if the request comes from the system browser.

$scope.dialNumber = function(number) {
  window.open('tel:' + number, '_system');

Now, you can see the call is placed right away without the prompt. (Yes, I've got Ionitron on speed dial.)

I've setup a very simple demo app. You can try it out using the Ionic View App (APP ID : 60da48a2) or create your own Ionic app from the repo.

Let me know if you have any questions or suggestions on this.