が更新された後に再び表示されるようにアプリケーションが最初にインストールされたときにのみ表示されるビューを作成するには、 が必要なため、私のIOSアプリケーションが更新されているかどうかを確認
答えて
NSUserDefaults
に値(現在のアプリのバージョン番号など)を保存して、ユーザーがアプリを起動するたびに確認できます。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// ...
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *currentAppVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
NSString *previousVersion = [defaults objectForKey:@"appVersion"];
if (!previousVersion) {
// first launch
// ...
[defaults setObject:currentAppVersion forKey:@"appVersion"];
[defaults synchronize];
} else if ([previousVersion isEqualToString:currentAppVersion]) {
// same version
} else {
// other version
// ...
[defaults setObject:currentAppVersion forKey:@"appVersion"];
[defaults synchronize];
}
return YES;
}
swift-2バージョンは、次のようになります。
let defaults = NSUserDefaults.standardUserDefaults()
let currentAppVersion = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
let previousVersion = defaults.stringForKey("appVersion")
if previousVersion == nil {
// first launch
defaults.setObject(currentAppVersion, forKey: "appVersion")
defaults.synchronize()
} else if previousVersion == currentAppVersion {
// same version
} else {
// other version
defaults.setObject(currentAppVersion, forKey: "appVersion")
defaults.synchronize()
}
swift-3バージョンは次のようになります。受け入れ答えを超える重要な改善と
let defaults = UserDefaults.standard
let currentAppVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let previousVersion = defaults.string(forKey: "appVersion")
if previousVersion == nil {
// first launch
defaults.set(currentAppVersion, forKey: "appVersion")
defaults.synchronize()
} else if previousVersion == currentAppVersion {
// same version
} else {
// other version
defaults.set(currentAppVersion, forKey: "appVersion")
defaults.synchronize()
}
上記のメカニズムをサポートしていないアプリが既に出荷されているかどうかを確認しますか? – damithH
@ damithH出荷されたアプリがNSUserDefaultsを使用していた場合は、使用していたキーの存在を確認するだけです。 –
NSUserDefaultsにアプリバージョン番号を保存し、アプリが起動するたびにチェックすることができます。番号が利用できない場合は、その新しいインストールです。それが変更された場合、それはアップグレードです。
NSUserDefaultsが削除されていないので、ユーザがアプリケーションを最初に削除して再インストールすると、それが役に立たないので、それを読むと – user2412870
@ user2412870バージョン番号がNSUserDefaultsに保存されている番号と似ているかどうかを確認することができます。 – pre
swiftバージョン:
infoDictionary
の代わりにobjectForInfoDictionaryKey
を使用すると、デバイス言語に依存しない結果が保証されます。正確に何が格納されているかを明確にするためのメインバンドルinfoDictionaryへ- ファクタリング設定CurrentVersionのコード
- スウィフト3構文
コード:
let standardUserDefaults = UserDefaults.standard
let shortVersionKey = "CFBundleShortVersionString"
let currentVersion = Bundle.main.infoDictionary![shortVersionKey] as! String
let previousVersion = standardUserDefaults.object(forKey: shortVersionKey) as? String
if previousVersion == currentVersion {
// same version
} else {
// replace with `if let previousVersion = previousVersion {` if you need the exact value
if previousVersion != nil {
// new version
} else {
// first launch
}
standardUserDefaults.set(currentVersion, forKey: shortVersionKey)
standardUserDefaults.synchronize()
}
スウィフト3.xの
ただ、アプリの立ち上げにAppVersionUpdateNotifierを初期化し、AppUpdateNotifierプロトコルに準拠し、お楽しみください。 (。あまりにもシミュレータ上のこのコードの動作)ここで
class AppVersionUpdateNotifier {
static let KEY_APP_VERSION = "key_app_version"
static let shared = AppVersionUpdateNotifier()
private let userDefault:UserDefaults
private var delegate:AppUpdateNotifier?
private init() {
self.userDefault = UserDefaults.standard
}
func initNotifier(_ delegate:AppUpdateNotifier) {
self.delegate = delegate
checkVersionAndnotify()
}
private func checkVersionAndnotify() {
let versionOfLastRun = userDefault.object(forKey: AppVersionUpdateNotifier.KEY_APP_VERSION) as? Int
let currentVersion = Int(Bundle.main.buildVersion)!
if versionOfLastRun == nil {
// First start after installing the app
} else if versionOfLastRun != currentVersion {
// App was updated since last run
delegate?.onVersionUpdate(newVersion: currentVersion, oldVersion: versionOfLastRun!)
} else {
// nothing changed
}
userDefault.set(currentVersion, forKey: AppVersionUpdateNotifier.KEY_APP_VERSION)
}
}
protocol AppUpdateNotifier {
func onFirstLaunch()
func onVersionUpdate(newVersion:Int, oldVersion:Int)
}
extension Bundle {
var shortVersion: String {
return infoDictionary!["CFBundleShortVersionString"] as! String
}
var buildVersion: String {
return infoDictionary!["CFBundleVersion"] as! String
}
}
//*************************
//Use: Example
//*************************
extention AppDelagate: AppUpdateNotifier {
func onVersionUpdate(newVersion: Int, oldVersion: Int) {
// do something
}
func onFirstLaunch() {
//do something
}
}
は、現在のバージョンが異なっているかどうかを知るための簡単なコードである
-(BOOL) needsUpdate
{
NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString* appID = infoDictionary[@"CFBundleIdentifier"];
NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/lookup?bundleId=%@", appID]];
NSData* data = [NSData dataWithContentsOfURL:url];
NSDictionary* lookup = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
if ([lookup[@"resultCount"] integerValue] == 1)
{
NSString* appStoreVersion = lookup[@"results"][0][@"version"];
NSString* currentVersion = infoDictionary[@"CFBundleShortVersionString"];
if (![appStoreVersion isEqualToString:currentVersion])
{
NSLog(@"Need to update [%@ != %@]", appStoreVersion, currentVersion);
return YES;
}
}
return NO;
}
注:あなたがiTunesで新しいバージョンを入力すると、そのことを確認し、これはあなたがリリースしているアプリのバージョンと一致します。そうでなければ、上記のコードは、ユーザーが更新しても常にYESを返します。
- 1. データベースが更新されているかどうかの確認
- 2. ページが更新されたかどうかを確認する
- 3. ファイルが更新されているかどうかを確認しますか?
- 4. 行が更新されているかどうかを確認する方法
- 5. アクティブレコードテーブルが変更されているかどうかを確認
- 6. c linuxファイルが更新/変更/変更されているかどうかを確認しますか?
- 7. JSONが新しいデータで更新されているかどうかを確認する
- 8. インテントフィルタがアプリケーションで使用されているかどうかを確認する
- 9. データベースのテーブルが更新されたかどうかを確認する方法?
- 10. サーバーのページが変更されているかどうかを確認する
- 11. アプリケーションがフォアグラウンドで実行されているかどうかの確認
- 12. ライブラリがiOSアプリケーションで使用されているかどうかを確認する方法
- 13. asp.netを通じてアプリケーションが私のウィンドウにインストールされているかどうかを確認するには?
- 14. Javascript:URLが変更されているかどうかを確認しますか?
- 15. iMessage Extensionがインストールされているかどうかは、iOSアプリケーションで確認できますか?
- 16. ユーザーがdbで確認されているかどうかを確認
- 17. Authguard anglefire2電子メールが確認されているかどうかを確認
- 18. リポジトリが変更されているかどうかを確認するGitコマンド
- 19. コレクションが変更されているかどうかを確認する方法?
- 20. ファイルが変更されたかどうかを確認する
- 21. OAuth更新トークンが変更されたかどうかを常に確認していますか?
- 22. Boto3を使用してAWSポリシーが更新されているかどうかを確認する方法?
- 23. ALTキーが押されているかどうかを確認
- 24. charが押されているかどうかの確認
- 25. ゲームがコンパイル/変更されているかどうかを確認します
- 26. ブール値が変更されているかどうか確認する
- 27. Webサーバーの静的ファイルが更新されているかどうかを確認する方法?
- 28. UIのコンポーネントがVaadin 8で更新されているかどうかを確認する方法
- 29. テーブルが更新されているかどうかを確認するためのトリガー
- 30. sedコマンドが変更されたかどうか確認してください。
あなたはこの質問について詳しく説明する必要があります:何が更新されていますか?アプリケーション内のファイルまたはファイル、またはリモートサーバーからダウンロードするファイル –
アプリケーション自体が更新されています – user2412870