I'm working on an app that retrieves iBeacon UUIDs from a backend server, that means there are no hard-coded UUIDs in the app and these IDs are constantly changing. UUIDs can be updated on the backend and the app will receive a new set of UUIDs to monitor for.
Based on this post here, Apple is rejecting apps that support manual input of UUIDs and I'm not sure if my app is going to make it to the App store.
I would like to hear your feedback if you've gone through this path or have worked on a similar concept and made it through the review process.
I have also had an app rejected for allowing manual input of ProximityUUIDs. My understanding of Apple's position is that this applies only to transmitting as a beacon, and that it is allowed to have manual user input of ProximityUUIDs for detection purposes. The reason they don't want you to transmit with a manually entered ProximityUUIDs is because it allows creation of an easy hacker tool for "spoofing" other folks' beacons.
That said, your use case is different still, because you are getting the ProximityUUIDs from a server, not directly from user input. I have several apps in the AppStore that do exactly this, and it is a common practice, so I don't anticipate it will be a problem for you.
Interesting discussion on UUIDs. Given the ibeacon protocol requires you to know the UUIDs, having to add them to your app in advance is a major limitation. How does one request an official UUID from Apple David, your company "Radius" makes beacons, is the UUID it ships them configured with an "officially" agreed one you setup with Apple?
Related
I've written an enterprise iPhone app for the field workers in our company, and the powers-that-be are considering offering it to some of our client companies as a freebie for their field workers to use. I assume that Apple would not allow enterprise distribution to users who are not company employees, so I would have to place it on the App Store.
However, we would like to restrict the user base to approved users or companies, so I would like to avoid making it available to just anyone. The app does communicate with our servers, which makes it something of a risk, in my opinion, of hacking; we'd certainly like to avoid that.
I'm wondering if there is a way to restrict App Store downloads only to certain users or companies? Or is there an alternative method to prevent just anyone from downloading and using the app?
Posting as answer, as per the OP...
For your case, you probably want to look at Business-to-Business distribution: https://developer.apple.com/programs/volume/b2b/
You could use the new "DeviceCheck APIs" that is release in iOS11
Using the DeviceCheck APIs, in combination with server-to-server APIs,
you can set and query two bits of data per device, while maintaining
user privacy. You might use this data to identify devices that have
already taken advantage of a promotional offer that you provide, or to
flag a device that you've determined to be fraudulent. The DeviceCheck
APIs also let you verify that the token you receive comes from an
authentic Apple device on which your app has been downloaded.
https://developer.apple.com/documentation/devicecheck
Are there any limitations imposed by Apple when using beacons APIs?
For example can I design an App that uses iBeacons as part of a game and not for providing in-store marketing?
Is the app likely to be rejected?
No there isn't. As an example we've delivered an app for a wearable that broadcasts itself as a beacon in order to initiate syncing on the phone (or the start of a detected activity or state change).
If you're sticking to their APIs then indeed there's plenty of use cases that have nothing to do with marketing or even location.
It's a common misconception that Apple iBeacon technology is all about marketing. Not only does Apple not restrict use of the technology, it is happy to approve apps that make novel uses. I have build all kinds of beacon apps and had them approved in the store that do things with beacons like:
Indoor navigation at the Consumer Electronics Show
Scavenger hunts
Getting info about plants at a botanical garden
Opening gates at parking garages
Identifying people who are nearby to kick off a chat session
If you are worried about an app being rejected due to using beacons, be more careful to see that it isn't unnecessarily using location background mode. This is the main reason that I have seen beacon-based apps get rejected in the past.
As you have understood from the question's title, I would like to know, how to identify iOS device across multiple apps. Advertising identifier and identifier for vendor is not an option for me, as apps may not have AdSupport framework included, and they may not have similar vendors. MAC address of the device is also deprecated. Any working solution on this? Thanks in advance!
This functionality is explicitly disallowed by Apple. Any workaround you come up with will violate Apple's stated goal of preventing it (so you would obviously risk appstore rejection even if it "works"). You are not allowed to track devices. You are only allowed to track the vendor ID and advertising ID. Apple has steadily removed every other tool because those are the ones they intend you to use (and their limitations are intentional).
What you are allowed to do is track users by issuing them login credentials and having them log into your server. This usually works fine if the user actually wants the functionality you're providing by tracking them (for example, users don't mind logging into Facebook or Twitter). If you are tracking users or devices to achieve a goal the users don't actually want (such as targeted advertising that the user can't control, or attempts at digital rights management tied to devices), you're unlikely to find a supported or permitted solution.
I have read in a business newspaper the following use case for iBeacon :
Clarks (US) - Prompting users to download their app as soon as they walk in-store
I saw nothing in terms of features that is dealing with such an opportunity, so I am quite confused.
On the other hand, the native AppStore application does support iBeacon (as seen in Apple Store to provide contextual services such as Genius Bar, etc). So it is technically possible that some sets of UUID x major x minor are used to invite users to discover an application with a specific store ID - and we still not will be at the OS level, but still at an application level.
So, what's the point ?
A future new release of iBeacon that is currently tested a kind of partnership between Apple and Clarks? Or am missing something ?
I think the simplest explanation is that the reporter got it wrong. The only reference to this I can find is this Marketing Week article,
Which says:
Beacons examples
Clarks (US) - Prompting users to download their app as soon as they walk in-store
As you have suggested, this is not possible without another app already on the phone that does the iBeacon detecting. While it is technically possible that the Apple store app could be helping do this, I think that does not sound at all like something Apple would agree to do. It is more likely that some marketing network has embedded something that does this in a common library in popular free downloadable games. This would only work for people have downloaded apps with this embedded library.
However, given that the claim of this article is dubious, and there is no available evidence to support it, I would be skeptical.
I would like to know the amount of data traffic my iPhone consumed for a given period of time like you can see in the preferences.
Is this possible to get this information? Or even better: Is it possible to register for traffic usage information that my app can analyze?
I'm pretty sure Apple doesn't allow developers access to this kind of information. I don't think you could access it without risking your app being rejected when submitted to Apple.