Detect iBeacons without knowing UUID. Some apps are doing so - ios

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

Related

Change iBeacon UUID (or Major/Minor) with Custom iOS App?

Has anyone had success with configuring non-name brand iBeacons (eg. https://www.ebay.com/itm/NRF51822-2V-3-3V-bluetooth-4-0-wireless-module-for-ibeacon-base-stat-JF/254232206096?hash=item3b316b9b10:g:TT4AAOSwaMtcnXbr) with an iOS app?
I have an app running that can scan for these beacons just fine, but my target application involves modification of the beacon UUID which (as far as I understand) is fairly contingent on the SDK provided by the maker of the beacon. Things like Estimote are pretty clear about their SDK capabilities but the beacons are a bit too expensive and bulky.
Open to literally any input or recommendations, I'm hitting a wall here.
Thanks.
The provider of the beacons should have a configuration app available. Avoid providers without such an app.
Even though iBeacon is exactly specified, configuring such beacons is not, so apps are not interchangeable.
I've used Wellcore beacons successfully, that are quite competitive on price when ordered directly from China. I made a free configuration app for them, based on their SDK, as there was no such app in English: https://play.google.com/store/apps/details?id=com.abiro.cliqtagsbeaconwriter
I got bad reviews as Wellcore changed chipset without telling me, so the app stopped working, but that's fixed.

Ruby UUID's doesn't work on iOS iBeacon

We are generating UUID's using Ruby 1.9.3 (SecureRandom.uuid) and passing them to our iOS devices to monitor Beacons. We generate UUID's from iOS devices as well, but the iOS generated UUID's seem to be fine.
Here is the problem:
Server issued UUID, pulled in via API and applied to iOS device. Monitor Regions.
App is unable to monitor or range this Beacon using the supplied UUID.
We are using a the Radius Networks/AltBeacon library to monitor Beacons on Android devices, and the Beacon is able to be monitored and ranged fine with the same UUID.
iOS generated UUID's uploaded to the server work just fine. Only server/Ruby based UUID's don't work on iOS.
Does anyone have any idea why this might be? I'm 100% confident in my region monitoring code that it isn't an issue. When I output the UUID's, they are the correct format, and I'm not getting any errors at all from iOS. It seems like a legit UUID, but for some reason, iOS will not see it. Help!!!
In order to detect a beacon on iOS, the ProximityUUID you provide to the monitoring APIs must match that of a beacon transmitter. Your question suggests you are generating a random UUID in Ruby and then expecting to detect a beacon with the same UUID. This can't ever work, because there are so many possible UUIDs that the chances of ever finding a beacon matching a randomly generated UUID are next to zero.
Perhaps I am misunderstanding your question, but I wanted to offer this in case the issue is really this simple. The question says nothing about how you are transmitting with this UUID. Perhaps details about how this is being done might help clarify the issue. Also helpful would be an example UUID and a snippet of your iOS code that sets up monitoring.

How to find wifi/cellular signal strength in ios [duplicate]

As far as I know it's not possible to scan for hotspots in range and read their bssid and signal strengths. This was possible on iOS 4 by using private APIs and not longer possible on iOS 5 without jailbreak. Even if it were possible, the app would be rejected on the App Store. Is that right?
One company that has an indoor positioning system is claiming they can develop this system in iOS. I know for a fact they are scanning for hotspots and signal strengths and then triangulating the signal on their current Android app.
Are there any alternatives I am missing? Their claiming sounds impossible to me but I would love to hear from the people here. I would like to be ready when they demo (although I am expecting a jailbreak or some kind of mock up)
As far as i know this can still be done (using private APIs, of course) by MobileApple80211 framework.
Stumbler code is a good source of information on how to use this framework.
For iOS 5 you'll need a jailbroken iPhone. Guvener Gokce has a very educational blog post on this: iPhone Wireless Scanner iOS5
Just to update the answer: The MobileApple80211 framework has been replaced by MobileWifi.framework. You will need a jailbroken device (supposedly it can't be done using just private API's, hence on a development/enterprise non-jailbroken device).

iOS wifi scan, signal strength

As far as I know it's not possible to scan for hotspots in range and read their bssid and signal strengths. This was possible on iOS 4 by using private APIs and not longer possible on iOS 5 without jailbreak. Even if it were possible, the app would be rejected on the App Store. Is that right?
One company that has an indoor positioning system is claiming they can develop this system in iOS. I know for a fact they are scanning for hotspots and signal strengths and then triangulating the signal on their current Android app.
Are there any alternatives I am missing? Their claiming sounds impossible to me but I would love to hear from the people here. I would like to be ready when they demo (although I am expecting a jailbreak or some kind of mock up)
As far as i know this can still be done (using private APIs, of course) by MobileApple80211 framework.
Stumbler code is a good source of information on how to use this framework.
For iOS 5 you'll need a jailbroken iPhone. Guvener Gokce has a very educational blog post on this: iPhone Wireless Scanner iOS5
Just to update the answer: The MobileApple80211 framework has been replaced by MobileWifi.framework. You will need a jailbroken device (supposedly it can't be done using just private API's, hence on a development/enterprise non-jailbroken device).

MDM to secure app on private device

My clients use my app in their private devices which are not under any MDM-control or under control of a foreign company. I want to make sure that my app can only be executed when some requirements are met like:
device is not jailbroken
device-password is set
At the end I want to make sure that no data is leaked, when the app is installed on private devices.
Is it necessary to install a client like mobile iron? If I can install a mdm-profile, this must only guarantee the required conditions for my app.
How do I archive this goal?
iOS MDM management will enable you to tell if a managed device has a passcode set; I don't think there is any other way (short of jail-breaking) to detect this.
Your own application can attempt to do jailbreak detection; Apple's MDM by itself cannot do jail-break detection.
Someone has already asked a similar question about detecting a jailbroken device: Determining if an iPhone is Jail broken Programatically. There are also some answers to a question about checking if a password is set but I don't think the code in the answers covers this for you. You might want to check it out though.
You need to be aware that fighting these device compromises is an ongoing battle. There may be a point where the code you have written is ineffective at determining a jailbroken device. This means that you cannot promise that your app will not run on jailbroken devices unless you are planning on tracking all of the techniques in the wild, and releasing new versions to keep up with the threat.

Resources