I noticed that there is a different between my app compatibility and another apps in the AppStore.
In my app it's look like this:
And in the other apps it's look like this:
You can see that at my app it's give a full list. What can be the problem\difference between the two apps?
This is because your app is only available for 64-bit devices, the other apps are for 32 and 64 bit devices. This may be caused by an extension for your app or a framework which is only available on 64 bit devices.
For more information see the Apple Docs: https://developer.apple.com/library/content/documentation/General/Conceptual/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertingYourAppto64-Bit.html
Related
Currently iOS 10 supports both 32-bit and 64-bit binaries. Come iOS 11 only 64-bit binaries will be accepted.
We need to figure out how many of our users are currently running on 32-bit hardware, however iTunesConnect Analytics doesn't break down the devices by:
Device Model, or
CPU Architecture
The only breakdowns are by device family or iOS version. This isn't granular enough.
An "iPhone" device family could be iPhone 5c or iPhone 6. The former is 32-bit, the latter is 64-bit.
Similarly, an "iOS version 10" metric could be iPhone 5c or iPhone 6. The former is 32-bit, the latter is 64-bit.
How can we identify currently active devices that are on 32-bit architecture and would become obsolete?
Update:
To reiterate, as this keeps coming up: we are looking into a way to determine this using Apple's Analytics or other developer tools.
Obviously integrating a 3rd party SDK or even our own code to detect and report is easy enough, but a little late in the game.
In this answer I will address the root question which is: "How do I determine how many 32-bit device users I will lose when Apple bans 32bit apps from the App Store for the iOS 11 release?"
As anticipated in the comments, Apple has NOT banned 32bit apps from the App Store as of Sept 23, 2017. Instead, they have continued to support 32bit apps in the App Store for older devices. The only requirement at this time for apps is that they must support 64bit as well.
This is because the requirements for iOS 11 and for the App Store are independent sets of requirements.
I have been able to confirm this by viewing the available updates for my 32bit iPad 2 running iOS 9.3 (see below). I can confirm that the apps do run (though rather slowly due to the old hardware).
While this issue is not currently a concern, I would keep an eye on Apple's Developer News and Updates page for future changes in app submission requirements.
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
I released my first app in the AppStore right before Apple's holiday break. On the iPhone the size of app listed in the App Store is 15MB. However, the exact same app on iPad is 28.8MB according to AppStore page.
Why is there a the huge size difference if both the apps have everything the same?
Do they? I do not think so.
Apple sends only the images along with the app file that the particular devices needs. The non-retina devices will have really tiny size while the app for the iPhone 6S Plus will be a lot larger.
The term used for that procedure is App Thinning. What I mentioned regarding the images is a part of that and called Slicing
Apple has introduced a concept called App Thinning with iOS 9. It contains three strategies to reduce the download size of you App:
Slicing: In short only the images and resources needed for a specific target device are delivered. If someone downloads the App with iOS 8 or earlier, the full package will be downloaded
Slicing is the process of creating and delivering variants of the app bundle for different target devices. A variant contains only the executable architecture and resources that are needed for the target device
Bitcode: If active, Apple can optimise your code for a specific device. For example deploy with 32 or 64 Bit compiled code
On demand data sources: Must be used explicitely by you
I'd like to restrict the sales of my next app to devices that are able to control an Apple Watch (iPhone 5 at least).
I can't find (in the doc or on Internet) which value for UIRequiredDeviceCapabilities I should put in the info.plist file.
There is currently API for knowing whether a device is paired with Apple Watch.
Even simply from an iOS app review perspective, if a user downloads an app onto their iPhone that app is expected to provide value regardless of any external products.
See Apple's App Review Guidelines for more detail
There is no such API.
As you are also no doubt aware, requiring iOS 9 will also not assist you as it runs on iPhone 4S. While it is speculation, it is possible that this will de facto change if iOS 10 is released in September/October 2016, as expected, as that may remove support for older iPhones that cannot be paired with an Apple Watch (for mostly reasons of performance, unrelated to Apple Watch capability).
However, if you are wanting to do this because you want the app to only be used with the watch, be aware that App Store review requires that apps with WatchKit extensions need to also provide useful functionality in their own right, and cannot be solely the code backend for a watch app. Therefore, you would be expected to provide functionality to users who do not (and even cannot) attach an Apple Watch to their phones.
I am enrolled in the Apple Developer Program ($99/year) and I have the trial (free) version of MonoTouch. Am I able to submit MonoTouch apps to the App Store with what I have now or do I need to get one of the paid versions of MonoTouch first? I know that one of the differences between the free version of MonoTouch vs. the paid versions is the ability to run your apps on your iOS hardware during development but doesn't the Apple Developer Program get you some kind of ability to do this as well? Just a bit confused.
Note: If this belongs in another StackExchange site, please let me know and I will move it.
I think you're getting confused...
MonoDevelop is free, its MonoTouch that has the trail/paid versions. Basically you'll need to purchase either MonoTouch Professional or MonoTouch Enterprise in order to get your iPhone app into the App store as the trail version only allows to run the app in the simulator.
http://monotouch.net/Store - see first paragraph
EDIT: Being part of the Apple Dev Program provides you with a Developer Certificate which allows you to upload applications to the App Store (generally, be it obj-c based or other) whereas the paid versions of MonoTouch provides you with the mechanism to get your application in a state where it can be deployed to a device and the app store - and also a cunning way of generating money. Because whose going to develop iPhone apps without a desire to distribute them ;)
without a license, you can only run MonoTouch apps in the simulator. You cannot deploy them to a device or the App Store.