iOS Two different apps talk to each other - iphone

I have an app that I want to release for iPhone and iPad. There is a feature in the app that allows data transfers via gamekit between other people who have the app. I don't want to make the app universal. I want an iPhone version and an iPad HD version. The iPhone version will be free and the iPad version will be paid. My question is, will my iPhone app be able to "speak" to my iPad app if they are two separate apps? The code base is the same for both iPhone and iPad as far as data transmission goes.
Thoughts?

Yes, the two app's can speak using either GameKit over bluetooth or via Bonjour wifi. When you setup a GameKit session, you define the the session with a string identifier. This identifier is the key, as any app that includes the same identifier in it's code will be able to speak to other apps that use the same identifier regardless of what device or app bundle the user is running with.

Related

How to hide an iPhone App from the iPad's AppStore

I noticed that WhatsApp Messenger [1] isn't available for iPad anymore.
Apple states that "iPad runs nearly all applications, or apps, designed for iPhone and iPod Touch" [2]
Now, I must have missed a memo since I knew that any iPhone App could be downloaded on iPad too.
So we finally get to my question: How to hide an iPhone App from the iPad's AppStore?
Thanks.
[1] https://itunes.apple.com/it/app/whatsapp-messenger/id310633997?mt=8
[2] http://support.apple.com/kb/ht4082
As far as I know, WhatsApp has never been available for download on the iPad. This is because they listed telephony as one of the Required Device Capabilities in their info.plist.
That's the only way that you can get an iPhone app not to install on an iPad. Apple doesn't provide any other way as they want all (most) of the iPhone apps to be compatible on iPads (if the app is not universal it'll just run in the iPhone scaled mode).
Please note that if you require telephony to achieve this, but that's not an actual requirement for your app, it will most likely be rejected on the App review process as Apple don't allow artificial hardware requirements used for limiting device types.

iPhone APP Submission Restricting Hardware With Microphone

We have an app that we would like to restrict to only devices with Microphones. We added this into the Plist and now can not submit the app since we have already submitted the app without the restriction. What is the deal with this, any easy way around this?
Also, Is there a way to restrict installation on the iPad / iTouch while allowing installations on iPad? Is there a Plist entry for this? The only real item the sticks out is the IOS Version.
Also what about devices that can have Microphones plugged in but not imbedded?
The easiest way to do the submission with the microphone restriction would be to create a completely new app in the appstore, and just change the bundle identifier of your local Xcode project. Apple can't complain that it used to not be restricted in this manner when it's an entirely new app.
You can handle both external and internal microphones with Audio Queue Services. A more high-level implementation is AVAudioRecorder.
I can't help you with your first query but you can compile only for iPad by specifying iPad & not iPhone/iPad in the target devices part of the project's settings in Xcode.

iphone blutooth device connection

I have an app which has to connect to a medical bluetooth device to get data from that device. (Not to any iOS device).
Using which framework or class I can connect and receive data from?
Thanks.
After you get an MFi license, you then have to have an Apple supplied authentication chip on the bluetooth device. You must create custom protocols to transfer the data.
The BT on iOS is locked down and you can only access simple AVRCP events inside an app, no data transfer is allowed, except using GameKit (which only works between iOS devices).
UPDATE:
If you are using a BLE device then you can checkout this, it is iOS 5 only though.
http://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CoreBluetooth_Framework/_index.html
Are you planning to develop this app with a jailbreak device?
If not, you have to enroll the MFI(Made For iPhone) program, then you can define your custom protocol and use the ExternalAccessory framework to communicate with your device.
If yes, take a look at Btstack project.

How can I publish an iPad app from an existing iPhone codebase?

I have a rock solid iPhone app and wanted to know how I could get an iPad app out through iTunes Connect.
What steps are required in Xcode (or AppCode) to compile the app iPad friendly?
What features (like gps) should I pull from the iPhone code base to prevent strange crashing on the iPad?
How do I link and publish the iPad app in iTunes Connect so users who search see my app with a + sign in the App Store (assuming this means it's iPhone and iPad friendly)?
And finally, what else should I look out for doing this from a single obj-c codebase?
There are two types of porting possible one is universal app (in which a plus sign is shown with your app in itunes) and the other is two device-specific application (in which two targets are created one for iphone and one for ipad and both get released as complete independent apps). Now it depends on you which modal you choose. Yet I ported my apps using the second option as I want user to buy each time for each of his device :). Anyways, solely depends on you, here's a good tutorial for this http://www.raywenderlich.com/1111/how-to-port-an-iphone-application-to-the-ipad. I haven't came across any such thing which can crash a similar app on the ipad but might there'd be some. Though there are somethings which I came across that the ipad (ipod too) doesn't have any vibrator available, as my iphone app was using vibration to give some indication, so if you're using it you might need to circumvent it with some alternatives plus your app should support the PortraitUpsideDown orientation. It's weird that APPLE rejected my third ipad app due to this after releasing my first two apps with the similar limitation :).

Prevent iPhone app to run on iPad

I'm shipping two binaries; one for iPhone/iTouch and the other for iPad. It's the same application.
Will Apple ensure that the user will never receive an iPhone version of the app on the iPad? If YES, then I don't have anything to worry about, but if not then I do have a problem.
The reason I ask is the iPhone application will simply not work correctly on the iPad because the server knows it's an iPad and will deliver the iPad HD content to it and the iPhone cannot handle that. I would rather not hack my application to send the server a fake device type if running the iPhone app on the iPad in order to receive the correct resources.
Suggestions?
I've been looking for this for a while because I couldn't prevent the iPhone app to load on the iPad. Searched a bit to understand why this was happening, followed #hotpaw2 instructions and found this on the official apple store rules:
UPDATE:
2.4.1 To ensure people get the most out of your app, iPhone apps should run on iPad whenever possible. We encourage you to consider
building universal apps so customers can use them on all of their
devices. Learn more about Universal apps.
https://developer.apple.com/app-store/review/guidelines/
The SDK and/or App store rules prohibit you from preventing an iPhone app from running on an iPad in 1X or 2X zoom mode, unless there are other requirements listed in the app plist. Apple's app review is known to test iPhone-only app submissions (unless there are other requirements) on an iPad, and reject the app if it doesn't run properly.
Other requirements (as listed under UIRequiredDeviceCapabilities in the app's plist) might include your app requiring telephone capabilities (or healthkit, etc.), which might help you temporarily, but still won't prevent the app from running on some hypothetical future iPad product that includes telephony capabilities (and/or healthkit, etc.).
Actually you can.
Add telephony to UIRequiredDeviceCapabilities in your plist file.
But i really not recommend it and maybe you could get rejected because of gratuitously using this property.
I think you should handle that there are iPad versions and iPhone versions on iPads, use the second one as an iPhone.
Also don't forget that retina iPads will use upscaled applications at retina resolution while none retina ones use the standard resolution. And this behavior can tweaked using jailbreak tweaks like RetinaPad and FullForce.
In the plist settings, add Application requires iPhone environment and set the boolean to YES