I have read all the posts about DTMF and iPhone. I know that the characters "#" and "*" are disallowed by the SDK for security reasons. I have tried the stringByAddingPercentEscapesUsingEncoding: and the FURLCreateStringByAddingPercentEscapes workarounds. It is not possible, in my case, to generate the DTMF tones as one post suggested and even Touch Dial Emoji does not support # and *. I have also used ABPeoplePicker et. al. and have not found a way to use # and *.
Now. Some one on my project swears that he has used an app that directly employs the native dial/phone app in order to use the # and * characters. I can not find any way to do that. I have not found any APIs nor even posts about that.
****NOTE**** if you put a number in the Contacts app with a # or a * it dials out and uses the DTMF commands just fine.
Our app generates a phone number 123 123 1234,,1234#,,1234567*,,123456# internally; so it can't be exploited. Additionally we could used the contacts list to create a formatted number which in theory would satisfy the SDK security desires. But there seems to be no way to use the native dialing app in order to satisfy iOS that we are not being malicious.
Does anyone know if there is a way to directly use the dialing app so that we can use the DTMF commands "#" and "*"?
Thanks much.
Just in case this is still a question for anyone: It is in fact disallowed. Apple shows not sign of changing this despite the fact that all other smartphone platforms allow it. There as some clever approches to getting around this but they all seem to be little better than hacks. I think that t's best to give in on this one and tell people that it's just not possible on iOS.
Altnernatively you can incorporate the creation of a "contact" on the phone, implement your DTMF string into the dial code for the contact.. it will permit * and #.
you can programmatically delete the contact once the call has been completed to "clean up".
Related
I'm unable to figure out why there are random codes being shown in various places on this website. It doesn't happen on other websites. It also doesn't seem to happen on Android devices. It doesn't happen when connected to WiFi. On one iPhone with iOS8 it doesn't have it, but on another it does. On another iPhone with IOS7, it has it. I can't make any sense out of the codes. Any ideas?
See image here: http://i.stack.imgur.com/IdblN.png
http://arstechnica.com/security/2014/10/verizon-wireless-injects-identifiers-link-its-users-to-web-requests/
As your comment suggests you might be seeing a tracking ID from your ISP, AT&T in this case.
Verizon uses the UIDH field which identifies someone to Ad services. It is essentially double-dipping, when the customer is also the product. Not to mention some website receives this header, combines user-provided data with the field, then selling this to someone else... Easiest data-collection strategy of their lives.
Is there any way to block incoming phone calls, text messages and email. Will appstore allows these kind of applications on appstore. Please help me if this is possible or not.
It is now possible from iOS 10 to block the unwanted calls
Checkout the CallKit framework
CallKit introduces app extensions that enable call blocking and caller identification. You can create an app extension that can associate a phone number with a name or tell the system when a number should be blocked.
Update: Never say never :) iOS 10 introduced this possiblity, see other answers.
Original:
NO, this is not possible with public API (and non-jailbroken devices)
And NO, Apple would never allow any app that disrupts the expected standard system behavior
Apple will never allow any third party application to do any illegal things without user's knowledge. This is the policy I think apple has applied to ensure his user's that their data are safe in their iphone. U can consider mails, calls, sms to be under those categories. There may be others which I might have missed.
Please refer this link for your knowledge
Only Apple can do that and unfortunately for you they plan to do otherwise.. :/
Even if it is called "smart", all in all your target device is a "phone" so the basic phone functionalities should not be ever blocked, and the phone manufacturers do not allow this for third party applications.
Rajan is correct you can block the incoming phone calls from iOS 10.
Create a Call Directory Extension , use the addBlockingEntry(withNextSequentialPhoneNumber:) method to pass the blocked numbers to the system.
Now it's end of 2018 and actually you can really do something with Apple's latest API.
As #Rajan stated, with CallKit API (iOS 10+) you can achieve call blocking and identification (i.e. show additional info on the incoming call screen for the caller's phone number).
You can also do SMS and Call Reporting (iOS 11+) as well, where you have access to the SMS content if the number is not in your Contacts.
This is in regard to Objective-C in an iPhone app...
I have figured out how to get a list of all contacts on my iPhone, but is it possible to send out a mass text? I know I can make a message composer which has an array of recipients, but that will end up sending the text as a group text, not as an individual text to each person.
Also, is there a way to send a text message in iOS without using a message composer?
Most likely no, at least not without jailbreaking. This is the sort of thing that Apple wouldn't allow developers access to just to prevent any possible abuse by the same (especially when it might cost a user a small chunk of change if a mass-text got sent out).
MFMessageComposeViewController is your best bet. You'll be able to specify an array of phone numbers to send SMS to. As for group messaging, I would assume it would default to the users settings. (This is an option in Settings.app) It's simple enough to test but the documentation doesn't mention it.
http://developer.apple.com/library/ios/#documentation/MessageUI/Reference/MFMessageComposeViewController_class/Reference/Reference.html#//apple_ref/doc/uid/TP40009668
I am currently working on an iOS application that uses live audio streaming, and our users have asked for a feature to automatically block incoming calls when they are streaming. I know that there is no API to do this, so the way we solved it is to have a button on the UI that automatically calls a certain number (specific to the telecom provider) that turns blocking of incoming calls on or off. It does this simply by opening a tel: URL.
This all works fine, and while it may not be very user friendly because it forces users to exit the application, I do belive it's the most elegant solution with the tools provided by the iOS API.
There is one caveat though, some telecom providers do not have a single short number that people can call to turn this feature on or off. They use instead long codes that have special characters in them, such as # and *. Unfortunately iOS refuses to open tel: URLs with those characters, presumably for security reasons. However I was wondering if it is possible for users to put those numbers into contacts and then have iOS call those contacts directly?
I know how to retrieve phone numbers from the address book directly, but that's no use because I will still have the problem of the URLs not getting accepted. So is there instead a way to, say, have tel: URL with a contact ID or something similar?
Thanks for reading and/or replying. :)
You can't dial # or * from an app. It's Apple's scheme to protect us from nasty people.
To quote from Apple's documentation:
To prevent users from maliciously redirecting phone calls or changing
the behavior of a phone or account, the Phone application supports
most, but not all, of the special characters in the tel scheme.
Specifically, if a URL contains the * or # characters, the Phone
application does not attempt to dial the corresponding phone number.
...and converting to ASCII characters and other tricks doesn't work either (I tried).
Is it anyway possible to tag certain phone numbers on your iPhone as high priority numbers, and then filter them out to perform some actions on them?.. e.g. allowing calls from these numbers to come through even when the ringer is off.
Does Apple even provide the dev access to phone api's to allow this sort of work?
No apple does not provide access to this information, therefore its not possible while still having a hope that your app will be accepted to the store.
jailbroken+ private APIs= impossible is nothing