mirror of
https://gitcode.com/gh_mirrors/re/react-native-pushy.git
synced 2025-09-16 12:51:44 +08:00
Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
1f1a10bfa0 | ||
![]() |
d953ef3111 | ||
![]() |
eea7ff26f2 | ||
![]() |
684dc8267d | ||
![]() |
5786bf8132 | ||
![]() |
1bd5fbbc94 | ||
![]() |
cd2eb9417a |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -41,4 +41,5 @@ local.properties
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
|
||||
Example/**/update.json
|
||||
Example/**/update.json
|
||||
yarn-error.log
|
||||
|
@@ -490,7 +490,10 @@ class DownloadTask extends AsyncTask<DownloadTaskParams, long[], Void> {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Log.e("pushy", "download task failed", e);
|
||||
params[0].listener.onDownloadFailed(e);
|
||||
|
||||
if (params[0].listener != null) {
|
||||
params[0].listener.onDownloadFailed(e);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@@ -31,13 +31,14 @@ import static android.support.v4.content.FileProvider.getUriForFile;
|
||||
/**
|
||||
* Created by tdzl2003 on 3/31/16.
|
||||
*/
|
||||
public class UpdateModule extends ReactContextBaseJavaModule{
|
||||
public class UpdateModule extends ReactContextBaseJavaModule {
|
||||
UpdateContext updateContext;
|
||||
public static ReactApplicationContext mContext;
|
||||
|
||||
public UpdateModule(ReactApplicationContext reactContext, UpdateContext updateContext) {
|
||||
super(reactContext);
|
||||
this.updateContext = updateContext;
|
||||
mContext=reactContext;
|
||||
mContext = reactContext;
|
||||
}
|
||||
|
||||
public UpdateModule(ReactApplicationContext reactContext) {
|
||||
@@ -73,7 +74,7 @@ public class UpdateModule extends ReactContextBaseJavaModule{
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void downloadUpdate(ReadableMap options, final Promise promise){
|
||||
public void downloadUpdate(ReadableMap options, final Promise promise) {
|
||||
String url = options.getString("updateUrl");
|
||||
String hash = options.getString("hash");
|
||||
updateContext.downloadFullUpdate(url, hash, new UpdateContext.DownloadFileListener() {
|
||||
@@ -90,7 +91,7 @@ public class UpdateModule extends ReactContextBaseJavaModule{
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void downloadAndInstallApk(ReadableMap options, final Promise promise){
|
||||
public void downloadAndInstallApk(ReadableMap options, final Promise promise) {
|
||||
String url = options.getString("url");
|
||||
String hash = options.getString("hash");
|
||||
String target = options.getString("target");
|
||||
@@ -136,9 +137,12 @@ public class UpdateModule extends ReactContextBaseJavaModule{
|
||||
|
||||
|
||||
@ReactMethod
|
||||
public void downloadPatchFromPackage(ReadableMap options, final Promise promise){
|
||||
public void downloadPatchFromPackage(ReadableMap options, final Promise promise) {
|
||||
String url = options.getString("updateUrl");
|
||||
String hash = options.getString("hash");
|
||||
if (hash == null) {
|
||||
hash = options.getString("hashName");
|
||||
}
|
||||
updateContext.downloadPatchFromApk(url, hash, new UpdateContext.DownloadFileListener() {
|
||||
@Override
|
||||
public void onDownloadCompleted(DownloadTaskParams params) {
|
||||
@@ -153,10 +157,16 @@ public class UpdateModule extends ReactContextBaseJavaModule{
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void downloadPatchFromPpk(ReadableMap options, final Promise promise){
|
||||
public void downloadPatchFromPpk(ReadableMap options, final Promise promise) {
|
||||
String url = options.getString("updateUrl");
|
||||
String hash = options.getString("hash");
|
||||
if (hash == null) {
|
||||
hash = options.getString("hashName");
|
||||
}
|
||||
String originHash = options.getString("originHash");
|
||||
if (originHash == null) {
|
||||
originHash = options.getString(("originHashName"));
|
||||
}
|
||||
updateContext.downloadPatchFromPpk(url, hash, originHash, new UpdateContext.DownloadFileListener() {
|
||||
@Override
|
||||
public void onDownloadCompleted(DownloadTaskParams params) {
|
||||
@@ -172,7 +182,8 @@ public class UpdateModule extends ReactContextBaseJavaModule{
|
||||
|
||||
@ReactMethod
|
||||
public void reloadUpdate(ReadableMap options) {
|
||||
final String hash = options.getString("hash");
|
||||
final String hash = options.getString("hash") == null ?
|
||||
options.getString("hashName") : options.getString("hash");
|
||||
|
||||
UiThreadUtil.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
@@ -200,7 +211,7 @@ public class UpdateModule extends ReactContextBaseJavaModule{
|
||||
|
||||
try {
|
||||
instanceManager.recreateReactContextInBackground();
|
||||
} catch(Throwable err) {
|
||||
} catch (Throwable err) {
|
||||
activity.recreate();
|
||||
}
|
||||
|
||||
@@ -213,7 +224,8 @@ public class UpdateModule extends ReactContextBaseJavaModule{
|
||||
|
||||
@ReactMethod
|
||||
public void setNeedUpdate(ReadableMap options) {
|
||||
final String hash = options.getString("hash");
|
||||
final String hash = options.getString("hash") == null ?
|
||||
options.getString("hashName") : options.getString("hash");
|
||||
|
||||
UiThreadUtil.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
@@ -260,7 +272,7 @@ public class UpdateModule extends ReactContextBaseJavaModule{
|
||||
}
|
||||
|
||||
/* 发送事件*/
|
||||
public static void sendEvent(String eventName, WritableMap params) {
|
||||
public static void sendEvent(String eventName, WritableMap params) {
|
||||
((ReactContext) mContext).getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(eventName,
|
||||
params);
|
||||
}
|
||||
|
@@ -84,7 +84,6 @@ RCT_EXPORT_MODULE(RCTPushy);
|
||||
}
|
||||
else {
|
||||
NSString *curVersion = pushyInfo[paramCurrentVersion];
|
||||
NSString *lastVersion = pushyInfo[paramLastVersion];
|
||||
|
||||
BOOL isFirstTime = [pushyInfo[paramIsFirstTime] boolValue];
|
||||
BOOL isFirstLoadOK = [pushyInfo[paramIsFirstLoadOk] boolValue];
|
||||
@@ -92,23 +91,7 @@ RCT_EXPORT_MODULE(RCTPushy);
|
||||
NSString *loadVersion = curVersion;
|
||||
BOOL needRollback = (!ignoreRollback && isFirstTime == NO && isFirstLoadOK == NO) || loadVersion.length<=0;
|
||||
if (needRollback) {
|
||||
loadVersion = lastVersion;
|
||||
|
||||
if (lastVersion.length) {
|
||||
// roll back to last version
|
||||
[defaults setObject:@{paramCurrentVersion:lastVersion,
|
||||
paramIsFirstTime:@(NO),
|
||||
paramIsFirstLoadOk:@(YES),
|
||||
paramPackageVersion:curPackageVersion}
|
||||
forKey:keyPushyInfo];
|
||||
}
|
||||
else {
|
||||
// roll back to bundle
|
||||
[defaults setObject:nil forKey:keyPushyInfo];
|
||||
}
|
||||
[defaults setObject:@(YES) forKey:keyRolledBackMarked];
|
||||
[defaults synchronize];
|
||||
// ...need clear files later
|
||||
loadVersion = [self rollback];
|
||||
}
|
||||
else if (isFirstTime && !ignoreRollback){
|
||||
// bundleURL may be called many times, ignore rollbacks before process restarted again.
|
||||
@@ -121,13 +104,15 @@ RCT_EXPORT_MODULE(RCTPushy);
|
||||
[defaults synchronize];
|
||||
}
|
||||
|
||||
if (loadVersion.length) {
|
||||
NSString *downloadDir = [RCTPushy downloadDir];
|
||||
|
||||
NSString *downloadDir = [RCTPushy downloadDir];
|
||||
while (loadVersion.length) {
|
||||
NSString *bundlePath = [[downloadDir stringByAppendingPathComponent:loadVersion] stringByAppendingPathComponent:BUNDLE_FILE_NAME];
|
||||
if ([[NSFileManager defaultManager] fileExistsAtPath:bundlePath isDirectory:NULL]) {
|
||||
NSURL *bundleURL = [NSURL fileURLWithPath:bundlePath];
|
||||
return bundleURL;
|
||||
} else {
|
||||
RCTLogError(@"RCTPushy -- bundle version %@ not found", loadVersion);
|
||||
loadVersion = [self rollback];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -136,6 +121,29 @@ RCT_EXPORT_MODULE(RCTPushy);
|
||||
return [RCTPushy binaryBundleURL];
|
||||
}
|
||||
|
||||
+ (NSString *) rollback {
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
|
||||
NSDictionary *pushyInfo = [defaults dictionaryForKey:keyPushyInfo];
|
||||
NSString *lastVersion = pushyInfo[paramLastVersion];
|
||||
NSString *curPackageVersion = [RCTPushy packageVersion];
|
||||
if (lastVersion.length) {
|
||||
// roll back to last version
|
||||
[defaults setObject:@{paramCurrentVersion:lastVersion,
|
||||
paramIsFirstTime:@(NO),
|
||||
paramIsFirstLoadOk:@(YES),
|
||||
paramPackageVersion:curPackageVersion}
|
||||
forKey:keyPushyInfo];
|
||||
}
|
||||
else {
|
||||
// roll back to bundle
|
||||
[defaults setObject:nil forKey:keyPushyInfo];
|
||||
}
|
||||
[defaults setObject:@(YES) forKey:keyRolledBackMarked];
|
||||
[defaults synchronize];
|
||||
return lastVersion;
|
||||
}
|
||||
|
||||
+ (BOOL)requiresMainQueueSetup {
|
||||
// only set to YES if your module initialization relies on calling UIKit!
|
||||
return NO;
|
||||
@@ -248,6 +256,9 @@ RCT_EXPORT_METHOD(downloadPatchFromPpk:(NSDictionary *)options
|
||||
RCT_EXPORT_METHOD(setNeedUpdate:(NSDictionary *)options)
|
||||
{
|
||||
NSString *hash = options[@"hash"];
|
||||
if (hash.length <= 0) {
|
||||
hash = options[@"hashName"];
|
||||
}
|
||||
if (hash.length) {
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
NSString *lastVersion = nil;
|
||||
@@ -271,6 +282,9 @@ RCT_EXPORT_METHOD(setNeedUpdate:(NSDictionary *)options)
|
||||
RCT_EXPORT_METHOD(reloadUpdate:(NSDictionary *)options)
|
||||
{
|
||||
NSString *hash = options[@"hash"];
|
||||
if (hash.length <= 0) {
|
||||
hash = options[@"hashName"];
|
||||
}
|
||||
if (hash.length) {
|
||||
[self setNeedUpdate:options];
|
||||
|
||||
@@ -327,6 +341,9 @@ RCT_EXPORT_METHOD(markSuccess)
|
||||
{
|
||||
NSString *updateUrl = [RCTConvert NSString:options[@"updateUrl"]];
|
||||
NSString *hash = [RCTConvert NSString:options[@"hash"]];
|
||||
if (hash.length <= 0) {
|
||||
hash = [RCTConvert NSString:options[@"hashName"]];;
|
||||
}
|
||||
if (updateUrl.length <= 0 || hash.length <= 0) {
|
||||
callback([self errorWithMessage:ERROR_OPTIONS]);
|
||||
return;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "react-native-update",
|
||||
"version": "5.9.3",
|
||||
"version": "5.10.1",
|
||||
"description": "react-native hot update",
|
||||
"main": "lib/index.js",
|
||||
"scripts": {
|
||||
|
Reference in New Issue
Block a user