How do iOS apps know your region? - ios

In the pc world they can only use one identifier which is IP address, but I just recently discovered iOS apps use 2 or more criteria to find your region. I found something called advertising identifier that those apps are using. Can anybody explain the concept please? What kind of identifier is this and how can I mask my device?

UDID, UUID, MAC Address,IDFA-identifierForIdentifier,IDFV-identifierForVendor
But unfortunately, all of the above indicates that the device identification number unique in IOS7 in either banned, or reinstall the program after two acquired identifier is not the same.
IOS system because the data are stored in sandBox inside, once you delete App, sandBox would cease to exist. Fortunately, there is one exception, that is, keychain (keychain).

Related

Get list of MAC Addresses nearby (without pairing with those devices)

I was wondering if it is possible to uniquely identify Bluetooth devices around you with iOS..
My first idea was to get the MAC address (or any other kind of unique GUID) but I was reading on the internet that such info is not shared until you pair the devices, which is something we didn't want to do in our scenario.
Also, it shouldn't be something too iOS specific, cause the idea is to discover also Android devices and implement something similar even on Android (with a separated app)
To recap these are the requirements:
solution not too iOS specific
no pairing involved
get a unique identifier from a simple Bluetooth scan
Do you have any idea/code example to share?
Thanks in advance
By design, no. Bluetooth devices randomly modify their addresses specifically to avoid this kind of tracking. For several helpful links to how this important privacy feature is implemented, see How do BLE IoT devices usually generate their private MAC addresses?

Get UUID from mac address on iOS

I'm a new developer developing a BLE service on iOS and Android. Currently there is a problem that I am facing, that the device address on iOS is the UUID mapped from the mac address, and on Android it is the mac address of the device. So now is there a way on iOS, from the mac address I received can get the corresponding UUID? Thanks everyone!
I am not sure how to do it.
the device address on iOS is the UUID mapped from the mac address
This is incorrect. The peripheral ID is not "from" the MAC address. It's just a random UUID. It's not even stable (it can, and does, change over time, though not quickly). There is no way on iOS to get the MAC address of a BLE device, or even to absolutely uniquely identify a BLE device unless you control the firmware. If you do control the firmware, then you can provide some mechanism to uniquely identify the device over a protocol of your own design.
As a broad rule, you can use the peripheral ID to identify or connect to a device you've connected to before. This isn't 100%, because the ID does change sometimes. But for the most part it does work (and it's intended to work, so Apple won't just break this arbitrarily). But you cannot otherwise identify the device.
As a corollary, the peripheral ID on one iPhone is completely unrelated to the peripheral ID on another phone for the same device. This is intentional.
You will have to adjust your design to deal with these facts.

Detect iBeacons without knowing UUID. Some apps are doing so

I looked into the answer for this question and in most of the answers, I found that it is not possible to detect the iBeacon without knowing the UUID of the device.
But some of the apps on App Store is doing the same. Here are the links for those apps, which are detecting unknown iBeacons.
https://itunes.apple.com/in/app/locate-beacon/id738709014?mt=8
https://itunes.apple.com/us/app/my-beacon-best-beacon-manager/id850255614?mt=8
Let me know if it is possible to detect the unknown iBeacon.
Thanks in advance.
I am the author of the Beacon Locate app you referenced in the question. I can assure you that it must know the ProximityUUIDs up front in order to detect beacons. The app is pre-configured with a dozen or so UUIDs (Estimote's default UUID is one of these) so you can detect those beacons without first manually entering the UUID. We do this to make it as easy as possible on the user. (Obviously that worked as you did not even notice we were doing it. Thanks for the compliment!)
You can see these pre-configured UUIDs by going to tge app Settings, which also allows you to enter more.
In the past there have been private APIs that allow you to detect any beacon on iOS. But there are three problems with these:
Apple forbids publishing apps in the AppStore that use private APIs
These private APIs are subject to change with any OS update, rendering them unworkable
The private APIs I know about to do this were all removed as of iOS 9

Is it possible to get other device information from just a UDID?

I'm wondering if anyone knows of any methods for retrieving device information from just a device's UDID (iOS). For example, if a client gives you a device UDID, is it at all possible to find out the device model?
Thanks!
No. The UDID is an SHA1 hash of a few components, and for all intents and purpose, impossible to reverse.
http://theiphonewiki.com/wiki/UDID
You can get the information you need from [UIDevice currentDevice]
Yes. Apple holds such information of any iOS device ever sold. They probably even know the original owner and the current OS version installed on the device since the don't allow installing without their on-line approval.
If you are an admin of an Apple Development Program (or have an individual developer account), you can register the UDID for development and get some information for the given UDID (such as platform, device class and model).
You can even do it programatically!
NOTE 1: Apple might be monitoring such activity. IANAL and I'm not aware of the legal consequences of getting information of devices you don't own.
NOTE 2: Development Program accounts are limited in the number of devices they can register.
Use wisely...

objective C iOS Device ID in iOS7

I want to ask that whether objective C can obtain a unique device ID of the Device. "uniqueIdentifier" is deprecated in iOS7 and I try to use "identifierForVendor" but it gives me a different ID after the app is re-installed. I want to find a stable device ID after the app is re-install, and even the iOS is changed. In the early version of iOS, we can use MAC address to achieve such goal. But now, in iOS7, the MAC address is no longer available. How can i find a stable device ID of the iOS device in iOS7?
Maybe using Keychain to store the "identifierForVendor" value is a good approach. But will it still be the same after the whole iOS is re-installed?
iOS does not allow you to identify a device universally anymore. That is the basic idea behind removing access to UDID and Mac address.
You need to change the design of your application to adapt to these new circumstances.
in my case i used keyChain to save first generated UUID then i used it as unique device id it still persistent even if after uninstalling the app

Resources