Limit App to only iPad 1 - ios

I have an app that has been in the store for a while now. I am coming out with a completely new app to replace the old one but it is not compatible with the original iPad (iPad 1). I don't want to completely get rid of the original app because, believe it or not, there is still a large number of people running it on iPad 1's. Is there a way to somehow set up either the app or the app store to where users who have newer iPads only see the new app in the app store and not the old one? (They have different titles, icons, etc)

EDIT: it seems that you cannot change the capabilities of an already published app when you submit a new version. This would rule out the first approach I suggested and leave only limiting the current deployment target.
You could require a device capability not available on the iPad 1, like the camera.
This amounts to setting UIRequiredDeviceCapabilities in your app plist file to front-facing-camera.
Another option you would have, in case the former one did not work, is setting your deployment target to iOS 6 -- this would also rule out the iPad 1s (and all devices running iOS 4 and 5).

Related

Replacing an app with an universal build on the iOS App Store

I had developed two separate builds for my game, one for iPhone and one for iPad. I had uploaded each of these builds on the iOS App Store a few years ago, back before universal builds become common.
The names for these builds are “XYZ” (for iPhone) and “XYZ HD” (for iPad). Now, I have developed a universal build for the same game and I would like to name my updated game as “XYZ HD” on the iOS App Store. I have two questions:
How many listings for this game should I maintain? I definitely want to maintain the iPhone listing as it has better and more user reviews compared to the iPad version. If I keep both listings, it would be odd as I would have the same universal build for each listing and the same pricing. I suppose I could point out in the updated listing that it is a universal build.
What should I name the updated listing(s)? If I only maintain one listing, I would maintain the iPhone version but I understand that Apple will not allow me to call my iPhone build “XYZ HD” even if I unpublish the iPad version. Therefore, I could keep the old name “XYZ” which does not highlight that it now has better graphics for iPads or I could do some weird new name to get around Apple’s naming restrictions such as “XYZ–HD”.
I’d appreciate any suggestions on these issues. Thank you.
Maintain 1 listing (your most downloaded/rated/reviewed one)
Get rid of the "HD", it's not relevant anymore. All apps and devices are HD in 2015. Apps that have "HD" in their name are most likely old apps from the times of not universal apps.
You could make a little update to your iPad version to warn your user of the new listing model. (Or use your app messaging/notification system if you already have one)

Same app name for iPhone and iPad,but different release dates

We are about the release app to the iPad store under the name appName. We don't want to add anything to that name (e.g. HD ) . the app is now only for iPad(not universal) .
Later we would like to release it to the iPhone under the same name .
But, for this to work we will have to later make that same app to be universal , and release an update to it.
Problem: On the release date to iPhone , we will not get the right attention , because its only an update, not a new app. (e.g. get to be in the first places/promption by Apple ,etc ).
How you usually solve this problem ,to get a full attention as a new release, when you only submit an update to include another iDevices ?
This is more of opinion question rather than a programming one. Still I will let you know my thoughts.
This statement is not entirely true.
"Problem: On the release date to iPhone , we will not get the right attention , because its only an update, not a new app. (e.g. get to be in the first places/promption by Apple ,etc )."
what exactly are you plans for advertising your release or update? If you hope that website that monitor new app releases automatically to advertise your app then yes, you get a shot at the new release and updates not so much.
You can release an iPad version and then with an update make the app universal as long as you advertise your app update like mad all over the social media and such. Hopefully your update will be received with just as interest as your initial app release.
The only other option, which you already know, is to create two different apps with different names "HD" and have two sets of code to maintain which I can tell from experience is a pain in the butt.
If I were you I would hold off on releasing an iPad version till I made it universal. Trust me Apple customers now expect all apps to work on every apple devices and not to buy the same app twice for iPhone vs iPad.
Just my two cents.
You can use the app same name, but launch the universal version of the app with a different bundle ID. No problem from the Apple side.

CocoonJS for iPhone (NOT iPad)

I've already spent two weeks trying to figure this out, and I'm unable to get it working... I made an HTML + Javascript game intended to work on both Android and iOS devices, so I used Ludei's CocoonJS (https://www.ludei.com/cocoonjs/) to compile the project and generate two projects: one for Android and one for iOS.
I've already successfully uploaded the Android project, which is available at the PlayStore and works well on different devices, but I'm heaving REALLY trouble with the iOS one. The problem is that, somehow, when I upload the project using XCode, it is understood as being a universal application, though it is only intended for iPhone devices. Due to this, Apple keeps rejecting it, as the game's screen doesn't adapts to the iPad screens.
As I don't want the game to fit iPads, the "only" thing I have to do is to upload the game specifying that it only is intended for iPhone devices... But such a trivial thing begins to seem impossible after days and days of fails.
What I've tried doing:
CocoonJS doesn't let you specify a device family, so it seems that the XCode project it compiles is intended to be universal. However, before uploading the app via XCode, you can change its "Build" attributes.
I've ensured one time and another that every option within the "Build" and the "Info" list points only at iPhone devices with iOS 7 (and not iPads nor universal).
I've tried creating multiple projects on iTunes Connect to ensure that the whole process doesn't get messed with a previous universal binary or some other bizarre things.
I'm only uploading screenshots for the 3.5 and 4 inches screens (iPhone 4 and iPhone 5).
What I'm ALWAYS getting:
An issue just when the project finsihes uploading saying that a localized screenshot is missing... I've searched over the net and it seems that this message may refer to various things, among them the fact that a supported device has no screenshot... Guess which one: iPad, I suppose!
The scariest part of everything is that when I open the details of the binary uploaded to iTunes Connect it shows a line:
Device family: iPhone / iPod, iPad
What the...!? What's the iPad doing here? I've tried almost everything and I'm not even to solve this... Maybe I'm missing something on the XCode "archiving" process, or I'm missing something on the iTunes project creation process... or maybe I'm missing something relating CocoonJS... I just don't know what else to do!
Anyone found something similar or can guess what can be happening?
Thanks in advance for your time and effort! :)
I faced the same issue recently while uploading a game created with CocoonJS. The problem is that CocoonJS uses the info.plist for most of the settings and configurations. So, while looking into the plist, I found the issue.
There's an entry in the plist called UIDeviceFamily which overwrites the device selection in build settings. It's an array containing two values, 1 and 2. 1 denotes iPhone and iPod while 2 denotes iPad. So just delete the second entry (2) from this array and you should be good to go. You can read more about it here.

Lock iOS app in single app mode programmatically

Note : I don't want to submit this app to app store.
What i want to achieve :
I want simple app with one view having two button Lock and Unlock.
Lock - This button will lock device. Only this app's screen will show nothing else will be accessible even after restart same screen will show up. Home button, gestures will get disabled similar to single app mode.
Unlock - This will unlock device and switch to normal behaviour of device.
iOS :
I want this for iOS 4.3 and above.
I have checked following solutions, but these don't match my requirements
Configuration profile
Lock-down iPhone/iPod/iPad so it can only run one app
But it is manual (reboot device, open app which you want to run in single app mode). I want to do it programmatically the way i mentioned above through my app.
Guided access (iOS 6 and above)
How to lock down user to Single App mode in iOS 6, Programmatically?
I want it do for all os and programatically.
Is there any way to do this ? As i don't wan't to submit it to app store is there any private api, some hack for springboard to achieve this ?
Thanks in advance !!
As I know in iOS 7 there is a new feature which allow to do exactly what you want.
However, it's only applicable for iOS 7 (and I believe it's only applicable to a supervised devices).
1) You will need to install restriction configuration profile with autonomousSingleAppModePermittedAppIDs key (take a look here)
This is one time step and a user will need to manually accept this configuration profile.
There is another option to use MDM to install it silently, but it could be an overkill for you.
2) You should use API:
UIAccessibilityRequestGuidedAccessSession (to lock/unlock)
It is defined here
3) And most beautility part. All of it is officially document. So, you can even submit it to AppStore.
P.S. Why do you care about 4.3 or 5? They have tiny market share by now. Most likely even iOS 6 has below 20% market share already.
Update 1
Potentially, you can try to use API which sends clicks and keys (search for GSEvent in iPhone-privateapi tag). May be using these API's you can do triple home to toggle accessibility on and off.
If this work, I think you should be able to cover iOS 6. I am not sure whether both this API and triple home click were available prior that.
It looks like this private API is unaccessible anymore in iOS 7. So, probably you can ignore this idea.
Just wanted to write on this even though this is old as i needed to implement a similar solution and i got it working. The steps for me as follows and a note here is that this involves MDM and other specific steps.
My requirement was as follows. Each of the iPad at different locations has a set of apps installed.For ease of it lets assume each Dept. has their own apps. Participants open a app related to their dept. to take a test, the APP automatically Locks the iPad to single-app Mode and at the end of the test, it will unlock it self.
Supervise the iPad/iphone using the Apple Configurator.
Install the MDM related files ( Each MDM has its own set of instructions, usually involves downloading a profile).
Every MDM has a option of Single APP Mode or MultipleAppMode. Select the second option and add the app IDs to the list. (A single APP mode works pretty well with MDM's but i did not want the app to be locked to a single APP all the time).
I used the UIAccessibilityRequestGuidedAccessSession api to lock unlock the device from single app mode.
http://bobxcode.blogspot.com/2015/12/programmatically-implement-single-app.html
Thanks,
Bob
In MDM configuration, There is an option
autonomousSingleAppModePermittedAppIDs
Optional. Supervised only. If present, allows apps
identified by the bundle IDs listed in the array to
autonomously enter Single App Mode.
Availability: Available only in iOS 7.0 and later.
But this needs Supervised Device mode.

iOS App - Universal or separate targets?

I am trying to decide on whether or not an app should be Universal. Here are my requirements and questions related to each:
In-app purchases. If you download the app on the iPhone and make a purchase, it should reflect that in the iPad version. Obviously you shouldn't have to buy it twice. Is this a dealbreaker? Is there some way to tie in-app purchases together in separate binaries?
iCloud sync would be nice. The user creates content in the app and it would be great if the content created on the iPhone showed up in the iPad app. Again, does this mean it has to be universal?
The app is large and contains a lot of images. The main drawback of a universal app is that I'm capped at 50MB over-air download, and that the single binary means iPhones get all the iPad images and vice versa.
if I did make them two separate apps, do I separate everything in my Xcode project into two different targets and build that way?
Any answers to these questions or other things I should consider would be appreciated.
I think,better option is Universal App.
The app is large and contains a lot of images. The main drawback of a
universal app is that I'm capped at 50MB over-air download, and that
the single binary means iPhones get all the iPad images and vice
versa.
Yes. This is the only difficulty that I measured. However you can clearly specify which images should be load in iPad and which should only load in iPhone by naming it separately.
If Im correct , you can use some thing like myImage~iPhone.png or myImage~iPad.png

Resources