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.
Related
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?
I've noticed that many apps like Skype, Slack, Telegram etc, are able to show the ID of contacts saved within those apps in my native iOS recent calls list as if they are existing contacts.
Here's a great example I found in a Google search:
I currently manually store and manipulate contacts to get this same effect for an app I'm currently working on. It's a bit messy and I'm wondering if I can somehow achieve what all of these apps achieve?
I've searched around but I'm not sure where I should be looking. The CNContactStore class doesn't mention anything about this.
How can do this, or where should I be looking to learn how to do it?
Paulw11's comment was the answer to my question:
They report the name via a CXCallUpdate when they report the incoming
call. If your app isn't a voip app then you can create a callkit
directory extension github.com/paulw11/CallKitTutorial
Is there a URL to open the contacts application from within my application? I know you can achieve this with the settings app by using the UIApplicationOpenSettingsURLString constant in Swift; however, I wasn't sure if I could do the same with the Contacts app.
There isn't a deep link for opening the Contacts App.
Apple is very picky when it comes to deep-linking. They have to provide one for Settings since many apps need services like Data, Location, Bluetooth, Wifi, etc.
Unfortunately they do not extend this to the Contacts App.
However if your app needs contact information then for that Apple has provided a Contacts framework to browse through your contacts within your app itself.
Read more about it here.
In order to add/update/delete/merge contacts directly from your app without using the Apple's Contact UI, use the CNSaveRequest APIs. More on that here.
The closest thing you can get to opening a contact is to write them a message in IMessage. From this screen the user can press the contact icon and open the contact page for that particular contact.
You can do this by opening the url sms://+44776382223 where the number is the number of the person that you would like to view the contact of.
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.
is it possible to access the phone settings of an iOS Device programmatically? I'm currently building an app and there I will provide contact possibillities, for example a direct link for calling (you just push it and then the specific contact number is called).
But I only want to show that possibility, if the user isn't calling with an unknown number.
You can access the contacts stored in the phone using the Address Book framework. If you're unfamiliar with the framework, I suggest you take a look at this quick start tutorial.
EDIT It seems you wish to read the state of the Show My Caller ID system setting, however you cannot programmatically access the system settings.
Use ABAddressBook for getting contact details in your project...
see this