Can't update iPhone apps - iphone

After making an update to an iPad app I released some time ago, I've been getting reports that people are unable to actually update the app without deleting and re-installing. However, as far as I know, nothing in the update should be causing this. (All the update deals with is letting people email PDF documents, nothing major.) When people attempt to update, they're asked for their iTunes password, but after entering it, it merely goes back to the update screen and nothing happens. Additionally, it would seem that this only happens with my app, the people in question aren't having any issues with the other various apps on the App Store. Does anyone know what might be causing this and how I could fix it?
Thanks in advance!
(Also, if it matters, the app is a custom B2B app, the general public can't purchase it.)

I'm removing the text of my answer because it's so inaccurate it's embarrassing. I mistook "B2B" for "Enterprise" and answered based off of that. To make up for it, I'll look into the problem a bit more and if I find anything I will edit this answer accordingly.
Edit:
Okay, I can see why you put a bounty for this question on SO; there's not really any data on a problem like this anywhere. Frankly, there's not much available information on B2B in general. I'll post what I found anyway, in case it can be of any help to you.
I found the details reason behind Maggie's question, there. Per Editing and Updating App Information:
Updates keep the same Apple ID and bundle ID, which means they are
associated with your first version and free to your customers
Also, apparently, "You can't change the CFBundleIdentifier of a released app if you want to release updates for it, the App Store will automatically reject it when you upload." which is something I can vouch for, having experienced this with a normal app. I do know that for a B2B app you do have to submit it to Apple for review, but I can't tell from the documentation I found if you need to actually submit it to the App Store, so it may not go through the various checks that normal apps go through, so this could be your problem.
Aside from that, according to the VPP guide, if your customers are installing the apps on the devices with Apple Configurator (broken right now, per app store reviews) the updates also have to be done with the Configurator. You haven't said that Configurator was involved, but I did find this tidbit.
• Use Apple Configurator to install apps on new or supervised devices.
Apple Configurator on a Mac makes it easy to mass configure and deploy
devices that are centrally controlled. Redemption code spreadsheets
acquired through the Volume Purchase Program can be imported by Apple
Configurator, tracking the number of apps installed on each device. To
update deployed apps using Apple Configurator, you must reconnect to
the same Mac from which the apps were installed. Learn more at
itunes.apple.com/us/app/apple-configurator
Anyway, good luck. Wish I could be more help.

What you are describing (assuming that it is accurate) would certainly be a bug on Apple's side. If users are trying to update the app and the update is not being processed, then in one way or another that is a bug that Apple needs to address. Nothing that you do as a developer should be able to cause that situation to happen. I would suggest contacting Apple and possibly filing a bug report.

It seems that apple wants you to develop the Iphone apps in the latest build. Sometimes this cause issues between realeases (diferent versions of Itunes, OSX, IOS, etc) when you try to update your apps.
Try to publish the app in the latest version of xcode.
That happens a lot in iphone development testing.
Hope this help.

When updating an app, iOS looks for the bundleId and if there is another app with the same bundleId, it updates the app with the highest version number. Maybe the version number is not set correctly or maybe people have issues because an other app (from the AppStore or an other B2B app) have the same bundleID but a higher version number.

I'm by far not an iPhone expert, but it seems something related might have been fixed in iOS 6.0.1.
Fixes a bug that prevents iPhone 5 from installing software updates
wirelessly over the air

Related

iOS 8.0.2 Library Not Loaded libswiftCore.dylib

I have an application that uses HealthKit and Swift in it, everything compiles and runs fine when I test it from Xcode on a simulator or a device. I tested, debugged it, and submitted it to the iTunes store. When the application was approved I downloaded the new version from the store and it crashed right away. This was extremely puzzling as I have never had this issue before. I look at the diagnostic and usage logs on my phone and the crash report for the application says this:
Dyld Error Message:
Library not loaded: #rpath/libswiftCore.dylib
Reference from: /path/to/my/app
Reason: no suitable image found.
Did find: /path/to/my/app/Frameworks/libswiftCore.dylib: mmap() error 1 at address=0x100174000, size=0x0194000 segment=__TEXT in Segment::map()
Has anyone seen anything like this or know how to deal with it?
Thank you
EDIT:
The crashing issue magically fixed itself on the morning of October 4th, which tells me that this was an Apple issue. I have been emailing iTunes Connect Support, but they have not said one way or another what happened. I also opened a technical ticket without even a response back from Apple. This is pretty disappointing, not just for the fact that Apple is not being transparent about the issue, but also it makes me feel like I have no course of action later on down the road if this ever were to happen again.
Simply do the following two steps:
1) Delete the App from the device (or simulator)
2) Clean your workspace (CMD+SHIFT+K or via menu Product->Clean)
3) Build and run your app again.
Magically helps every time with all that startup / deploy stuff...
I also often get something like "application not found on device" or signing problems etc. Minutes before everything worked well.
This appears to possibly be a code signing issue on Apple's part, and the issue seems affect apps with embedded frameworks (including non-Swift apps). There are multiple accounts of developers being affected (myself included) who had only submitted an update, without changing any build settings. Some high profile apps appear to have been affected and tickets have been filed with Apple, but there has been no official response from them at this time.
EDIT: This has been confirmed.
Edit:
The app was rejected, after making this change, for the same reason, however, I am confident that the problem has to do with a missing architecture version in the libswiftCore.
I am going to post this as the provisional answer.
Xcode 6 Standard architectures exclude armv7s
Notice how the error says: Did find: /path/to/my/app/Frameworks/libswiftCore.dylib
So it did find the lib but it also says: Reason: no suitable image found.
After running lipo against the archived build it didn't contain armv7s in the swift library, or in the app binary. I manually added it per the link above and the binary now contains support for armv7s though the swift library still did not. My app is in expedited review so I should get feedback farily quick. I will follow up when that does happen.
I had the exact same problem with one of my app version updates (FunKeyBoard 1.1).
After doing some research, looks like it was an Apple side issue for many apps updated on October 3rd. Apple fixed the issue on October 4th by releasing an update, same version number, without needing any fix/re-upload from the app developer.
Obviously an Apple side issue, but I'm surprised Apple is very quiet about it. Many developers, including myself, got angry emails from users, and poor app reviews, as a result.
This error typically occurs when signing Swift apps with certificates that lack "OU" (Organizational Unit). All certificates created after the release of iOS 8 should have this. The simple solution is to create a new certificate to sign with.
For more details, see the official Apple comment here: https://developer.apple.com/library/ios/qa/qa1886/_index.html
It seems that my on the iTunes store is now downloading and opening as expected. From what I have been reading in the Apple Developer Forums, other apps are also working now too. I have not received any word from Apple on why this happened or what caused this. I opened up a technical support ticket with them and I also contacted iTunes Connect support and there is no
explanation or any information on this issue being resolved. This is pretty poor customer service on their part.
I had the same problem. I removed support for arm64 and added armv7s and now apple review team approve the app.

What is Apple's policy with regards to disabling old versions of an application?

My employer has a free iOS app in iTunesConnect that was originally released a couple of years ago and has received various updates over time. They now wish to stop supporting older versions of the application (1.x) and disable these older versions of the app.
My questions are:
Can we stop users from re-installing old versions of the app? If yes, how?
How do we disable/remove old versions of the app in iTunesConnect?
What is Apple's policy regarding disabling/removing old versions of applications?
I'm not an iOS developer and am unfamiliar with the whole Apple application development process. I have searched the web as well as the Apple developer centre and I've read through the Apple Developer Program Terms and Conditions but I haven't been able to find answers to any of my questions.
I have managed to find information about removing an application from sale but this removes the entire application, rather than just specific versions. (Deleting a free app from iTunesConnect)
David Smith's article (http://david-smith.org/blog/2012/06/20/hacking-paid-upgrades/) on Paid Upgrades mentions the ability to provide fixes for previous versions if they're not deleted from iTunesConnect. When I log into iTunesConnect, I only see the current version of the app listed so I'm assuming prior versions have been deleted already. I would, however, like to confirm that users can no longer download old versions of the app.
This article mentions users being able to download old versions of apps from iCloud (http://www.macrumors.com/2011/06/09/icloud-supports-re-downloading-some-discontinued-apps/) - can we prevent this? One option would be to mark the the version as having a "legal issue" but what ramifications does this have? and if I can't see the app in iTunesConnect then how do I do it?
I found a post asking about how to force a user to upgrade the application every time a new version is released but this doesn't answer my questions either. We want the users to upgrade but we're not wanting to force it programmatically. (Can I force an iPhone user to upgrade an application?)
I've also found lots of posts asking how to revert to previous versions of an app in the app store but again, this is not what we're wanting to do. We're wanting to disable older versions of the app but leave the most recent versions alone.
Before the flame wars begin:
Users that are unable to update to the latest version of the app for whatever reason are able to use a mobile website in place of the app. The website has the exact same functionality.
Can answers please be kept on-topic rather than getting into great debates over whether one should/shouldn't maintain legacy versions.
Thanks in advance :)
Users can typically only ever download the latest version of an application. There are a few ways I think they can get around that but in general only the latest version is available to users via the normal means.
If, however, you absolutely must prevent the old versions from being released you can do so when submitting a new update. Right after you say "Ready for Upload" you will be asked a question about if this update was for a 'legal reason' if you click YES then you will be given the opportunity to disable old versions of the app from download.
As to Apple's policy on this...I have no idea. But I can't think of any policy that would require you to support older versions moving forward.

Concrete info on iOS app upgrade process

Can someone provide concrete info on how the app upgrade process works on iOS as far as the developer is concerned? I've been rummaging through Stackoverflow only to find hand-waving explanations and no links to official documentation. Google search results only led to Cisco's IOS and the end-user upgrade process. I'd like to know the following:
How does the App Store know when you've provided a new version? Do I have to implement something in my app, which the App Store pings? Or do I set things up stuff through the Apple Developer website? I've been waiting 2 months for developer approval and have no idea what's going on behind those doors because I get access-denied messages when trying to read official articles.
Is there any Objective-C code I need to write for an upgrade to be possible? Any plist I need to edit?
How is payment affected when version 1 of the app is free, then version 2 is paid or version 1 is paid and version 2 changes its price.
Does Apple allow me to do forced upgrades? All the answers on Stackoverflow have been, "I think this is bad business logic" or "I think Apple forbids this, but I don't have the official documentation to prove it." At a certain point, very old versions will be too time consuming to support. You don't see Microsoft still supporting Windows 95, do you?
You just submit the new version to Apple. When it's approved, it will appear in the App Store.
Same as above, Apple pretty much does it all for you.
If you transition from free to paid, everyone that has downloaded the app for free will not have to pay to upgrade to the paid version.
IIRC you cannot force users to upgrade, but you can display a notification within the app to alert users that an update is available. To implement this, I would just have the app request a file on your server that tells the app what the current version number is. You do not need to support users on old version, if they have problems with an old version, it's fine to tell them to upgrade.

How to automatically update an iPhone app from within the app itself?

This link shows a video where an app upgrade is "forced" from within the app itself:
http://buzzworks.de/blog/update-ios-beta-apps-from-within-the-app
The App Store is not called in and it's said to work only for AdHoc
apps.
Anyone knows how is this possible?
edit: please give a look to the video before answering. AdHoc apps are signed by the developer and they do not come from the App Store. This sort of forced update is useful when doing beta testing and in enterprise applications.
I've found that it's all explained here:
http://developer.apple.com/iphone/library/featuredarticles/FA_Wireless_Enterprise_App_Distribution/Introduction/Introduction.html
The developer should create an .ipa with the app and a manifest in plist format with the URL to the .ipa and a few other things.
The app can optionally implement its own way to find if an update is available and open
the URL to the manifest.
I didn't it's really possible because the app has to somehow sign itself. The best I can think of right now is that the app is not signed?
You can always force people to go to the app store when a new version is out. Simply make the app connect to a webservice first. Other solutions are not accepted by Apple, or will quite simply not work because of other issues (signing is one of many).
You could also design your app in such a way that forced updates are never a requirement. You can load your user interfaces from the web (Apple has presented some valuable information about that during the previous WWDC), your data can come from the web, and if there is any other correction to do just ensure your app is backwards compatible.
That's how the app store works. And it never requires a 'forced update' ... Well, almost never ;-)

iPhone Enterprise app push updates to users?

If my company is a member of the Enterprise program where we can distribute apps internally for any number of users is there a good way to handle app updates? Everything I see on installing such apps is saying I have to send the .app and a profile to the end users for them to add to iTunes and then sync their device to install. Is there any way to have the user's computer or device know when I have an update to the app available or do I just have to redistribute the app file manually again and hope for everyone to update manually?
Although you can update configuration profiles over-the-air, it doesn’t appear that you can do this. Your best bet would be to implement a notification in your app when it starts to tell the users to upgrade. See the Enterprise Deployment Guide [PDF].
It might be a little late to answer this, but I'm facing the exact same problem.
After spending some time looking for a solution we've come to the conclusion that this can be done in two ways:
You can achieve a lot of things with a Mobile Device Management (MDM) server. You can force installation of applications, and perhaps this can work if you want to update. You can collect information on what version the app is running, and then perhaps directly target users with outdated versions of the app: http://images.apple.com/iphone/business/docs/iOS_MDM.pdf I don't have access to an MDM, so I haven't tried this out.
Finally, build in some kind of deprecation functionality that tells the user to update. This is what apple recommends ( http://help.apple.com/iosdeployment-apps/#app43ad802c ) (and the solution we are going for).