Disponemos de una empresa de la aplicación para la que estamos finalizando el apoyo de iOS6. Durante una prueba reciente, hemos creado una versión de la aplicación, y establezca los siguientes valores en Info.plist
<key>MinimumOSVersion</key>
<string>7.0</string>
La aplicación fue construida con el iOS SDK 7.1. Si importa (y no estoy seguro de que lo hace), es un Xamarin.iOS proyecto.
Como estábamos de pruebas, se espera que cuando se intentó instalar en iOS6 que la instalación sería rechazada temprano en el proceso, ya que se instala en una versión incompatible de iOS. Anticipamos que la versión previamente instalada de la aplicación siga funcionando como lo hacía antes, sin todas las nuevas características.
En lugar de eso, lo que ocurrió fue que el error de instalación que sucedió más tarde en la instalación de lo esperado, y la versión antigua de la app era inutilizable después de la actualización ha fallado.
A comprobar un par de cosas, he descargado el archivo IPA, y descomprimido. Dentro de los paquetes de Información.plist, veo esto:
MinimumOSVersion = "7.0";
cual es una buena señal. Sin embargo, creo que también explica por qué el intento de instalación rompió la versión instalada anteriormente.
Para regular las aplicaciones, es decir, las aplicaciones de la App Store de iOS, no se le da la opción de instalar aplicaciones para que tus instalado iOS es demasiado viejo, y la versión instalada de la aplicación permanece sin cambios.
Hay una manera de hacer una cosa para las Aplicaciones Empresariales sin tener que construir todo lo que fuera? Estoy pensando que tal vez hay un ajuste en el manifiesto.plist que se utiliza para la OTA de la implementación.
En aras de la exhaustividad, aquí está mi Información.plist antes de construir:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>OurApp Stage</string>
<key>CFBundleIconFiles</key>
<array>
<string>Images/OurApp_72.png</string>
<string>Images/OurApp_50.png</string>
<string>Images/OurApp_29.png</string>
<string>Images/OurApp_512.png</string>
</array>
<key>CFBundleIdentifier</key>
<string>com.ourappproject.staging.mycompany</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.ourappproject.staging-handler</string>
<key>CFBundleURLSchemes</key>
<array>
<string>ourapp-staging</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>2014.2.04.05</string>
<key>MinimumOSVersion</key>
<string>7.0</string>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
<key>UIDeviceFamily</key>
<array>
<integer>2</integer>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
Info.plist desde dentro de la IPA:
// !!! BINARY PROPERTY LIST WARNING !!!
//
// The pretty-printed property list below has been created
// from a binary version on disk and should not be saved as
// the ASCII format is a subset of the binary representation!
//
{ BuildMachineOSBuild = "13C1021";
CFBundleDevelopmentRegion = "en";
CFBundleDisplayName = "OurApp Stage";
CFBundleExecutable = "OurAppMobileApp";
CFBundleIconFiles = ( "OurApp_72.png", "OurApp_50.png", "OurApp_29.png" );
CFBundleIdentifier = "com.ourappproject.staging.mycompany";
CFBundleInfoDictionaryVersion = "6.0";
CFBundleName = "OurAppMobileApp";
CFBundlePackageType = "APPL";
CFBundleResourceSpecification = "ResourceRules.plist";
CFBundleSignature = "????";
CFBundleSupportedPlatforms = ( "iPhoneOS" );
CFBundleURLTypes = (
{ CFBundleURLName = "com.ourappproject.staging-handler";
CFBundleURLSchemes = ( "ourapp-staging" );
},
);
CFBundleVersion = "2014.2.04.05";
DTCompiler = "com.apple.compilers.llvm.clang.1_0";
DTPlatformBuild = "11D167";
DTPlatformName = "iphoneos";
DTPlatformVersion = "7.1";
DTSDKBuild = "11D167";
DTSDKName = "iphoneos7.1";
DTXcode = "0510";
DTXcodeBuild = "5B1008";
LSRequiresIPhoneOS = :true;
MinimumOSVersion = "7.0";
UIBackgroundModes = ( "audio" );
UIDeviceFamily = ( 2 );
UIRequiredDeviceCapabilities = ( "armv7" );
UISupportedInterfaceOrientations = ( "UIInterfaceOrientationLandscapeLeft", "UIInterfaceOrientationLandscapeRight" );
"UISupportedInterfaceOrientations~ipad" = ( "UIInterfaceOrientationLandscapeLeft", "UIInterfaceOrientationLandscapeRight" );
}
El manifiesto.plist:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- array of downloads. -->
<key>items</key>
<array>
<dict>
<!-- an array of assets to download -->
<key>assets</key>
<array>
<!-- software-package: the ipa to install. -->
<dict>
<!-- required. the asset kind. -->
<key>kind</key>
<string>software-package</string>
<!-- required. the URL of the file to download. -->
<key>url</key>
<string>https://arm.staging.ourappproject.com:443/Store/App/9/17/OurAppMobileApp.ipa</string>
</dict>
<!-- display-image: the icon to display during download .-->
<dict>
<key>kind</key>
<string>display-image</string>
<!-- optional. indicates if icon needs shine effect applied. -->
<key>needs-shine</key>
<true/>
<key>url</key>
<string>https://arm.staging.ourappproject.com:443/Assets/OurAppMobileApp.png</string>
</dict>
<!-- full-size-image: the large 512x512 icon used by iTunes. -->
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>https://arm.staging.ourappproject.com:443/Assets/OurApp_512.png</string>
</dict>
</array>
<key>metadata</key>
<dict>
<!-- required -->
<key>bundle-identifier</key>
<string>com.ourappproject.staging.mycompany</string>
<!-- optional (software only) -->
<key>bundle-version</key>
<string>2014.2.04.05</string>
<!-- required. the download kind. -->
<key>kind</key>
<string>software</string>
<!-- optional. displayed during download; typically company name -->
<key>subtitle</key>
<string>mycompany</string>
<!-- required. the title to display during the download. -->
<key>title</key>
<string>OurApp Mobile</string>
</dict>
</dict>
</array>
</dict>
</plist>
Cualquier y todas las sugerencias son apreciados.