App only for iPhones not iPod. (like Whatsapp) - ios

I have been googling from few days like when we goto AppStore in iPod and try installing 'Whatsapp' it shows a pop-up with message :
"This app is not compatible with your device."
So my question is, being a Developer how do we do this ? Where this can be set somewhere within our application build or itunesconnect or some where else ? Howw ?
Any suggestions will be helpful. :)

The correct way to do this is to include for the UIRequiredDeviceCapabilities entry (a dictionary), the telephony key with a value of YES, meaning, only devices that support telephony can use the app.
Also, check out the complete reference of what keys are available for use with UIRequiredDeviceCapabilities.

You could do that by changing the required capability of a device. For instance, an app with telephony requirement will only work on iPhone. Check this Apple iOS device compatibility reference

Related

Is there a way to exclude an app that requires pedometer from the App Store?

I'm working on an app that requires step counting.
There are several devices that don't support this feature (for example in my iPad mini 2, CMPedometer.isStepCountingAvailable() returns false).
Since the app heavily relies on the pedometer, I'd like to make it unavailable to download for unsupported devices.
I would expect to find a pedometer-related entry in the documentation of UIRequiredDeviceCapabilities, but there is none.
Is this possible in any way?
No, it is not possible to make an app unavailable for download on the basis of CMPedometer.isStepCountingAvailable(). The preferred method would be to display a notice to the user once downloaded, that their device does not support the required functionality.

Apple rejected my app: UIRequiredDeviceCapabilities key

I developed an app with ionic 3 and I’m trying to publish it for Android and iOS. With Android the publish process was fast as a lighting bolt without any problem. With iOS the publish process is a pain, they reject my app for this reason:
"Thank you for your response.
Regarding Guideline 2.3 - Performance - Accurate Metadata, we continue to find that your app does not install on iPad
To resolve this issue, it would be appropriate to check the UIRequiredDeviceCapabilities key to verify that it contains only the attributes required for your app features or the attributes that must not be present on the device. Attributes specified by a dictionary should be set to true if they are required and false if they must not be present on the device.
We look forward to reviewing your resubmitted app."
I checked the app info.plist but the key “UIRequiredDeviceCapabilities” is not present and I don’t know how to set it in order to address the issue.
Moreover I tested the app on several ipad simulators without any problem…
There’s anyone with the same issue ?
I solved the issue by adding the "telephony" property into "UIRequiredDeviceCapabilities" because my app use the "tel:" link so in this case the property is required.

Uniquely Identify iOS device over multiple users

I have done a lot of research on this so please read the question before marking this as similar to some other question.
Our app needs to uniquely determine an iPhone such that even when user completely wipes a phone, when he runs our app we can be sure that it is the same device. The most important thing is we also need to determine devices over multiple Apple ID users so suggestions containing Keychain access and uniqueVendorID might not work as those change when another user starts using that phone. And as I have read using MAC addresses and old UDID for devices is not longer available as of iOS 6.0. I went through [UIDevice identifierForVendor] but this NSUUID changes when all the app by the same vendor has been uninstalled Reference.
I have looked through these resources:
UIDevice uniqueIdentifier Deprecated - What To Do Now?
and
What is a long-term method I can use to uniquely identify an iOS device?
I can not disclose the nature of work that my app performs due to non-disclosure, but to clarify what I require:
Multiple users might use our app on same phones, I need a way to know that the device user A used before and has reported to have handed over to user B is the same device on which our app was run. Is there any way to achieve this?
There's no way to achieve this.
If it's really the case that different users might use your app on the same device after a factory reset of the device, then what you want is not possible. Apple deprecated UIDevice uniqueIdentifier which would have been the way to do this.
as long as they dont restore/wipe the device identifierForVendor is ok

Retrieving UDID via private API

I'm looking for a way to retrieve the UDID on devices running iOS 6+ (Enterprise deployment only - no app store limitations).
Calling the (now private) method uniqueIdentifier returns the 'vendorIdentifier' starting with 'FFFFFFF'. Unfortunately thats not what I want.
Any ideas? Is there another private method or something?
Thanks in advance.
I recommend you reading this article. To sum up:
The previously deprecated uniqueIdentifier now works like vendorIdentifier on iOS 7+, so it's no longer usable even for Enterprise Apps
OpenUDID cannot be shared between Applications on iOS 7+ and now can change. It's still usable but no longer recommended.
The vendorIdentifier hasn't changed, but it's not recommended for Enterprise Apps because it can change when updating the App.
The new advertisingIdentifier API is the way to go for new Apps. It's the same for all Apps and should not change frequently, but the user can reset it in the settings page.
Edit: Website udid.io obtains the real Device UDID instead of the obfuscated one if you need it for anything outside your App. If you need the UDID from within the App, see my answer above.
You can get a Unique UDID via this method using private api. Follow this link
Look for the code in accepted answer.
Sorry, but Apple warned it would be deprecated and it has been. I've had the same headache myself.
I can't help you identify the device in the same way Apple do, but you can always generate an unique UUID on app launch and stash that away in KeyChain. It won't be perfect, but it will persist between installations and will be unique to the device. As far as I know, that's the current solution

Removing iPad support from app

I uploaded an app to the App Store a while ago, but I have to delete the iPad support for different reasons. I am not talking about removing the app from the iPad App Store, only removing the iPad support. The Developer website states the following:
Developers who wish to issue updates, but remove device support, have three choices:
Fix their app so that it can work on the devices they originally set out to support.
Target a newer version of iOS that requires a newer device.
Remove their app from the store, and upload the new app with a different bundle ID.
The problem is that if I remove the app from the app store and upload it again, I can not use the same app name. That is not an option.
Is there any way out of this mess?
Answering my own question - no, there is no other way! I ended up creating a decent looking iPad app to fix the problem.
Apple will not allow you to remove support for iPad if you ever offered it on a given app name. Further, the app has to be well enough designed for iPad that Apple likes it enough to allow it to pass. We had an app rejected for this reason.

Resources