1
0
mirror of https://gitcode.com/gh_mirrors/re/react-native-pushy.git synced 2025-11-22 15:36:10 +08:00
Code Issues Packages Projects Releases Wiki Activity GitHub Gitee

Compare commits

..

2 Commits

5 changed files with 45 additions and 23 deletions

1
.gitignore vendored
View File

@@ -51,3 +51,4 @@ android/bin
Example/testHotUpdate/harmony Example/testHotUpdate/harmony
Example/testHotUpdate/android/app/.cxx Example/testHotUpdate/android/app/.cxx
Example/harmony_use_pushy/libs Example/harmony_use_pushy/libs
.cursor/mcp.json

View File

@@ -36,10 +36,18 @@ public class UpdateContext {
this.sp = context.getSharedPreferences("update", Context.MODE_PRIVATE); this.sp = context.getSharedPreferences("update", Context.MODE_PRIVATE);
String packageVersion = getPackageVersion(); String packageVersion = getPackageVersion();
if (!packageVersion.equals(this.sp.getString("packageVersion", null))) { String buildTime = getBuildTime();
String storedPackageVersion = this.sp.getString("packageVersion", null);
String storedBuildTime = this.sp.getString("buildTime", null);
boolean packageVersionChanged = !packageVersion.equals(storedPackageVersion);
boolean buildTimeChanged = !buildTime.equals(storedBuildTime);
if (packageVersionChanged || buildTimeChanged) {
SharedPreferences.Editor editor = sp.edit(); SharedPreferences.Editor editor = sp.edit();
editor.clear(); editor.clear();
editor.putString("packageVersion", packageVersion); editor.putString("packageVersion", packageVersion);
editor.putString("buildTime", buildTime);
editor.apply(); editor.apply();
this.cleanUp(); this.cleanUp();

View File

@@ -16,6 +16,7 @@
static NSString *const keyPushyInfo = @"REACTNATIVECN_PUSHY_INFO_KEY"; static NSString *const keyPushyInfo = @"REACTNATIVECN_PUSHY_INFO_KEY";
static NSString *const paramPackageVersion = @"packageVersion"; static NSString *const paramPackageVersion = @"packageVersion";
static NSString *const paramBuildTime = @"buildTime";
static NSString *const paramLastVersion = @"lastVersion"; static NSString *const paramLastVersion = @"lastVersion";
static NSString *const paramCurrentVersion = @"currentVersion"; static NSString *const paramCurrentVersion = @"currentVersion";
static NSString *const paramIsFirstTime = @"isFirstTime"; static NSString *const paramIsFirstTime = @"isFirstTime";
@@ -70,20 +71,28 @@ RCT_EXPORT_MODULE(RCTPushy);
{ {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// Check for version changes first
NSString *curPackageVersion = [RCTPushy packageVersion];
NSString *curBuildTime = [RCTPushy buildTime];
NSString *storedPackageVersion = [defaults stringForKey:paramPackageVersion];
NSString *storedBuildTime = [defaults stringForKey:paramBuildTime];
BOOL packageVersionChanged = ![curPackageVersion isEqualToString:storedPackageVersion];
BOOL buildTimeChanged = ![curBuildTime isEqualToString:storedBuildTime];
if (packageVersionChanged || buildTimeChanged) {
// Clear all update data and store new versions
[defaults setObject:nil forKey:keyPushyInfo];
[defaults setObject:nil forKey:keyHashInfo];
[defaults setObject:@(YES) forKey:KeyPackageUpdatedMarked];
[defaults setObject:curPackageVersion forKey:paramPackageVersion];
[defaults setObject:curBuildTime forKey:paramBuildTime];
// ...need clear files later
}
NSDictionary *pushyInfo = [defaults dictionaryForKey:keyPushyInfo]; NSDictionary *pushyInfo = [defaults dictionaryForKey:keyPushyInfo];
if (pushyInfo) { if (pushyInfo) {
NSString *curPackageVersion = [RCTPushy packageVersion];
NSString *packageVersion = [pushyInfo objectForKey:paramPackageVersion];
BOOL needClearPushyInfo = ![curPackageVersion isEqualToString:packageVersion];
if (needClearPushyInfo) {
[defaults setObject:nil forKey:keyPushyInfo];
[defaults setObject:nil forKey:keyHashInfo];
[defaults setObject:@(YES) forKey:KeyPackageUpdatedMarked];
// ...need clear files later
}
else {
NSString *curVersion = pushyInfo[paramCurrentVersion]; NSString *curVersion = pushyInfo[paramCurrentVersion];
BOOL isFirstTime = [pushyInfo[paramIsFirstTime] boolValue]; BOOL isFirstTime = [pushyInfo[paramIsFirstTime] boolValue];
@@ -127,13 +136,11 @@ RCT_EXPORT_MODULE(RCTPushy);
NSDictionary *pushyInfo = [defaults dictionaryForKey:keyPushyInfo]; NSDictionary *pushyInfo = [defaults dictionaryForKey:keyPushyInfo];
NSString *lastVersion = pushyInfo[paramLastVersion]; NSString *lastVersion = pushyInfo[paramLastVersion];
NSString *curVersion = pushyInfo[paramCurrentVersion]; NSString *curVersion = pushyInfo[paramCurrentVersion];
NSString *curPackageVersion = [RCTPushy packageVersion];
if (lastVersion.length) { if (lastVersion.length) {
// roll back to last version // roll back to last version
[defaults setObject:@{paramCurrentVersion:lastVersion, [defaults setObject:@{paramCurrentVersion:lastVersion,
paramIsFirstTime:@(NO), paramIsFirstTime:@(NO),
paramIsFirstLoadOk:@(YES), paramIsFirstLoadOk:@(YES)}
paramPackageVersion:curPackageVersion}
forKey:keyPushyInfo]; forKey:keyPushyInfo];
} }
else { else {
@@ -296,7 +303,6 @@ RCT_EXPORT_METHOD(setNeedUpdate:(NSDictionary *)options
newInfo[paramLastVersion] = lastVersion; newInfo[paramLastVersion] = lastVersion;
newInfo[paramIsFirstTime] = @(YES); newInfo[paramIsFirstTime] = @(YES);
newInfo[paramIsFirstLoadOk] = @(NO); newInfo[paramIsFirstLoadOk] = @(NO);
newInfo[paramPackageVersion] = [RCTPushy packageVersion];
[defaults setObject:newInfo forKey:keyPushyInfo]; [defaults setObject:newInfo forKey:keyPushyInfo];

View File

@@ -1,6 +1,6 @@
{ {
"name": "react-native-update", "name": "react-native-update",
"version": "10.29.9", "version": "10.30.1",
"description": "react-native hot update", "description": "react-native hot update",
"main": "src/index", "main": "src/index",
"scripts": { "scripts": {

View File

@@ -109,9 +109,16 @@ export const enhancedFetch = async (
url: string, url: string,
params: Parameters<typeof fetch>[1], params: Parameters<typeof fetch>[1],
) => { ) => {
return fetch(url, params).catch(e => { return fetch(url, params)
log('fetch error', url, e); .then(r => {
log('trying fallback to http'); if (r.ok) {
return fetch(url.replace('https', 'http'), params); return r;
}); }
throw new Error(`${r.status} ${r.statusText}`);
})
.catch(e => {
log('fetch error', url, e);
log('trying fallback to http');
return fetch(url.replace('https', 'http'), params);
});
}; };