We've written an app for our clients that connects to external hardware over Wifi (hardware designed by our client). My question is, how do we go about submitting this for review? The software won't do very much without the hardware. Just to be clear, the hardware does not connect directly to the iPad with a cable, it connects over WiFi only.
I just want to get some clarity on what we need to do to get this app through the review process and into the App Store.
Any insight will be appreciated.
I'm one of the authors of StageMix for M7CL, LS9 and CL and it has exactly this issue - the hardware it works with is a somewhat expensive dongle ;)
We added disconnected demo mode where all of the application's UI works - only difference is that nothing is remote controlled. This has the added benefit of allowing customers to try the app out when the hardware isn't handy.
Apple has always been happy reviewing the demo mode and presumably never tested it connected.
I do suggest that the iTunes Store metadata for the App - and if possible the user interface - is very clear about the external hardware requirements
One of my recent updates to DAQ-app failed approval with a note that I needed to show a video of it working with the hardware.
My demo mode let them test some functionality, and the video showed the connectivity. I just hosted the video as a private video on YouTube, and it was accepted quickly after I submitted the video.
The next update was accepted with the same video and a note that there were only minor changes, and no changes to the connectivity.
I emailed Apple this week to ask what their current policy on this is, and they said we have to ship the hardware to them. They also said they can return it if needed, but that we'd have to ship the hardware to them again for every future app update too.
I had same experience. our App is
http://itunes.apple.com/us/app/jia-jia-yi/id497092682?mt=8.
This app also works with a device.
But we was lucky, apple did not ask us to support the hardware to them.
Hope you are lucky too.
:)
Apple required me to send in hardware
We recently submitted an app that required our hardware to be submitted too. The address it was asked to be shipped to is:
Apple, Inc.
1 Infinite Loop, M/S: 124-2APP
Cupertino, CA 95014
USA
It's probably best that you submit the app first and let it get stuck on that process so when you send it in, you can direct it to the proper person in charge. As for FCC, you need to fill out this form if shipping from outside US:
http://transition.fcc.gov/Forms/Form740/740.pdf
Other notes provided by Apple:
A separate FCC Form 740 must be used for each different radio-frequency device or component in the shipment; however, a form is not required for subassemblies, parts, or components of radio-frequency devices.
The form may be completed by the shipper or recipient, but if the form is not sent with the original shipping documents by the shipper, the shipment may be delayed in customs.
Ensure all serial and ID numbers are available as well as the name and address of the original manufacturer.
I hope that helps!
Related
In 2015 Uber was fingerprinting iPhones to reduce fraud in China.
What methods were they using to do this? Was it as simple as recording the serial number in a database? Were they using private methods?
From the NYT article:
"To halt the activity, Uber engineers assigned a persistent identity to iPhones with a small piece of code, a practice called “fingerprinting.” Uber could then identify an iPhone and prevent itself from being fooled even after the device was erased of its contents.
There was one problem: Fingerprinting iPhones broke Apple’s rules. Mr. Cook believed that wiping an iPhone should ensure that no trace of the owner’s identity remained on the device.
So Mr. Kalanick told his engineers to “geofence” Apple’s headquarters in Cupertino, Calif., a way to digitally identify people reviewing Uber’s software in a specific location. Uber would then obfuscate its code for people within that geofenced area, essentially drawing a digital lasso around those it wanted to keep in the dark. Apple employees at its headquarters were unable to see Uber’s fingerprinting."
Found more info and a potential method on this article.
Will Strafach examined a 2014 build of the Uber iOS app and found them using private APIs to use IOKit to pull the device serial number from the device registry.
https://twitter.com/chronic/status/856250223777206273
There might be more, but this alone is a blatant violation of App Store policy. Strafach confirms that the technique Uber was using no longer works in iOS 10.]
Github project here - https://github.com/erica/uidevice-extension/blob/7adc1d13946fca6fcb4b5f0b6e45911ab4a9a671/UIDevice-IOKitExtensions.m
Even I was too curious to know. I read a tweet, that basically hints that they exploited IOKits registries to do this.
Seems like they got some identifier from IOKits internals and saved it at their end to identify as device.
https://twitter.com/chronic/status/856250223777206273
Today I saw a news feature on the TeenSafe app. They showed features such as locking out an iPhone and eavesdropping on the text messages sent by a phone. I understand how this might be possible on Android but how can this be done on a non-jailbreaked iPhone?
This is interesting, but it sounds kind of scary though knowing someone else is tracking your every move. Anyway, I read their website and I saw this:
How does TeenSafe work
TeenSafe Control uses Mobile Device Management (MDM) Protocol, similar to the way corporations secure devices used on their networks in order to protect their network from Internet threats. An MDM certificate is installed on your teen’s iPhone and paired with the TeenSafe Control App on your iPhone, giving you the power to control it remotely. TeenSafe Control’s proprietary method of incorporating MDM makes it difficult for your teenager to disable or remove it. In cases where they find a way, we will alert you via email.
You can look up on Mobile Device Management to find out more.
Ok, I found out here:
http://www.bewebsmart.com/parental-controls/monitor-imessage-with-teensafe/
Basically, you need your teen's iCloud username and password and iCloud backup has to be enabled for the device. So no special magic here and it's not perfect.
I was trying to get a specific info before a IOS App development task which I searched but couldn't find anything relevant.
Wanted to know whether this requirement restricts (non compliance issue as per publish guidelines) the app to be published in App Store with features as below
User scans and lists all available wifi connections in a tableview
Selects one of the Wifi connection and connects on button click
Stores the password and SSID for future connections.
Would there be any compliance issue related to the same functionalities when submitting to IOS app store. One of my colleague have advised me about the same but not able to explain why? Which I tried to find out searching the internet, but too specific to find anything relevant. Deeply appreciate an Expert advise on this.
Thanks in advance.
I can't find anything in the Review Guidelines that would object your app idea: https://developer.apple.com/app-store/review/guidelines
A couple of areas where you should have a more detailed look:
2.5.1 Apps may only use public APIs.
2.5.9 Apps that alter the functions of standard switches, such as the Volume Up/Down and Ring/Silent switches, or other native user
interface elements or behaviors will be rejected.
5.1 Privacy
Technically, I'm not sure if it's even possible to change the WIFI not via the settings app, so I'd have a look their first. (https://apple.stackexchange.com/questions/1592/is-there-an-ipod-app-to-easily-switch-wifi-on-and-off)
I don't believe I've ever seen an app or a way to change SSID outside the Settings app. I explored a way to detect network changes, connects, disconnects, which work fine while the app is running. I was never able to influence how the user connected, just that a change happened. It also falls apart pretty quickly when the user backgrounds the app. Trying to keep a background task open long enough to poll the current connection fails pretty fast.
I wish Apple would provide some system level notification of Wifi connect events. This could be very useful to developers that want a little more control than Background App Refresh events.
I work as a software developer, but I am absolutely new to Apple in general. We have the following case in a project, and we have not been able to figure out a solution for it, I would really appreciate some advise to find a solution (or drop the case if not possible)
A (potential) customer with multiple retail stores is interested in having a very simple app to display some content (this could an image or html, nothing too complicated) and periodically update this content from a server (this requirement is important). So it is very simple case, to use the device screen as advertising space
But here is the catch, users should be able to go out of this app and check out the device's system and other apps, and then the content should come back on the foreground when the device is idle. So basically we need something like a screensaver app that fetches the content (images) from a server and keeps them updated.
We have been looking at the guided access mode, but we are not sure it fulfills the requirements, because of the following issues
- Allowing the user to check out the device system and other apps. As far as we understood guided access restricts the device to one app.
- Re-launch the app (or bring it to the foreground) when the device has been idle for a period of time.
Note that we should account for a variety of devices (iPhone and iPads) with different OS versions
I appreciate your help and ideas. Thanks.
Apple does not allow apps to run continuously in the background except for a small limited group of exceptions. (music playing apps, for example.)
It's possible to set up your app to pretend to be a music playing app, and stay running in the background, but that means you will not be allowed on the app store.
Your client may be able to use the enterprise program to create apps for use in their retail stores. Enterprise apps don't have to go through the app store approval process.
I did this for a client recently (for an enterprise app.) As I recall I would have the app request background processing as soon as it moved to the background, and when it was notified that it's background time was ending, I would play a short "silence" sound and request another block of background time. Unfortunately it was work for hire and the contract ended, so I did not retain the source code.
There are 2 iPhone applications. One application running in the foreground and the other running in the background. Is there any way to get the background application to send data over USB without coming into foreground? Ideally we want to keep the foreground app in the foreground, while the background app process some data. Once the data is processed it will inform the foreground app that the data has been processed.
No it cannot. It cannot even do this without the use of private frameworks, unless you're in the Made for iPhone program. If you are, then your organization will know, based on the documentation made available to you, what you can and cannot access, when and how.
Should you be in the Made for iPhone program, and are unclear as to what you have access to and when, contact the person in your organization who is the technical contact with Apple for this program, they will be able to give you the details.
If the task is started while the app is in the foreground and you call the appropriate beginBackgroundTask/endBackgroundTask methods, you should be able to have it continue running after the app is backgrounded.
Note that access to USB is restricted (see jer's answer) and that there's no officially sanctioned way to communicate between different apps on the same device. Also, you can only buy/download one app at a time in the App Store and I can't see Apple approving an app that required you to download a second app for it to work. So you may have bigger problems to solve first.
It would help significantly if you told us what you actually wanted to achieve. For example, "I want MyApp on the user's phone to communicate with MyApp on the user's computer".
The absolute easiest way is to send data between the phone and a computer is to require that they're both on the same Wi-Fi network. Several iPhone apps incorporate a web server (this was the easiest way of "file sharing" before OS 3.2), and many more iPhone apps connect to a computer running server software.
Your other options, more or less:
Reverse-engineer the Bluetooth side of GameKit and reimplement it on the computer-side. I'm not aware of anyone who's done this. Loosely, I think it's IP over Bluetooth PAN plus some sort of Bluetooth service discovery.
Audio input/output, e.g. the headphone jack or certain pins on the dock connector. I'm not entirely sure how the mic side works (the resistance was a bit high for a carbon mic when I checked), but you might get lucky and find a way to turn it into "line in" or find "line in" pins on the dock connector.
A webcam pointing at the iDevice screen (and the iDevice camera pointing at the computer screen). Ewwwww.
Join the MFi program.