こんにちは、私たちは最初にエンタープライズアプリケーションを開発しました。私たちは、「社内」オプションを使用して配布証明書を作成しています。クライアントはまだアプリを使用していません。しかし、彼はすぐにそれを使用します。私は質問がありました。彼はアプリを使用し、将来的には私たちの側からアプリが更新されている場合は、クライアント側も更新する必要があります。今のように、私のiPhoneにはアプリがインストールされています。私はAppStoreから、XYZアプリが更新されたという更新情報を得る。だから私は更新プログラムをインストールします。現在、クライアントがアプリを使用していて、データを保存している場合(アプリではコアデータを使用し、クライアントがデバイスにデータを保存できるようにアプリを構築しています)、インストールするユーザーにアップデートを送信します更新は行いますが、既存のクライアントデータは消去しません。可能ですか?私はそれをどうやってやるのですか?私は現在、アプリケーションをインストールするために空気のインストールを使用しています。 .ipaファイルと.plistファイルが存在し、ダウンロードhtmlページがある安全なサーバーがあります。クライアントがリンクをクリックすると、アプリがインストールされます。詳しい情報が必要な場合はお知らせください。ありがとう。ios6エンタープライズアプリケーションを空中で更新するには
答えて
はい、可能です。エンタープライズアプリケーションをデプロイするときは、アプリケーションに関するメタデータを含むplistが必要です。このメタデータには、更新をチェックするために使用できるバージョン番号が含まれています。
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ファイルを見て、一番上の私はplistバージョン= "1.0"を参照してください。さて、ここに書いたコードはどこに書いていますか? – RookieAppler
[Organizier in Xcode](http://developer.apple.com/library/ios/#recipes/xcode_help-archives_organizer/articles/distributing_ios_apps.html)から手動で入力するか、自動展開のためにそれを設定します。 – Joe
@ Joe.IOS開発の初心者です。私はオーガナイザでXcodeで使用しましたが、新しいスキームを生成し、ボタンを配布することです。私はエンタープライズディストリビューションのための保存を行い、アプリケーションURL(... 1.0.ipa)、名前、イメージURLを与え、.ipaと.plistファイルを取得します。だから、私は新しいアップデートがある場合、Xcodeの.plistファイルのバンドルバージョンを2に変更します。0を入力し、このプロセスを再度実行してください(distributteボタンをクリックし、エンタープライズなどのために保存してください)。新しい.ipaと.plistを取得し、古い..1.0.ipa、.. 1.0.plistを..2.0.ipaに置き換えてください。 .2.0.plistファイル? "OrganizerからXcodeで生成する"とはどういう意味ですか? – RookieAppler
オリジナルを配布するのと同じ方法でアップデートを配布してください。ユーザーは以前のバージョンのデータを保持します。
アプリのアップデートでは、アプリのバンドルIDが同じであれば、既存のアプリデータはそのまま維持されます。
Appleはここにエンタープライズアプリケーションの展開とアプリのアップデートについて説明します。http://help.apple.com/iosdeployment-apps/mac/1.1/#app43ad802c
私はまた、アプリ内の更新チェッカーを含むお勧めします。
これを行うには、iVersionはこれを行うのに役立つNick Lockwood(別名Charcoal Design)のiosライブラリです。それはここにあります: 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. iOSエンタープライズアプリケーションと新しいデバイスにバックアップ
- 2. 更新パネル、ファイルをアップロード中にページを更新する
- 3. NHibernate:EventListener "PreUpdateEvent"中にコレクションを更新する
- 4. ポストバック中にフロントエンドを更新する
- 5. FOTA:空中でファームウェアを更新するにはどうしたらいいですか?
- 6. バックグラウンドで実行中のアプリケーションのデータを更新するには
- 7. IOSにエンタープライズアプリケーションをプログラムでインストール
- 8. 純粋なas3で空気中で新しいStageTextを使用するには?
- 9. 空間情報と画像を更新中にステータスコード300が返されます
- 10. 更新中にデータを送信するのを防ぐには
- 11. スクロール中に更新中のNSFetchedResultsController
- 12. 更新中に真のgetDate()?
- 13. プログラムの実行中にMatplotlibプロットを更新するには?
- 14. 真夜中にアプリウィジェットを更新するには?
- 15. 空のパスワードでアクションを更新
- 16. Subclipseで更新中にEclipseビルドを無効にする
- 17. サブソニック3 ActiveRecords更新ダーティー列は常に空です
- 18. レビュー中のiPhoneアプリを更新する
- 19. ページの更新を中止する
- 20. Java Swing - CardLayout、実行中にカードを更新する方法は?
- 21. JFrameの実行中にJLayeredPaneを更新する方法は? java
- 22. Oracle Clobの更新中にパフォーマンスを改善する方法は?
- 23. 処理中にコントロールの更新を処理する方法は?
- 24. 実行中のサービスからウィジェットTextViewを更新するには?
- 25. iOS6
- 26. iOS6:接続中にCBPeripheralがdeallocされています
- 27. Mercurial:ブランチ更新マージ中に中止する
- 28. mysqlテーブルを更新中
- 29. flex3:変数を更新中
- 30. Riot Jsタグを更新中
チェックの内側に、この他の質問http://stackoverflow.com/questions/8439127/ios-enterprise-distribution-through-ota – tkanzakic