(2)普通更新:弹出提示框有“取消”和“确定”两个选项:点击确定跳转更新;点击取消本地保存待更新版本号,再次进入时则和本地保存的待更新版本号进行判断,如果相同则弹出提示框,不相同则不操作(例如V1.1版本普通更新选择”取消”后,后面V1.1的版本不会再次提示,但V1.2版本更新仍会提示)
(3)无更新:不操作
//
检查更新
NSString *stringVer = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString*
)kCFBundleVersionKey];
[[NetWorkRequest shareRequest]updateNewVersionWithversioncode:stringVer serverSuccessFn:
^(
id
response) {
if
([[response objectForKey:
@"
qzupdate
"
] intValue] ==
1
&&
[[response objectForKey:
@"
updateurl
"
] length] >
0
) {
DebugLog(
@"
需要强制更新
"
);
NSString
*mes = [NSString stringWithFormat:
@"
发现最新版本%@,需更新后才能继续使用\n更新内容:%@
"
,[response objectForKey:
@"
versioncode
"
],[response objectForKey:
@"
descr
"
]];
UIAlertView
*alertView = [[UIAlertView alloc] initWithTitle:
@"
提示
"
message:mes
delegate
:self
cancelButtonTitle:nil
otherButtonTitles:
@"
确定
"
, nil];
alertView.tag
=
1001
;
[alertView show];
}
else
if
([[response objectForKey:
@"
isupdate
"
] intValue] ==
1
&&
[[response objectForKey:
@"
updateurl
"
] length] >
0
) {
NSUserDefaults
*userDefaults =
[NSUserDefaults standardUserDefaults];
NSString
*version = [userDefaults objectForKey:
@"
Version_To_Update
"
];
//
待更新的版本
version_to_update = [response objectForKey:
@"
versioncode
"
];
if
([stringVer floatValue] < [version floatValue] &&
[version_to_update floatValue]
<=
[version floatValue]) {
//
当前待更新版本已点击取消并在本地保存的待更新版本,不弹出提示框
}
else
{
//
弹出提示框进行更新
NSString *mes = [NSString stringWithFormat:
@"
发现最新版本%@,是否更新?\n更新内容:%@
"
,[response objectForKey:
@"
versioncode
"
],[response objectForKey:
@"
descr
"
]];
UIAlertView
*alertTi = [[UIAlertView alloc] initWithTitle:
@"
提示
"
message:mes
delegate
:self
cancelButtonTitle:
@"
取消
"
otherButtonTitles:
@"
确定
"
, nil];
alertTi.tag
=
1002
;
[alertTi show];
}
else
{
//
DebugLog(@"不需要更新");
} serverFailureFn:^(NSError *error,
id
response) {
调用更新接口返回字段:result = { descr = ""; isupdate = 1;//是否更新 qzupdate = 0;//是否强制更新 updateurl = "http://www.baidu.com";//更新地址 versionco...
版本号规则版本号的格式:v<主版本号>.<副版本号>.<发布号>
如版本号为2.3.6
1. 我一般把第一位作为大版本号。如出现重大
更新
,如果用户不
更新
,这个app都用不下去了。这个时候就要
强制
用户
更新
。
2. 第二位作为功能版本号。比如增加了一些新的功能。这个时候通过增加这个版本号,来添加功能。
3. 第三位作为修订版本号。如,上线后出现了一个bug,这个bug需要及时修复,这个时候
//app
强制
更新
//定义的app的地址
NSString *urld = [NSString stringWithFormat:@"http://itunes.apple.com/cn/lookup?id=%@
",@"你的ap
要想规避苹果审查,我们需要通过调用数据接口来控制调用app 版本
强制
更新
功能:当苹果在审查的时候,我们可以通过后台数据控制关闭版本
强制
更新
功能,等苹果审核通过以后我通过后台控制打开版本
强制
更新
功能。下面是app 版本
强制
更新
功能
实现
的代码:
AppDelegate.h文件
#import
@interface AppDelegate : UIResponder
@property (
foreach($user as $k =&gt; $v) {
if(某些条件满足) {
$this-&gt;save(['score'=&gt;$v['score']],['id'=&gt;$v['id']]);
当
更新
的数据一样,即使条件不一致时,save方法也不会
更新
数据。
解决方法:
加上isUpdate(true)
更新
...
NSString *version = [[[NSBundle mainBundle]infoDictionary] objectForKey:@"CFBundleVersion"];
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manag...
React Native的自建热
更新
功能是指开发者自行
实现
热
更新
功能,而不使用第三方提供的热
更新
服务。下面将简单介绍
实现
自建热
更新
的一般步骤。
首先,需要创建一个服务器来存放热
更新
的文件。可以使用云存储服务,如AWS S3、阿里云OSS等,也可以自行搭建服务器存储文件。
其次,需要在React Native
应用
中添加热
更新
的逻辑。一般情况下,热
更新
需要通过下载文件来替换原有的文件。可以使用React Native提供的`fetch` API来下载热
更新
文件,然后使用文件操作相关的API来替换原文件。
在App启动时,可以通过向服务器请求版本号等信息来判断是否需要进行热
更新
。当发现需要
更新
时,App会向服务器请求热
更新
文件的下载链接。下载完成后,可以通过解压文件或者其他方式来获取到热
更新
包内的文件。然后使用文件操作相关的API,将这些文件替换到React Native
应用
相应的目录中。
最后,可以在App中增加一些逻辑,比如通过热
更新
版本号来判断是否需要
强制
更新
、增加热
更新
的错误处理等。
需要注意的是,在
实现
自建热
更新
功能时,还需要考虑到热
更新
文件的校验、下载进度显示、热
更新
中断恢复等问题。此外,还需要兼容不同平台(Android和
iOS
)的热
更新
需求。
综上所述,
实现
自建热
更新
需要创建服务器存储
更新
文件,并在React Native
应用
中添加热
更新
的逻辑,包括判断是否需要
更新
、下载热
更新
文件、替换文件等步骤。同时,还需要考虑一些额外功能的
实现
和平台兼容性的问题。