Merhaba, son kurumsal uygulamanızı geliştirdik. Dağıtım sertifikasını oluşturmak için "Ev İçi" seçeneğini kullanıyoruz. İstemci henüz uygulamayı kullanmıyor. Ama yakında kullanacak. Bu arada bir sorum var. Uygulamayı kullanacak ve gelecekte tarafımızdan yapılacak herhangi bir güncellemenin olması durumunda, müşterinin de kendi tarafında güncellenmiş olmasını istiyoruz. Şu anda olduğu gibi iPhone'umda da uygulamaları var. XYZ uygulamasının güncellendiğini söyleyen AppStore'dan güncelleme alıyorum. Bu yüzden güncellemeyi yüklüyorum. Artık müşterimiz uygulamayı kullanıyorsa ve bazı verileri kaydettiyse (uygulamamız temel verileri kullanır ve müşterinin cihaza bazı verileri depolayabileceği şekilde oluşturduk), yüklemek istediği bir güncelleme göndermek istiyoruz Güncelleme, ancak mevcut herhangi bir istemci verisi silmek mümkün değil. Bunu nasıl yaparım? Uygulamayı yüklemek için şu anda hava kurulumunu kullanıyorum. .ipa ve .plist dosyalarının bulunduğu güvenli bir sunucumuz var ve bir indirme html sayfamız var. İstemci bağlantıyı tıklar ve uygulama yüklenir. Daha fazla bilgiye ihtiyacınız varsa lütfen bana bildirin. Teşekkürler.Havadaki ios6 kurumsal uygulamaları güncelleme
cevap
Evet, bu mümkün. Bir Enterprise uygulamasını dağıttığınızda, uygulama hakkında meta veriler içeren bir plist gerektirir. Bu meta veriler, güncellemeleri kontrol etmek için kullanabileceğiniz sürüm numarasını içerir.
BOOL updateAvailable = NO;
NSDictionary *updateDictionary = [NSDictionary dictionaryWithContentsOfURL:
[NSURL URLWithString:@"http://www.example.com/pathToPlist"]];
if(updateDictionary)
{
NSArray *items = [updateDictionary objectForKey:@"items"];
NSDictionary *itemDict = [items lastObject];
NSDictionary *metaData = [itemDict objectForKey:@"metadata"];
NSString *newversion = [metaData valueForKey:@"bundle-version"];
NSString *currentversion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
updateAvailable = [newversion compare:currentversion options:NSNumericSearch] == NSOrderedDescending;
}
tüm verileri inceliğini-in ve hatta güncelleme indir URL'ye
itms-services://?action=download-manifest&url=<url-path-to-plist>
için kullanıcı gezinmek kullanılabilir algılamak ve onu terk bulunan sürümün üzerine kuracak kez Otomatik geçişi ayarlar ve değişiklikler yaparsanız CoreData veritabanını yükseltin.
@ Joe.Thank sen .plist dosyasına baktım ve en üstte plist version = "1.0" görüyorum. Şimdi, buraya koyduğun kodu nereye yazarım? – RookieAppler
Bunu [Xcode'ta Organzier] 'den (http://developer.apple.com/library/ios/#recipes/xcode_help-archives_organizer/articles/distributing_ios_apps.html) oluşturabilir, el ile girebilir veya bir komut dosyası oluşturabilirsiniz. otomatik dağıtımlar için doldurur. – Joe
@ Joe.I iOS geliştirmede yeniyim. Xcode'taki Organizer'da kullandığım yeni şema ve dağıtım düğmesi oluşturmaktır. Kurumsal dağıtım için kayıt yapıyorum, uygulama url (... 1.0.ipa), isim, resim urlleri ve .ipa ve .plist dosyalarını aldım. Bu yüzden yeni bir güncellemem olduğunda, Xcode'un .plist dosyasındaki Bundle versiyonunu 2 olarak değiştirin.0 ve bu işlemi tekrar yapın (dağıtmak için düğmesini tıklayın, kurumsal için kaydedin ... vb) ve yeni .ipa ve .plist alın ve eski ..1.0.ipa, .. 1.0.plist yerine ..2.0.ipa, ile değiştirin. .2.0.plist dosyaları? "Xcode'ta Organizer'dan oluştur" dediğinizde ne demek istiyorsunuz? – RookieAppler
Güncelleştirmeyi, orijinali dağıttığınız şekilde dağıtmanız yeterlidir. Kullanıcı önceki versiyondan verileri korur.
Uygulama güncellemeleri için, uygulamanın uygulama kimliği aynı kaldığında mevcut uygulama verileri devam eder. http://help.apple.com/iosdeployment-apps/mac/1.1/#app43ad802c
Ben de uygulama içi bir güncelleme denetleyici gibi öneriyoruz:
Elma Kurumsal Uygulaması Dağıtım ve burada uygulama güncellemeleri açıklar.
Bunu yapmak için iVersion, Nick Lockwood (aka Kömür Tasarımı) tarafından size yardımcı olacak bir ios kütüphanesidir. Şu an mevcut: https://github.com/nicklockwood/iVersion
Harika bir yanıt için Joe'ya teşekkürler. İşte hızlıca tercüme edilen genişletilmiş versiyon. Eğer ana görünümü denetleyicisi viewDidLoad
iç
let plistUrl = "https://example.com/example.plist"
let installationUrl = "itms-services://?action=download-manifest&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(string: self.plistUrl)!)!
let items = updateDictionary["items"]
let itemDict = items?.lastObject as! NSDictionary
let metaData = itemDict["metadata"] as! NSDictionary
let serverVersion = metaData["bundle-version"] as! String
let localVersion = NSBundle.mainBundle().infoDictionary!["CFBundleVersion"] as! String
let updateAvailable = serverVersion.compare(localVersion, options: .NumericSearch) == .OrderedDescending;
if updateAvailable {
self.showUpdateDialog(serverVersion)
}
})
}
func showUpdateDialog(serverVersion: String) {
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(string: self.installationUrl)!)
}))
self.presentViewController(alertController, animated: true, completion: nil)
})
}
- 1. Otomatik güncelleme .net uygulamaları
- 2. iOS6 çoklu rota sesi
- 3. iOS6 simülatöründe UITableViewController çökmesi
- 4. Facebook ios6 completionHandler,
- 5. Kurumsal Veri Denetimi
- 6. Node.js, kritik iş uygulamaları için hazır mı?
- 7. CFStreamCreatePairWithSocketToSost ios6 simülatörü ile kırık?
- 8. Facebook'u iOS6'dan uygulamadan çıkarma
- 9. IOS6 MKMapView'da yakınlaştırma/sınırlama yakınlaştırma
- 10. iOS6 UIActivityViewController kullanarak nesne ekleme
- 11. iOS6 IDFA'yı Javascript'ten alabilir miyim?
- 12. TWTweetComposeViewController IOS6'da kullanımdan kaldırıldı
- 13. Kurumsal Mimarlıkta ilişkileri nasıl gösteririm
- 14. GitHub, Xcode ve kurumsal konular
- 15. güncelleme
- 16. GÜNCELLEME
- 17. Güncelleme
- 18. Gdata python Google uygulamaları kimlik doğrulaması
- 19. İş uygulamaları için WPF uygulamaları örneği?
- 20. Yüklü tüm uygulamaları alırken başlatılamayan uygulamaları filtreleyin
- 21. Bir başkasının Kurumsal programını kullanarak bir iPhone uygulamasını nasıl imzalarız?
- 22. Açık iOS6 Apple Maps uygulaması bir UIWebView
- 23. Bazı UITextfields, iOs6 içinde yanıt vermiyor
- 24. ios5 ile şifrelenmiş CCCrypt ios6 ile çözülemez
- 25. Uygulama iOS6 değiştirildikten sonra çöküyor - ucol_getVersion
- 26. Görünümler iOS6 güncellemesinden sonra manzara moduna dönmüyor
- 27. Uygulama, iOS6'da MapKit kazasında kullanıldı
- 28. Windows için Node.js kurumsal kullanıma hazır mı?
- 29. Kurumsal Mimaride HTML çıktısının nasıl otomatikleştirilmesi
- 30. JMS Kuyruk Böl. Kurumsal Entegrasyon. Apache Camel
çek koyabilirsiniz bu diğer soru http://stackoverflow.com/questions/8439127/ios-enterprise-distribution-through-ota – tkanzakic