हैलो हमने हाल ही में अपना पहला एंटरप्राइज़ ऐप विकसित किया है। हम वितरण प्रमाणपत्र बनाने के लिए "इन-हाउस" विकल्प का उपयोग कर रहे हैं। क्लाइंट अभी तक ऐप का उपयोग नहीं कर रहा है। लेकिन वह जल्द ही इसका इस्तेमाल करेगा। इस बीच मुझे एक सवाल मिला। वह ऐप का उपयोग करेगा और भविष्य में यदि हमारे पक्ष से ऐप के कोई अपडेट हैं, तो हम चाहते हैं कि ग्राहक इसे अपने पक्ष में भी अपडेट कर ले। अभी ठीक है मेरे पास अपने आईफोन पर एप्स इंस्टॉल हैं। मुझे ऐपस्टोर से अद्यतन मिलता है कि एक्सवाईजेड ऐप अपडेट किया गया है। तो मैं अद्यतन स्थापित करें। अब यदि हमारा ग्राहक ऐप का उपयोग कर रहा है और उस पर कुछ डेटा सहेजा है (हमारा ऐप कोर डेटा का उपयोग करता है, और हमने इसे इस तरह से बनाया है कि क्लाइंट डिवाइस पर कुछ डेटा स्टोर कर सकता है) हम उसे अपडेट भेजना चाहते हैं जो इंस्टॉल करेगा अद्यतन, लेकिन मौजूदा क्लाइंट डेटा मिटा नहीं है। क्या यह संभव है? मैं इसे कैसे कर सकता हूं? मैं ऐप इंस्टॉल करने के लिए अभी वायु स्थापना पर उपयोग कर रहा हूं। हमारे पास एक सुरक्षित सर्वर है, जहां .ipa और .plist फ़ाइलें मौजूद हैं और हमारे पास एक डाउनलोड HTML पृष्ठ है। ग्राहक लिंक पर क्लिक करता है और ऐप इंस्टॉल हो जाता है। यदि आपको अधिक जानकारी की जरूरत है तो कृपया मुझे बता है। धन्यवाद।हवा पर ios6 एंटरप्राइज़ ऐप्स को अपडेट करने के लिए कैसे करें
उत्तर
हां, यह संभव है। जब आप एंटरप्राइज़ एप्लिकेशन को तैनात करते हैं तो उसे एक प्लेलिस्ट की आवश्यकता होती है जिसमें एप्लिकेशन के बारे में मेटाडेटा होता है। इस मेटाडाटा में संस्करण संख्या शामिल है जिसका उपयोग आप अपडेट की जांच के लिए कर सकते हैं।
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;
}
एक बार जब आप का पता लगाने के अद्यतन डाउनलोड URL
itms-services://?action=download-manifest&url=<url-path-to-plist>
करने के लिए उपयोगकर्ता नेविगेट उपलब्ध है और इसे छोड़ने मौजूदा संस्करण पर स्थापित हो जाएगा इन-कुशलता और यहां तक कि सभी डेटा यदि आप ऑटो माइग्रेशन सेट करते हैं और परिवर्तन करते हैं तो CoreData डेटाबेस को अपग्रेड करें।
@ Joe.Thank आप मैंने .plist फ़ाइल को देखा और बहुत ऊपर मैं प्लिस्ट संस्करण = "1.0" देखता हूं। अब, मैं आपके द्वारा यहां डाला गया कोड कहां लिखूं? – RookieAppler
आप इसे [एक्सकोडियर में एक्सकोडियर] से उत्पन्न कर सकते हैं (http://developer.apple.com/library/ios/#recipes/xcode_help-archives_organizer/articles/distributing_ios_apps.html), मैन्युअल रूप से इसे इनपुट करें, या एक स्क्रिप्ट बनाएं स्वचालित तैनाती के लिए इसे populates। – Joe
@ जो। मैं आईओएस विकास के लिए नया हूं। मैं एक्सकोड में ऑर्गनाइज़र में इस्तेमाल करता हूं, नई योजना उत्पन्न करना और बटन वितरित करना है। मैं एंटरप्राइज़ वितरण के लिए बचत करता हूं, एप्लिकेशन यूआरएल (... 1.0.ipa), नाम, छवि यूआरएल देता हूं और .ipa और .plist फ़ाइलों को प्राप्त करता हूं। तो जब मेरे पास एक नया अपडेट है, तो 2 को मानने के लिए एक्सकोड की .plist फ़ाइल में बंडल संस्करण बदलें।0 और इस प्रक्रिया को दोबारा करें (वितरण बटन पर क्लिक करें, एंटरप्राइज़..एटीसी के लिए सहेजें) और नया .ipa और .plist प्राप्त करें और पुराने ..1.0.ipa, .. 1.0.plist ..2.0.ipa के साथ बदलें। .2.0.plist फाइलें? जब आप कहते हैं कि "एक्सकोड में ऑर्गनाइज़र से इसे उत्पन्न करें" तो आपका क्या मतलब है। – RookieAppler
बस उसी तरह वितरित करें जैसे आप मूल वितरित करते हैं। उपयोगकर्ता पहले संस्करण से डेटा को बरकरार रखता है।
ऐप अपडेट के लिए, मौजूदा ऐप डेटा तब भी बनी रहती है जब ऐप के लिए बंडल आईडी समान रहता है।
एप्पल बताते एंटरप्राइज एप्लिकेशन परिनियोजन और एप्लिकेशन यहां अपडेट: http://help.apple.com/iosdeployment-apps/mac/1.1/#app43ad802c
मैं भी एप्लिकेशन के तहत एक अद्यतन चेकर सहित सलाह देते हैं।
ऐसा करने के लिए, iVersion निक लॉकवुड (उर्फ चारकोल डिज़ाइन) द्वारा आईओएस लाइब्रेरी है जो आपको ऐसा करने में मदद करेगा। यह यहां उपलब्ध है: https://github.com/nicklockwood/iVersion
एक शानदार प्रतिक्रिया के लिए जो के लिए धन्यवाद। स्विफ्ट में अनुवादित विस्तारित संस्करण यहां दिया गया है। आप अपने मुख्य दृश्य नियंत्रक के viewDidLoad
के अंदर डाल सकते हैं
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. (निजी) एंड्रॉइड ऐप्स के लिए ऑटो-अपडेट
- 2. स्क्रीन अपडेट करने के लिए QGLWidget को कैसे बाध्य करें?
- 3. SWF से हवा करने के लिए आईओएस आवेदन
- 4. एंड्रॉइड मीडिया डेटाबेस को अपडेट करने के लिए कैसे करें
- 5. iOS6
- 6. iOS6
- 7. एंटरप्राइज़ आर्किटेक्ट आरेखों को निर्यात करने के लिए स्वचालित विधि?
- 8. didReceiveWriteRequests को सही ढंग से कार्यान्वित करने के लिए कैसे करें? iOS6 CoreBluetooth
- 9. iOS6
- 10. iOS6 स्थानांतरण करने के लिए मैं लगभग सभी बाहरी संकुल
- 11. कोडइग्निटर/लैरवेल ऐप्स को कैसे तैनात करें
- 12. वेब ऐप्स के लिए लॉगिन सिस्टम को कैसे कार्यान्वित करें?
- 13. एसक्यूएल सर्वर 2005 पर डेटाटाइम को अंतिम डालने/अपडेट/डिलीट करने के लिए कैसे करें?
- 14. बंडल अपडेट पूर्ववत करने के लिए कैसे करें
- 15. क्या कोडप्लेक्स पर प्रकाशित ऐप्स को कोडप्लेक्स से सीधे ऑटो-अपडेट करने के लिए एक ढांचा है?
- 16. सबवर्जन बाहरी अपडेट करने के लिए कैसे करें
- 17. jQuery और jQplot (डेटा अपडेट करने) के साथ चित्रों को एनिमेट करने के लिए कैसे करें
- 18. एंटरप्राइज़
- 19. Heroku पर Laravel 4 ऐप्स को कैसे तैनात करें?
- 20. पायथन के संस्करण को कैसे अपडेट करें?
- 21. एक कंपास पर हवा की दिशा कैसे दिखाएं
- 22. मॉडलस्टेट को कैसे अपडेट करें?
- 23. IOS6 SDK
- 24. iOS6 UIActivityViewController
- 25. कुछ UITextfields iOS6
- 26. । सभी रिकॉर्ड के लिए फ़ील्ड को कैसे अपडेट करें?
- 27. ऐप निष्क्रियता के बाद एमपीएनएस चैनल यूआरआई को अपडेट करने के लिए कैसे करें
- 28. सी ++ परीक्षण ऐप्स और संबंधित फाइलों को व्यवस्थित करने के लिए कैसे करें?
- 29. पर्ल के नए संस्करण को अपडेट करने के लिए एक CPANPLUS ऑटोबंडल का उपयोग कैसे करें?
- 30. आईपैड ऐप्स को क्लास-डंप कैसे करें?
जांच यह अन्य प्रश्न http://stackoverflow.com/questions/8439127/ios-enterprise-distribution-through-ota – tkanzakic