Comment faire pour mettre à jour les applications d'entreprise ios6 sur l'air

Bonjour, nous avons récemment développé notre première application d'entreprise. Nous utilisons l'option "In-House" pour créer le certificate de dissortingbution. Le client n'utilise pas encore l'application. Mais il l'utilisera bientôt. En attendant, j'ai une question. Il utilisera l'application et à l'avenir, s'il y a des mises à jour de l'application de notre côté, nous voulons que le client l'ait mis à jour de son côté aussi. Comme en ce moment j'ai des applications installées sur mon iPhone. Je reçois une mise à jour d'AppStore indiquant que l'application XYZ a été mise à jour. Donc, j'installe la mise à jour. Maintenant, si notre client utilise l'application et a enregistré des données dessus (notre application utilise des données de base, et nous l'avons construit de telle sorte que le client peut stocker des données sur l'appareil), nous voulons lui envoyer une mise à jour la mise à jour, mais n'efface pas datatables client existantes. Est-ce possible? Comment puis-je le faire? J'utilise l'installation en direct dès maintenant pour installer l'application. Nous avons un server sécurisé, où les files .ipa et .plist sont présents et nous avons une page html de téléchargement. Le client clique sur le lien et l'application est installée. S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'informations. Merci.

Oui c'est possible. Lorsque vous déployez une application Enterprise, elle nécessite un plist contenant des métadonnées sur l'application. Cette métadonnée inclut le numéro de version que vous pouvez utiliser pour vérifier les mises à jour.

BOOL updateAvailable = NO; NSDictionary *updateDictionary = [NSDictionary dictionaryWithContentsOfURL: [NSURL URLWithSsortingng:@"http://www.example.com/pathToPlist"]]; if(updateDictionary) { NSArray *items = [updateDictionary objectForKey:@"items"]; NSDictionary *itemDict = [items lastObject]; NSDictionary *metaData = [itemDict objectForKey:@"metadata"]; NSSsortingng *newversion = [metaData valueForKey:@"bundle-version"]; NSSsortingng *currentversion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; updateAvailable = [newversion compare:currentversion options:NSNumericSearch] == NSOrderedDescending; } 

Une fois que vous avez détecté que la mise à jour est disponible, accédez à l'URL de téléchargement

itms-services://?action=download-manifest&url=<url-path-to-plist>

et il installera sur la version existante laissant toutes datatables en contact et même mettra à jour la database de CoreData si vous installez la migration automatique et faites des changements.

Merci à Joe pour une réponse fantastique. Voici la version étendue traduite en swift. Vous pouvez le mettre à l'intérieur de viewDidLoad de votre controller de vue principale

 let plistUrl = "https://example.com/example.plist" let installationUrl = "itms-services://?action=download-manifest&amp;url=https://example.com/example.plist" override func viewDidLoad() { super.viewDidLoad() //Check for the updates checkForUpdates() } func checkForUpdates() { let qualityOfServiceClass = QOS_CLASS_BACKGROUND let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0) dispatch_async(backgroundQueue, { let updateDictionary = NSDictionary(contentsOfURL: NSURL(ssortingng: self.plistUrl)!)! let items = updateDictionary["items"] let itemDict = items?.lastObject as! NSDictionary let metaData = itemDict["metadata"] as! NSDictionary let serverVersion = metaData["bundle-version"] as! Ssortingng let localVersion = NSBundle.mainBundle().infoDictionary!["CFBundleVersion"] as! Ssortingng let updateAvailable = serverVersion.compare(localVersion, options: .NumericSearch) == .OrderedDescending; if updateAvailable { self.showUpdateDialog(serverVersion) } }) } func showUpdateDialog(serverVersion: Ssortingng) { dispatch_async(dispatch_get_main_queue(), { () -> Void in let alertController = UIAlertController(title: "New version of Example available!", message: "Example \(serverVersion) has been released. Would you like to download it now?", preferredStyle: UIAlertControllerStyle.Alert) alertController.addAction(UIAlertAction(title: "Not now", style: .Cancel,handler: nil)) alertController.addAction(UIAlertAction(title: "Update", style: .Default, handler: { (UIAlertAction) in UIApplication.sharedApplication().openURL(NSURL(ssortingng: self.installationUrl)!) })) self.presentViewController(alertController, animated: true, completion: nil) }) } 

Dissortingbuez simplement la mise à jour de la même manière que vous dissortingbuez l'original. L'user conserve datatables de la version antérieure.

Pour les mises à jour d'applications, datatables d'application existantes sont conservées si l'ID d'set de l'application rest identique.

Apple explique le deployment des applications d'entreprise et les mises à jour des applications ici: http://help.apple.com/iosdeployment-apps/mac/1.1/#app43ad802c

Je recommand également d'inclure un vérificateur de mise à jour dans l'application.

Pour ce faire, iVersion est une bibliothèque ios de Nick Lockwood (alias Charcoal Design) qui vous aidera à le faire. C'est disponible ici: https://github.com/nicklockwood/iVersion