7

My wife and I are getting a ridiculous amount of same-exchange spam calls (same area code and first three digits) and are looking for a solution. One promising solution is outlined in this apple discussion -- create a .vcf file to establish a contact containing all 10,000 numbers (-0000 ... -9999) in that exchange and then block that contact. A nuclear option so to speak.

I've read that having a contact with several hundred numbers in it can be slow to open, on the order of several seconds to open for one containing 200 contacts. But it isn't clear if "open" in that context refers to opening it in the Contacts app to view or loading it into memory to check when a call comes in.

We each have an iPhone 6 and just upgraded to iOS 11 via wipe and restore, and we haven't experienced much slowdown so far other than a slight (fractions of a second) degradation in response here and there.

What kinds of performance issues should we expect if we take this route?

Edit And specifically is there any danger of bricking our phones or otherwise crashing if we use this? There is some discussion in the above link of the contacts app no longer opening.

Another option is to create say 20 contacts each with 500 numbers, or 100 contacts each with 100 numbers, or something like that. But I don't know if there is a larger performance hit for breaking it up that way vs having them all in one.

Why the nuclear option? We moved away from that location ten years ago but kept the numbers for convenience, we do not receive any calls from so-called "neighbors" out there, and I would prefer not to use a call-blocking app due to privacy concerns, so this seems like a perfect solution. (second only to nuking the spammers from orbit)

Edit 2 I am currently experimenting with creating the contacts manually with 500 numbers per contact, for a total of 20 contacts. It only took a few minutes to generate and import four contacts with 2,000 numbers total once the spreadsheet was set up, and that included emailing the contacts to my phone and importing them there.

Solution I'm marking Matt's answer as the solution because he pointed me in the direction of the app WideProtect. I installed it a couple days ago and so far there have been no calls.

Initially I was avoiding installing an app due to privacy concerns, but after reading the CallKit API I was persuaded to give it a shot. The app does require access to your Contacts if you want to allow numbers from your contacts through the block (which seems opposite from what the CallKit API says...) but I got around that by blocking all ranges except the range my wife's number is in. For example, if my wife's number is 123-555-3859 I would block 123-555-0XXX, 123-555-1XXX, 123-555-2XXX, 123-555-4XXX, etc. Skipping 3XXX. That gives only a 10% chance scammers will pick the range that includes my wife's number, so that is an acceptable tradeoff to me AND it avoids giving WideProtect access to my contacts list. If it becomes unbearable I can block 123-555-30XX..123-555-37XX and 123-555-39XX giving only a 1% chance they randomly pick the range. So that works great for me and preserves privacy.

Many thanks to Matt for pointing me down that path. This looks like a great solution.

Dave
  • 173
  • I wondered for a bit how to even test this. I suppose the risk could be two fold - that you have sync issues between devices if you sync that large contact with iCloud or other cloud service and cause a crash. Then there's the idea that the code might iterate over phone numbers thinking you would only have a handful or dozen items and that would slow down an operation or an app? – bmike Mar 03 '18 at 17:17
  • @bmike I'm no Apple expert (we use Windows but own iPhones) but those are the kinds of things I'm wondering. I'm probably going to try it but I'm trying to find out if it will brick my phone or something crazy like that. So far I can't find any info on the # limit per contact, only a size limit. Which I guess I could impute a rough estimate of #s allowed, but without knowing the base size of a contact it's a wild guess at best. – Dave Mar 03 '18 at 17:23
  • @bmike I added an edit after realizing I didn't mention the other option I was considering -- multiple contacts with smaller amounts of numbers in each. My gut says that may be the safer approach but I'm not sure. – Dave Mar 03 '18 at 17:29
  • Hiya has an option to block spam calls on the local exchange. Since it uses CallKit it doesn’t generate a huge contact to manage blocked numbers. You should get good performance on even an iPhone 5. The current database of bad numbers now has around 200,000 entries in it. – CyberSkull Mar 08 '18 at 19:09

2 Answers2

4

There's no impact in performance. TrueCaller uses CallKit, the iOS provided method of blocking spam calls, and behind the scenes they are all loaded into one contact.

The only issue would be if you wanted to manage that contact manually rather than using an app that is designed to do it. Swiping to delete hundreds of contacts is a pain!

Anyway, there's an app called WideProtect that uses the CallKit to do the blocking and will let you set ranges of numbers to block.

Matt Sephton
  • 5,068
  • My problem is the calls are designed to appear as if they are my "neighbors" from the same exchange as me. So if my number is 123-456-7890 we get calls all day long from 123-456-3321 or 123-456-7365 or ... always a random last 4. (so I need to block 10,000 numbers not 1,000 I messed up my question) As far as I understand the apps don't block those calls. Right now I'm experimenting with building 20 contacts with 500 numbers each. We'll see how it goes with a few for a while then ramp up. – Dave Mar 04 '18 at 00:00
  • I should add that obviously many of those numbers are legitimate numbers, just not ones that would ever call me. So an app shouldn't block them since someone else may want calls from other people on the same exchange. Hence the need for something like the option I'm considering. – Dave Mar 04 '18 at 00:08
  • You say from they appear to be from the same exchange. So are you redirecting calls from your landline to your iPhone? – Matt Sephton Mar 04 '18 at 00:17
  • @Dave have edited my answer to add an app that will do exactly what you want. – Matt Sephton Mar 04 '18 at 00:27
  • Matt no we live in another state for the last 10 years but kept our old numbers. We will never receive calls from anyone at the same exchange, except when we call each other. The problem is we are getting sometimes on the order of 10+ calls a day now. This is a common scam tactic where the callers spoof the area code + exchange to appear "local" -- which makes it obvious to us that they are scam calls so we ignore them. It's just ridiculous to have the phone ring so often. We don't want to silence ALL calls, just that exchange. – Dave Mar 04 '18 at 04:38
  • Matt WideProtect looks nice. I'm not familiar with CallKit and I can't much on how it deals with privacy. Checking the API overview (https://developer.apple.com/documentation/callkit) it appears that incoming calls are first screened by iOS against contacts in the phone, then against the block list, then against the block list in WideProtect. That would mean the only numbers visible to it are numbers I don't have in my contact list. Is that correct? Why does it require Call Identification privilege also? – Dave Mar 04 '18 at 05:11
  • @MattSephton it’s faked callerIng numbers, we get this type of spam call but only on one phone—it is very annoying and unfortunately we can’t just block the 10,000 numbers. – Tyson Mar 04 '18 at 14:08
  • @Tyson but you can block 10k numbers with the WideProtect app. – Matt Sephton Mar 04 '18 at 17:41
  • @Dave blocking numbers via CallKit doesn't require any special privileges - at one time it did, but no longer does. You're right that it only gets passed numbers that are not recognized by any other apps on your phone (not just Contacts) – Matt Sephton Mar 04 '18 at 17:43
  • @MattSephton right, but in our case we can’t block the prefix because we get many valid calls from that same block of numbers. Telcos should better secure callerId so that is not easy to fake. CallerId is just like the entire email platform and gun control laws in the USA—- all 3, callerId, email, and gun control, have been effectively broken for over 20 years yet no one can agree on how to better secure—so they all kinda work but kinda don’t too. – Tyson Mar 04 '18 at 17:51
  • 1
    I recommend going with an established call blocking app that uses a communal database so everybody benefits from each others reporting. I use TrueCaller and it works very well. Best of luck to you all. Over and out. – Matt Sephton Mar 04 '18 at 23:13
  • 1
    Matt I'm marking yours as the solution for reasons I specified in an edit to my question. WideProtect is great but it requires access to your contacts to allow specified callers in the blocked range to come through, but I hacked around that. So far I've had two days of blissful silence. Thanks. :) – Dave Mar 06 '18 at 19:57
  • Sweet! Happy for you, take care. – Matt Sephton Mar 06 '18 at 20:14
1

I can report no impact to performance at a far lower limit - my contact named "Telemarket Spam" to which I add callers and block that one contact is around 125 phones deep.

I would add all the numbers to one contact to simplify your life until you notice an issue or a problem and then back off a bit, and iterate to multiple contacts.


At some point, if the annoyance of curating this list overcomes my hesitance to subscribe to a service that integrates with the iOS phone app to classify and attempt to block suspect and known bad actors, I'll probably pay for a service to block calls. So far, I can't measure any slowdown or freeze - but I could see potential issues if you do manage to have thousands of numbers in the same contact.

Sorry this isn't super rigorous, but this one might be fairly easy to test empirically by generating a contact with 5,000 numbers and seeing when it breaks when you have time and a backup to restore your iOS device.

If I needed to profile this, I could use Instruments to attach to the contacts app and see where the contact is stored on the filesystem (for iOS or macOS) so there's clearly a way to reverse engineer how much space a number takes to store and measure any CPU usage related to editing that file or processing that data. Unless you see memory and CPU spiking, you can probably safely assume that as long as you care to keep adding numbers, the system will respond well if you just look at overall speed of the device while editing that contact.

bmike
  • 235,889