Tôi cần kiểm tra thời điểm ứng dụng của tôi khởi chạy nếu ứng dụng đã được cập nhật, vì tôi cần để tạo chế độ xem chỉ xuất hiện khi ứng dụng được cài đặt lần đầu xuất hiện lại sau khi được cập nhật .Kiểm tra xem ứng dụng IOS của tôi có được cập nhật
Trả lời
Bạn có thể lưu giá trị (ví dụ: số phiên bản ứng dụng hiện tại) thành NSUserDefaults
và kiểm tra nó mỗi khi người dùng khởi động ứng dụng.
- (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;
}
Phiên bản swift-2 trông như thế này:
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()
}
Phiên bản swift-3 trông như thế này:
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()
}
cách chúng tôi kiểm tra xem ứng dụng đã được giao không hỗ trợ cơ chế trên không? – damithH
@damithH nếu ứng dụng được giao của bạn đang sử dụng NSUserDefaults, sau đó chỉ cần kiểm tra sự tồn tại của bất kỳ khóa nào bạn đang sử dụng. –
bạn có thể lưu số phiên bản ứng dụng trong NSUserDefaults và kiểm tra nó mỗi khi ứng dụng của bạn được khởi chạy. Nếu số không có sẵn, đó là một cài đặt mới. Nếu nó được thay đổi, nó là một bản nâng cấp.
Tôi đọc sau khi cập nhật NSUserDefaults không bị xóa, vì vậy sẽ không giúp tôi, điều đó sẽ hoạt động nếu người dùng xóa ứng dụng trước và cài đặt lại ứng dụng – user2412870
@ user2412870 số phiên bản trong NSUserDefaults và kiểm tra, nếu cập nhật, bạn có thể kiểm tra xem số phiên bản có tương tự như số được lưu trong NSUserDefaults – pre
swift phiên bản với một sự cải tiến quan trọng so với câu trả lời được chấp nhận:
- sử dụng
infoDictionary
thay vìobjectForInfoDictionaryKey
bảo đảm kết quả độc lập với ngôn ngữ thiết bị, nếu không bạn có thể kết thúc trong một số trường hợp hiếm hoi tin rằng có nâng cấp khi thực tế nó chỉ là thay đổi ngôn ngữ thiết bị - bằng cách sử dụng khóa UserDefaults giống hệt nhau đến Bundle infoDictionary chính cho rõ ràng về những gì được lưu trữ một cách chính xác
- bao thanh toán đang thiết lập CurrentVersion
- Swift 3 cú pháp
Code:
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()
}
Swift 3.x
Chỉ cần khởi AppVersionUpdateNotifier trong mắt ứng dụng và phù hợp với AppUpdateNotifier giao thức, thưởng thức.
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
}
}
Đây là một mã đơn giản để biết nếu phiên bản hiện tại là khác nhau
-(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;
}
Lưu ý (điều này làm việc mã trên mô phỏng quá.): Hãy chắc chắn rằng khi bạn nhập phiên bản mới trong iTunes, điều này khớp với phiên bản trong ứng dụng bạn đang phát hành. Nếu không thì mã trên sẽ luôn trả về YES bất kể người dùng có cập nhật hay không.
- 1. Tệp ứng dụng iOS có thể được cập nhật trong khi ứng dụng vẫn đang được xem xét không?
- 2. iOS Ứng dụng Cập nhật Hiệp
- 3. Kiểm tra xem ứng dụng Google Maps có được cài đặt trong iOS 6
- 4. Thông báo cập nhật ứng dụng iOS
- 5. Kiểm tra xem lần kiểm tra cập nhật Windows lần cuối có được thực hiện hay không
- 6. Kiểm tra xem 'Truy cập vào vị trí của tôi' đã được bật chưa - Android
- 7. Làm cách nào chúng tôi có thể kiểm tra ứng dụng ios bị người dùng hoặc ứng dụng iOS
- 8. Làm cách nào để kiểm tra xem ứng dụng của tôi có quyền truy cập vào thư viện điện thoại
- 9. c linux kiểm tra xem tệp có được cập nhật/thay đổi/sửa đổi không?
- 10. Làm cách nào để kiểm tra xem ứng dụng của tôi có tập trung không?
- 11. Mã để kiểm tra các bản cập nhật, cài đặt phiên bản mới của ứng dụng
- 12. Android kiểm tra khi bảng được cập nhật lần cuối
- 13. Kiểm tra xem yêu cầu http đến từ ứng dụng Android của tôi
- 14. IOS kiểm tra ứng dụng nếu GPS tắt
- 15. Kiểm tra xem javascript có được bật
- 16. Làm cách nào để kiểm tra xem ứng dụng của tôi có được đặt mặc định hay không trong Android?
- 17. Cập nhật ứng dụng iOS với mô hình dữ liệu lõi đã cập nhật
- 18. Cập nhật MongoDB: cách kiểm tra xem bản cập nhật có thành công hay không thành công không?
- 19. Kiểm tra xem tệp có đang được sử dụng hay ứng dụng nào không?
- 20. Kiểm tra xem bảng truy cập có tồn tại không
- 21. Kiểm tra xem cookie có được đặt
- 22. ios kiểm tra xem NSArray == null
- 23. Cách kiểm tra mạng chậm/thấp trong ứng dụng ios
- 24. Cách kiểm tra xem JCheckBox có được kiểm tra không?
- 25. Kiểm tra xem đầu ra có được chuyển hướng
- 26. Làm cách nào để tôi có thể làm cho ứng dụng Cửa hàng ứng dụng Mac kiểm tra các bản cập nhật?
- 27. tập lệnh đơn giản để kiểm tra xem trang web đã được cập nhật chưa
- 28. Python - Cách kiểm tra xem tệp có được ứng dụng khác sử dụng không?
- 29. Làm cách nào để kiểm tra xem một hàng có bị khóa để cập nhật không?
- 30. kiểm tra xem người dùng có cho phép ứng dụng sử dụng vị trí của họ
bạn cần phải giải thích về câu hỏi này: những gì đang được cập nhật? bản thân ứng dụng hoặc tệp trong ứng dụng hoặc tệp sẽ được tải xuống từ máy chủ từ xa? –
bản thân ứng dụng đang được cập nhật – user2412870