From f7309f699f08477c46c634e40dfc2d7a85dd08af Mon Sep 17 00:00:00 2001 From: sunnylqm Date: Thu, 28 Aug 2025 18:45:00 +0800 Subject: [PATCH] update version to 10.30.0, enhance version and build time tracking in UpdateContext and RCTPushy, and add new entry to .gitignore --- .gitignore | 1 + .../modules/update/UpdateContext.java | 10 ++++- ios/RCTPushy/RCTPushy.mm | 38 +++++++++++-------- package.json | 2 +- 4 files changed, 33 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index 819d856..bab1e1a 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,4 @@ android/bin Example/testHotUpdate/harmony Example/testHotUpdate/android/app/.cxx Example/harmony_use_pushy/libs +.cursor/mcp.json diff --git a/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java b/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java index d1a95bf..c9aa6ff 100644 --- a/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java +++ b/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java @@ -36,10 +36,18 @@ public class UpdateContext { this.sp = context.getSharedPreferences("update", Context.MODE_PRIVATE); 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(); editor.clear(); editor.putString("packageVersion", packageVersion); + editor.putString("buildTime", buildTime); editor.apply(); this.cleanUp(); diff --git a/ios/RCTPushy/RCTPushy.mm b/ios/RCTPushy/RCTPushy.mm index 351ae7a..6f7f006 100644 --- a/ios/RCTPushy/RCTPushy.mm +++ b/ios/RCTPushy/RCTPushy.mm @@ -16,6 +16,7 @@ static NSString *const keyPushyInfo = @"REACTNATIVECN_PUSHY_INFO_KEY"; static NSString *const paramPackageVersion = @"packageVersion"; +static NSString *const paramBuildTime = @"buildTime"; static NSString *const paramLastVersion = @"lastVersion"; static NSString *const paramCurrentVersion = @"currentVersion"; static NSString *const paramIsFirstTime = @"isFirstTime"; @@ -70,20 +71,28 @@ RCT_EXPORT_MODULE(RCTPushy); { 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]; 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]; BOOL isFirstTime = [pushyInfo[paramIsFirstTime] boolValue]; @@ -127,13 +136,11 @@ RCT_EXPORT_MODULE(RCTPushy); NSDictionary *pushyInfo = [defaults dictionaryForKey:keyPushyInfo]; NSString *lastVersion = pushyInfo[paramLastVersion]; NSString *curVersion = pushyInfo[paramCurrentVersion]; - NSString *curPackageVersion = [RCTPushy packageVersion]; if (lastVersion.length) { // roll back to last version [defaults setObject:@{paramCurrentVersion:lastVersion, paramIsFirstTime:@(NO), - paramIsFirstLoadOk:@(YES), - paramPackageVersion:curPackageVersion} + paramIsFirstLoadOk:@(YES)} forKey:keyPushyInfo]; } else { @@ -296,7 +303,6 @@ RCT_EXPORT_METHOD(setNeedUpdate:(NSDictionary *)options newInfo[paramLastVersion] = lastVersion; newInfo[paramIsFirstTime] = @(YES); newInfo[paramIsFirstLoadOk] = @(NO); - newInfo[paramPackageVersion] = [RCTPushy packageVersion]; [defaults setObject:newInfo forKey:keyPushyInfo]; diff --git a/package.json b/package.json index c5356db..44a4f5c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-update", - "version": "10.29.9", + "version": "10.30.0", "description": "react-native hot update", "main": "src/index", "scripts": {