How to declare my iOS voip app as an option on contact info (like whatsApp)? - ios

I want to add my app in the contact info in the address book for messaging, video calls.

This functionality can be achieve using CallKit, in short CallKit provides native phone app UI to all the VoIP application, to let your app visible in the contact (after integrating the CallKit), you just need to smoothly long press the audio/video call buttons.
By default It shows the most frequent used app (say WhatsApp), once you'll long press the icons it'll show a list of the supporting apps (VoIP enable apps). From where you can choose the app to perform the action.
The screenshots will make you more sense to figure it out.

Image 1 - is the default situation I.e. default call and video option.
Image 2 - Long press the call option, It’ll show all the apps which are capable to make audio call.
Image 3 - Same for the video option.
Image 4 - Once you’ll use any app (suppose WhatsApp) the default icon will change to WhatsApp and in the list it’ll start showing WhatsApp and other concern apps.
Source: #1 Ray Wenderlich Toutorial , #2 Sample Code of CallKit Objective-C & Swift both


Note: - In the list below it’ll start showing the apps name once you use any app to make call. And it’ll remain listed even if you uninstall that particular app.

I assume you are using CallKit. So adding .phoneNumber to supportedHandleTypes gives this ability that you can call number via your application.
.generic also gives ability you can start call from history that made or received via your application.
let config = CXProviderConfiguration(localizedName: "anyname you want")
config.supportedHandleTypes = [.phoneNumber,.generic]

Related

iOS application with CallKit - access last call

I am newbie in ios app development. I want to create application for ios with the following functionality. When the phone is receiving incoming call (no matter if the number is in the contact list or not) I want when the call is over and the phone's owner opens my application to see he's last call's number there.
Is that possible? I've read about CallKit API but I am still not sure if this can help me. Is it possible phone's owner to give such permissions to my app so it can access this information?

Prompt when trying to dial a phone number using tel:// scheme on iOS 10.3

After updating to 10.3, my app no longer automatically dials a phone number after pressing the call button in my app using the openURL: options: completionHandler: method.
Instead, a prompt comes up every time to confirm the user's intentions.
As per the Apple Documentation:
The tel URL scheme is used to launch the Phone app on iOS devices and initiate dialing of the specified phone number. When a user taps a telephone link in a webpage, iOS displays an alert asking if the user really wants to dial the phone number and initiates dialing if the user accepts. When a user opens a URL with the tel scheme in a native app, iOS does not display an alert and initiates dialing without further prompting the user. However, a native app can be configured to display its own alert.
According to this, the prompt displays for webpages but doesn't display in a native iOS app.
Could this be a bug in 10.3? Or is there a new function I need to use or a new property to include in the info.plist I do not know about?
Thanks.
This is listed as a known issue in the 10.3 release notes.
https://developer.apple.com/library/content/releasenotes/General/RN-iOSSDK-10.3/
openURL
When a third party application invokes openURL: on a tel://,
facetime://, or facetime-audio:// URL, iOS displays a prompt and
requires user confirmation before dialing.
It is also listed in the Security content of the 10.3 update, so I'm assuming this a new feature that is here to stay.
An issue existed in iOS allowing for calls without prompting. This
issue was addressed by prompting a user to confirm call initiation.
This is not the first time, Apple developers have reactivated this alert for url schemes? I remember that they did this kind activation, even in few other earlier updates, and they rolled back in the next OS update.
In the case of 10.3.1, I read a news that in the US there were many 911 calls fraudulently dialed. https://9to5mac.com/2017/03/06/911-ios-exploit/
In my opinion, the alert restriction has been incorporated to put stop for wrong 911 dials.
I am confident that, Apple cannot enforce this kind of arbitrary changes to API's/Schemes quite often and then, which is largely affecting the user's experience.
I have a Speed Dial App in the store for the last 8 years. https://itunes.apple.com/us/app/speed-dial/id306569903?ls=1&mt=8#
In the last few weeks, so many users are complaining about this new restriction of one more touch on the speed dial.
For now, we have to wait until Apple fixes this known issue in the next update. Because, there are 100s productivity apps, which rely on the URL scheme and no alert scheme.

How to stop confirmation dialog appearing when dialing number on iPhone? [duplicate]

After updating to 10.3, my app no longer automatically dials a phone number after pressing the call button in my app using the openURL: options: completionHandler: method.
Instead, a prompt comes up every time to confirm the user's intentions.
As per the Apple Documentation:
The tel URL scheme is used to launch the Phone app on iOS devices and initiate dialing of the specified phone number. When a user taps a telephone link in a webpage, iOS displays an alert asking if the user really wants to dial the phone number and initiates dialing if the user accepts. When a user opens a URL with the tel scheme in a native app, iOS does not display an alert and initiates dialing without further prompting the user. However, a native app can be configured to display its own alert.
According to this, the prompt displays for webpages but doesn't display in a native iOS app.
Could this be a bug in 10.3? Or is there a new function I need to use or a new property to include in the info.plist I do not know about?
Thanks.
This is listed as a known issue in the 10.3 release notes.
https://developer.apple.com/library/content/releasenotes/General/RN-iOSSDK-10.3/
openURL
When a third party application invokes openURL: on a tel://,
facetime://, or facetime-audio:// URL, iOS displays a prompt and
requires user confirmation before dialing.
It is also listed in the Security content of the 10.3 update, so I'm assuming this a new feature that is here to stay.
An issue existed in iOS allowing for calls without prompting. This
issue was addressed by prompting a user to confirm call initiation.
This is not the first time, Apple developers have reactivated this alert for url schemes? I remember that they did this kind activation, even in few other earlier updates, and they rolled back in the next OS update.
In the case of 10.3.1, I read a news that in the US there were many 911 calls fraudulently dialed. https://9to5mac.com/2017/03/06/911-ios-exploit/
In my opinion, the alert restriction has been incorporated to put stop for wrong 911 dials.
I am confident that, Apple cannot enforce this kind of arbitrary changes to API's/Schemes quite often and then, which is largely affecting the user's experience.
I have a Speed Dial App in the store for the last 8 years. https://itunes.apple.com/us/app/speed-dial/id306569903?ls=1&mt=8#
In the last few weeks, so many users are complaining about this new restriction of one more touch on the speed dial.
For now, we have to wait until Apple fixes this known issue in the next update. Because, there are 100s productivity apps, which rely on the URL scheme and no alert scheme.

Show Blocked Contacts using ABAddressBook

This question is for iOS 10 and Xcode 8. I know how to get user local address book contacts using ABAddressbook and show them in my app. What I was trying to do next are two things
Show the user what contacts he/she has blocked himself
Try see if I can block or unblock those contacts programmatically
The reason I am doing this is that as of now the only way to "block" a contact using native iOS app is to click on a contact, scroll down and click on block/unblock button. I was just trying to figure out if I can help the user quickly see all the contacts in their addresbook they have blocked and perhaps unblock/block one with one less tap using my app.
I have looked into callkit and that is not what I need. I am not creating a VOIP app nor do I need to create my own block list.
I have googled quite a bit and didn't find an answer for blocking / unblocking contacts using ABAddressbook which must mean its not possible. Suggestions?
In some way it is not possible till your device is jailbroken as this says and also it is possible if we use CallKit framework as Possible to programmatically block phone number in iOS source.
Apple document Says
The CallKit framework provides programmatic access to VoIP functionality, as well as call blocking and identification.

QuestionAboutCreating IOS SDK in order to hook one app onto another app

I got one question, Need help. Thanks.
Question: One App have already been created which will delivered Ads based on data, right now, I want to hook this app to another app but without wrapping the whole App to the second App, which i searched would create a static framework, but not that in that, the second App will just deliver one simple ID,and retain one banner space for showing the upcoming Ads, then in my App-server, It will only return the Ads to the second App.
How to do this ?

Resources