版本更新被拒绝解决方案
Posted 「违规用户」
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了版本更新被拒绝解决方案相关的知识,希望对你有一定的参考价值。
总结:由于苹果有自己的自动更新功能(当然你也可以不打开,可配置),所以以前通过比对版本号更新的那一套就算废了。为了解决,我们可以在服务端配置开关,这样,在审核的时候关闭,上线后打开。
那么什么时候才需要出现弹出框呢?
美味C端是这样处理的:
1.比对上次出现更新弹出框出现的时间,如果两次打开时间相距小于设定的时间,则不显示弹出框。
2.访问URLhttps://itunes.apple.com/us/lookup?id=979857479 获得一些跟APP有关的信息。
3.通过bundleId确认是此APP。
4.存在版本号并且系统当前的版本大于等于最小可支持的版本。
5.比较当前的版本号和appstore的版本号。如果一样则返回。
6.访问我们自己的服务器http://9now.cn/User/Version/index?VerCode=4.0.21&inhouse=0,查看是否需要更新,需要则显示弹出框。
7.弹出框有三种,下载,忽略此版本,稍后提醒我。
- (void)checkVersion
if (![selfshouldCheckForNewVersion])
return;
BOOL inHouse =isInHouse;
BOOL inAppStore =isAppStore;
if (inHouse)
NSURL *URL = [NSURLURLWithString:INHOUSE_remoteVersionsPlistURLHTTPS];
NSURLRequest *request = [NSURLRequestrequestWithURL:URL];
NSURLSession *session = [NSURLSessionsharedSession];
NSURLSessionDataTask *task = [sessiondataTaskWithRequest:request
completionHandler:
^(NSData *data,NSURLResponse *response, NSError *error)
if(!data)
return ;
NSPropertyListFormat format;
NSDictionary *plistVersions = [NSPropertyListSerializationpropertyListWithData:data options:NSPropertyListImmutableformat:&format error:&error];
//获取版本更新信息
NSString *releaseNotes =nil;
NSString *latestVersion =nil;
if (plistVersions[@"releaseNotes"])
releaseNotes = plistVersions[@"releaseNotes"];
if (plistVersions[@"version"])
latestVersion = plistVersions[@"version"];
if (latestVersion)
self.versionDic =@latestVersion: releaseNotes ?:@"";
[selfcheckForceUpgradeVersion];
];
[task resume];
elseif(inAppStore)
//get country
NSString *applicationBundleID = [[NSBundlemainBundle] bundleIdentifier];
NSString *appStoreCountry = [(NSLocale *)[NSLocalecurrentLocale] objectForKey:NSLocaleCountryCode];
if ([appStoreCountryisEqualToString:@"150"])
appStoreCountry = @"eu";
elseif ([[appStoreCountry stringByReplacingOccurrencesOfString:@"[A-Za-z]2"withString:@""options:NSRegularExpressionSearchrange:NSMakeRange(0,2)] length])
appStoreCountry = @"us";
//first check iTunes
NSString *iTunesServiceURL = [NSStringstringWithFormat:iVersionAppLookupURLFormat, appStoreCountry];
if (self.appStoreID)
iTunesServiceURL = [iTunesServiceURL stringByAppendingFormat:@"?id=%@",@(self.appStoreID)];
else
iTunesServiceURL = [iTunesServiceURL stringByAppendingFormat:@"?bundleId=%@", applicationBundleID];
NSURL *URL = [NSURLURLWithString:iTunesServiceURL];
NSURLRequest *request = [NSURLRequestrequestWithURL:URL];
NSURLSession *session = [NSURLSessionsharedSession];
NSURLSessionDataTask *task = [sessiondataTaskWithRequest:request
completionHandler:
^(NSData *data,NSURLResponse *response, NSError *error)
//in case error is garbage...
if (!data)
return ;
error = nil;
id json =nil;
if ([NSJSONSerializationclass])
json = [[NSJSONSerializationJSONObjectWithData:data options:(NSJSONReadingOptions)0error:&error][@"results"]lastObject];
else
//convert to string
json = [[NSStringalloc] initWithData:dataencoding:NSUTF8StringEncoding];
if (!error)
//check bundle ID matches
NSString *bundleID = json[@"bundleId"];
if (bundleID)
if ([bundleID isEqualToString:applicationBundleID])
//get supported OS version
NSString *systemVersion = [UIDevicecurrentDevice].systemVersion;
NSString *minimumSupportedOSVersion = json[@"minimumOsVersion"];
//get version details
NSString *releaseNotes = json[@"releaseNotes"];
NSString *latestVersion = json[@"version"];
BOOL osVersionSupported = ([systemVersioncompare:minimumSupportedOSVersionoptions:NSNumericSearch] !=NSOrderedAscending);
if (latestVersion && osVersionSupported)
self.versionDic =@latestVersion: releaseNotes ?:@"";
[selfcheckForceUpgradeVersion];
];
[task resume];
以上是关于版本更新被拒绝解决方案的主要内容,如果未能解决你的问题,请参考以下文章
如何解决更新被拒绝,因为远程版本库包含您本地尚不存在的提交。这通常是因为另外 提示:一个版本库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更 提示:(如 'git pull ...