How an iOS app is installed on a device

ios, ios7, xcode

Solution

I personally use `iResign` to resign the ipa with the correct provisioning profile. https://github.com/maciekish/iReSign

That saves me from keep changing the provisioning profiles in the `xCode` project and build a new archive. The ipa can be resigned multiples times.

I would recommend before signing the file have a look at the provisioning profile by opening it in text editor and make sure the UDID for the device you are trying to install the app on is included in the file.

Once you have the ipa use `Beta Builder` to generate the plist file along with a nice html file which can be uploaded to the ftp. http://www.hanchorllc.com/2010/08/24/introducing-ios-beta-builder/

So all the user has to do now is visit a url on their phone to download an app.

You shouldn't have any issues with this method other than your internet connection dying.

Problem

I'm interested to find out the technical details of how an iOS app installs on a device. Let me explain my situation, - I have my app's .ipa and .plist on a server. I made a download webpage that uses the itms-services to point to the .plist file. - I try to install the app on my friend's iPhone that is added to the project's provisioning profile. - The app downloads to his device but stays eternally in the waiting state. I would like to know how an app installs, is it added to a queue? If one app that has an installation problem fails to install, how does this affect other apps that I want to install. More specifically, I want to know what does the 'waiting' state mean? This problem does not only occur on my friend's iPhone, it also does the same on my iPhone. However, my iPhone has a more serious problem, I can't install any apps, because all apps go into the waiting state. My friend's iPhone (iPhone 5S) has iOS 7.0.4, I have a iPhone 4S with iOS 7.0.3. EDIT 03/12/13 - 09:30 Here's is the iPhone Configuration Utility console output during an attempted install. ``` ... itunesstored[102] <Warning>: LaunchServices: installing placeholder for **.***.****.*********** ... installd[62] <Notice>: 0x2c3000 handle_install_for_ls: Install of "/var/mobile/Library/Caches/com.apple.itunesstored/AppPlaceholders/4703876283909900519.app" requested by itunesstored ... installd[62] <Notice>: 0x2c3000 MobileInstallationInstall_Server: Installing app **.***.****.*********** ... installd[62] <Notice>: 0x2c3000 install_application: Installing placeholder ... installd[62] <Notice>: 0x2c3000 MobileInstallationInstall_Server: Staging: 0.07s; Waiting: 0.00s; Installation: 0.24s; LS Sync: 0.00s; Overall: 0.38s ... filecoordinationd[128] <Warning>: sandboxing denied subscription to progress on category **.***.****.*********** (bundle id (null), ******-****-*****-*****-*********) ``` I guess that the sandboxing denied subscription to progress on category part and the (bundle id (null) are the relevant errors, but I can't find any information on them on Google, any ideas? EDIT 03/12/13 - 09:39 I would also like to add that I get these same errors for any app that I try to install from the AppStore on my iPhone. EDIT 03/12/13 - 09:53 Also, the app installs just fine via ad-hoc on an old iPad running iOS 5.1.1. EDIT 03/12/13 - 16:18 After making a backup first in iTunes, and then doing a Settings -> Reset -> Erase all content and settings, the app was installed successfully! Before doing this, neither my friend nor I could install any apps (not our app either), but now we both can install our app or any other app on our phones. Since this is not an ideal solution, I don't know what the problem was, I don't know what "Waiting... really means, I want to leave the question open.

Original source