当前位置: 首页 > news >正文

好听大气的公司名称石家庄网络seo推广

好听大气的公司名称,石家庄网络seo推广,wordpress图片资源主题,wordpress插件dflipiOS开发-检查版本更新与强制更新控制。 在开发中经常遇到需要检查版本,检查版本及请求appstoreLookUrl查看版本号与当前的版本号进行比对,看是否需要更新。强制更新控制,是将获取到当前版本号传给服务端,服务端判断当前的版本是否…

iOS开发-检查版本更新与强制更新控制。

在开发中经常遇到需要检查版本,检查版本及请求appstoreLookUrl查看版本号与当前的版本号进行比对,看是否需要更新。强制更新控制,是将获取到当前版本号传给服务端,服务端判断当前的版本是否需要强制升级。

一、app升级检查

发送请求系统NSURLConnection sendAsynchronousRequest

代码如下

SDVersionManager.h

#import <Foundation/Foundation.h>@interface SDVersionManager : NSObject<NSCoding>@property (nonatomic,strong) NSString *lastVersionCode; //版本code@property (nonatomic,strong) NSString *lastVersion;     //保存最新的版本lastVersion@property (nonatomic,strong) NSString *versionNotes;    //版本更新的记录releaseNotes+ (instancetype)sharedInstance;/**检测版本更新,如果有新版本,提醒用户更新,提醒一次@param needUpdate 需要更新的回调@param failure 不需要更新*/
+ (void)checkAppVersion:(void (^) (void))needUpdatefailure:(void (^) (void))failure;@end#pragma mark - SDVersionManagerDB@interface SDVersionManagerDB : NSObject+ (instancetype)sharedInstance;/**获取自定义对象UpdatedVersion实体,反序列化操作@return UpdatedVersion 实体*/
- (SDVersionManager *)loadLastVersion;/**保存自定义对象序列号@param version UpdatedVersion实体@return 是否保存成功*/
- (BOOL)saveLastVersion:(SDVersionManager *)version;@end

SDVersionManager.m

#import "SDVersionManager.h"
#import "SDContextManager.h"#define kDataFileVersion @"UpdatedVersion"
#define kDocumentPath NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]@class SDVersionManagerDB;
@implementation SDVersionManager
/**单例模式使用 dispatch_once_t if不是线程安全的@return 实例对象*/
+ (instancetype)sharedInstance
{static SDVersionManager *_sharedInstance = nil;static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{_sharedInstance = [[SDVersionManagerDB sharedInstance] loadLastVersion];if (_sharedInstance == nil) {_sharedInstance = [[SDVersionManager alloc] init];_sharedInstance.lastVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];}});return _sharedInstance;
}- (void)encodeWithCoder:(NSCoder *)aCoder {[aCoder encodeObject:_lastVersionCode forKey:NSStringFromSelector(@selector(lastVersionCode))];[aCoder encodeObject:_lastVersion forKey:NSStringFromSelector(@selector(lastVersion))];[aCoder encodeObject:_versionNotes forKey:NSStringFromSelector(@selector(versionNotes))];
}- (id)initWithCoder:(NSCoder *)aDecoder {if (self = [super init]) {_lastVersionCode = [aDecoder decodeObjectForKey:NSStringFromSelector(@selector(lastVersionCode))];_lastVersion = [aDecoder decodeObjectForKey:NSStringFromSelector(@selector(lastVersion))];_versionNotes = [aDecoder decodeObjectForKey:NSStringFromSelector(@selector(versionNotes))];}return self;
}/**检测版本更新,如果有新版本,提醒用户更新,提醒一次@param needUpdate 需要更新的回调@param failure 不需要更新*/
+ (void)checkAppVersion:(void (^) (void))needUpdatefailure:(void (^) (void))failure {NSURL *appstoreUrl = [NSURL URLWithString:[SDContextManager shareInstance].appstoreLookUrl];NSURLRequest *request = [NSURLRequest requestWithURL:appstoreUrl];NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];NSString *bundleCurrentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];__weak typeof(currentVersion) weakCurrentVersion = currentVersion;__weak typeof(bundleCurrentVersion) weakBundleCurrentVersion = bundleCurrentVersion;[NSURLConnection sendAsynchronousRequest:requestqueue:[NSOperationQueue mainQueue]completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {if (!connectionError) {NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&connectionError];NSArray *results = [dic objectForKey:@"results"];if ([results count] > 0) {NSDictionary *resultValue = [results objectAtIndex:0];NSString *versionStr = [resultValue objectForKey:@"version"];NSString *version = [[resultValue objectForKey:@"version"] stringByReplacingOccurrencesOfString:@"." withString:@""];NSString *note = [resultValue objectForKey:@"releaseNotes"];NSString *curVersion = [weakCurrentVersion stringByReplacingOccurrencesOfString:@"." withString:@""];NSString *curBundleVersion = [weakBundleCurrentVersion stringByReplacingOccurrencesOfString:@"." withString:@""];[SDVersionManager sharedInstance].versionNotes = note;if ([curVersion integerValue] < [version integerValue]) {//当前版本比appstore上低NSString *alastVerstion = [SDVersionManager sharedInstance].lastVersion;if (alastVerstion && version && ([alastVerstion integerValue] < [version integerValue])) {[SDVersionManager sharedInstance].lastVersion = version;[SDVersionManager sharedInstance].lastVersionCode = versionStr;if (needUpdate) {needUpdate();}} else {if (failure) {failure();}}} else if ([curVersion integerValue] <= [version integerValue]) {//当前版本比appstore上相同[SDVersionManager sharedInstance].lastVersion = version;[SDVersionManager sharedInstance].lastVersionCode = versionStr;if (failure) {failure();}} else if ([curVersion integerValue] > [version integerValue]) {//当前版本比appstore上高[SDVersionManager sharedInstance].lastVersion = version;[SDVersionManager sharedInstance].lastVersionCode = versionStr;if (failure) {failure();}}[[SDVersionManagerDB sharedInstance] saveLastVersion:[SDVersionManager sharedInstance]];}} else {if (failure) {failure();}}}];
}@end#pragma mark - SDVersionManagerDB@implementation SDVersionManagerDB+ (instancetype)sharedInstance {static SDVersionManagerDB *_sharedInstance = nil;static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{_sharedInstance = [[SDVersionManagerDB alloc] init];});return _sharedInstance;
}/**获取自定义对象UpdatedVersion实体,反序列化操作@return UpdatedVersion 实体*/
- (SDVersionManager *)loadLastVersion {NSString *dataFile = [NSString stringWithFormat:@"%@/%@", kDocumentPath, kDataFileVersion];@try{SDVersionManager *version = (SDVersionManager *)[NSKeyedUnarchiver unarchiveObjectWithFile:dataFile];if (version) {return version;}}@catch (NSException *e){}return nil;
}/**保存自定义对象序列化@param version UpdatedVersion实体@return 是否保存成功*/
- (BOOL)saveLastVersion:(SDVersionManager *)version {NSData *data = [NSKeyedArchiver archivedDataWithRootObject:version];NSString *dataFile = [NSString stringWithFormat:@"%@/%@", kDocumentPath, kDataFileVersion];return [data writeToFile:dataFile atomically:YES];
}@end

二、强制升级控制

强制更新控制,是将获取到当前版本号传给服务端,服务端判断当前的版本是否需要强制升级。

这块暂时就不写请求服务端的代码了。

三、小结

iOS开发-检查版本更新与强制更新控制。

在开发中经常遇到需要检查版本,检查版本及请求appstoreLookUrl查看版本号与当前的版本号进行比对,看是否需要更新。强制更新控制,是将获取到当前版本号传给服务端,服务端判断当前的版本是否需要强制升级。

学习记录,每天不停进步。

http://www.15wanjia.com/news/41351.html

相关文章:

  • 南庄做网站百度账号申诉中心
  • 企业网站备案需要哪些资料网络推广哪个平台好
  • 搜索引擎优化是什么百度搜索引擎关键词优化
  • 可以做数据图的的网站百度指数分是什么
  • 做的好的日本网站设计抖音搜索关键词排名
  • 高端网站定做google谷歌
  • 贵阳网站制作贵阳网站建设哪家好免费建站免费推广的网站
  • 网站的设计方法百度宣传推广
  • 西安北郊做网站的公司免费创建网站
  • wordpress 仿百度文库北京优化互联网公司
  • 咋样建设网站互联网公司
  • 无锡做网站多少钱如何搭建网站
  • 网站建设需要洽谈什么免费推广引流平台
  • 济南做网站找泉诺百度推广方法
  • 怎么使用织梦做网站seo入门培训班
  • 淘宝采用了哪些网络营销方式超级推荐的关键词怎么优化
  • php网站留言板是怎么做的青岛网站排名提升
  • 西安做网站公司有哪些天津seo关键词排名优化
  • 嘉兴免费网站建站模板太原网站优化
  • 网站做301好不好全网热度指数
  • 广州外贸网站制作公司网站百度收录突然消失了
  • 石家庄网站定做网页制作模板
  • 百度回收网站搭建今日新闻头条新闻今天
  • 网站开发主管seo关键词排名优化怎样收费
  • 广州做网站哪家公司好内容营销成功案例
  • 称多县网站建设公司上海网站推广公司
  • 网站导航优化口碑营销的主要手段有哪些
  • 上海做网站的免费建一个自己的网站
  • 焦溪翠冠梨做的网站关键词指数查询工具
  • 怎么做根优酷差不多的网站百度人工服务在线咨询