Provision call forwarding programmatically? - ios

I'm trying to figure out how to programmatically configure call forwarding on an iOS device using a custom application. I can see the settings in my Settings->Phone section on my device for call forwarding, I want to manually configure that using my own application. Is this possible? And if so how.
I've already looked through apples CallKit framework and it doesn't seem to be capable of doing this (unless I'm missing something).
I've also found that manually call forwarding using the tel URL scheme to launch the phone app is not supported based on Apple's Phone Links documentation:
To prevent users from maliciously redirecting phone calls or changing the behavior of a phone or account, the Phone app supports most, but not all, of the special characters in the tel scheme. Specifically, if a URL contains the * or # characters, the Phone app does not attempt to dial the corresponding phone number.

Related

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.

Delete dial call number from recent call list in ios

I have a some special requirement to delete dial call number from call list. I research a lot on SO but not able to get any answer for this. Is it possible in iPhone?
Apple doesn't allow developers to modify call list or history, since it will violate user's privacy policy. It is not possible to achieve in iOS with iOS public framework, used to submit apps to appstore. It is only possible by using private frameworks... or you can say jailbreaking the device. But you won't be able to submit app to store. It will be rejected.
Simple answer: No you cannot. Apple iOS doesn't allow you to access some of the applications such as Phone and Messages - So it is not possible for you directly access the call log, read messages or whatsoever. What you can do is, you can open the Messages/Phone app with a pre-defined number to call or a message to send for performing user verification actions.
Take the example of Uber app; you can call the driver by tapping on the Contact button, but there is no way that app can access your phone log and delete the recent numbers from the record - unlike Android devices.
It may be possible by jailbreaking, which on the other hand won't let you put your app on the App Store.

Display all the apps that support sending messages (Chatting)

I want display all the apps in my app that support chatting. Actually I need to send the selected text via message applications (i.e., WhatsApp, WeChat, etc..) those are installed in my iOS device.
I have gone through UIDocumentInteractionController but it allow to share files only. But here in my case I want to share just text.
Is this possible. Please help me out, thanks.
iOS does not have a single option for sharing text, the UIActivityViewController can be used and will show the iOS integrated social networks.
You will be able to add you own service to this dialog, as long a the app has a URL scheme to support its.
A example of a Whatsapp UIActivity: https://github.com/jberlana/JBWhatsAppActivity
If you know the URL schemes (if the chatting app provides one) of the app, you can check if a app exists or not using -canOpenURL: of UIApplication class. If they support url schemes, you can send text in the format that those app supports.

Exchange data between iOS apps

I know about x-callback-url, and how it's possible to e.g. send a string to an app in iOS.
But is it possible to do this the other way around, e.g is it possible for an iOS app to fetch the song currently playing in Music.app? Can an app fetch a message with a specific caller ID from Messages.app?
I believe, you need to have access to their API/backend to do that. Talking directly to another iOS app is not possible.
No, I'm not a crook ;) I want my app to read the content of an SMS that my gateway has sent, for device authorization.
register a scheme for your app. add a link with that scheme in your sms, with the registration code as uri-path. by clicking that should open your app and you can process the uri.

Resources