Explorar el Código

集成灰度发布插件

liufl5 %!s(int64=4) %!d(string=hace) años
padre
commit
9f587285bc

+ 5 - 0
IPUMobileFunc/IPUMobileFunc/IPUServiceChangePlugin.h

@ -29,4 +29,9 @@
29 29
30 30
- (void)resetMobileConfigNoRestart:(NSArray *)params;
31 31
32
/*
33
 设置主应用灰度环境
34
 */
35
-(void)updateGrayInfo:(NSArray *)params;
36
32 37
@end

+ 139 - 0
IPUMobileFunc/IPUMobileFunc/IPUServiceChangePlugin.m

@ -181,4 +181,143 @@
181 181
}
182 182
183 183
184
/*
185
 设置主应用灰度环境
186
 a.输入参数:主应用灰度环境参数:g_user_flag,g_request_host,g_request_path,g_res_host
187
 b.如果g_user_flag=1,则根据灰度环境的参数,对主应用进行资源更新,并且保存灰度环境参数,下次启动app之后直接使用灰度环境参数进行,如果更新完成,则静默走success回调
188
 c.资源更新完成后,直接弹窗提示,“灰度环境资源更新完成,请重新进入蜂行动”,点击确定后关闭app
189
 d.如果g_user_flag=0,则直接使用mobile-config的资源路径与主环境资源进行比较,进行资源更新(如果无需更新则不更新),更新完成后提示,“资源更新完成,请重新进入蜂行动”,点击确定后关闭app,下次进入
190
 */
191
-(void)updateGrayInfo:(NSArray *)params{
192
    if (params && params.count>0) {
193
        NSString *isGrayUser = nil;
194
        if (params[0]==[NSNull null]) {
195
            isGrayUser = nil;
196
        }else{
197
            isGrayUser = [NSString stringWithFormat:@"%@",params[0]];
198
        }
199
        
200
        NSString *grayRequestHost = nil;
201
        if (params.count>1) {
202
            if (params[1]==[NSNull null]) {
203
                grayRequestHost = nil;
204
            }else{
205
                grayRequestHost = params[1];
206
            }
207
        }
208
        
209
        NSString *grayRequestPath = nil;
210
        if (params.count>2) {
211
            if (params[2]==[NSNull null]) {
212
                grayRequestPath = nil;
213
            }else{
214
                grayRequestPath = params[2];
215
            }
216
        }
217
        
218
        NSString *grayResourceHost = nil;
219
        if (params.count>3) {
220
            if (params[3]==[NSNull null]) {
221
                grayResourceHost = nil;
222
            }else{
223
                grayResourceHost = params[3];
224
            }
225
        }
226
        
227
        NSString * userFlag = [[NSUserDefaults standardUserDefaults] valueForKey:IS_GRAY_USER];
228
        if (![isGrayUser isEqualToString:userFlag]) {//环境发生变化
229
            UIAlertController* alert = nil;
230
            if ([isGrayUser isEqualToString:@"0"]) {
231
                if ([userFlag isEqualToString:@"1"]){//主应用子应用从灰度切换到生产
232
                    alert = [UIAlertController alertControllerWithTitle:nil
233
                            message:@"发现新版本,选择更新后将关闭应用,请重新打开"  preferredStyle:UIAlertControllerStyleAlert];
234
                    [self addActionWithAlert:alert UserFlag:isGrayUser RequestHost:grayRequestHost RequestPath:grayRequestPath ResourceHost:grayResourceHost IsExit:YES];
235
                }
236
                else if ([userFlag isEqualToString:@"2"]){//子应用从灰度切换到生产(强制)
237
                    [self setGrayIsGrayUser:isGrayUser grayRequestHost:grayRequestHost grayRequestPath:grayRequestPath grayResourceHost:grayResourceHost];
238
                }
239
            }
240
            else if ([isGrayUser isEqualToString:@"1"]){
241
                if ([userFlag isEqualToString:@"0"]) {//主应用子应用从生产切换到灰度
242
                    alert = [UIAlertController alertControllerWithTitle:nil
243
                            message:@"发现新版本,选择更新后将关闭应用,请重新打开"  preferredStyle:UIAlertControllerStyleAlert];
244
                    [self addActionWithAlert:alert UserFlag:isGrayUser RequestHost:grayRequestHost RequestPath:grayRequestPath ResourceHost:grayResourceHost IsExit:YES];
245
                }
246
                else if ([userFlag isEqualToString:@"2"]){//主应用切换到灰度
247
                    alert = [UIAlertController alertControllerWithTitle:nil
248
                            message:@"发现新版本,选择更新后将关闭应用,请重新打开"  preferredStyle:UIAlertControllerStyleAlert];
249
                    [self addActionWithAlert:alert UserFlag:isGrayUser RequestHost:grayRequestHost RequestPath:grayRequestPath ResourceHost:grayResourceHost IsExit:YES];
250
                }
251
            }
252
            else if ([isGrayUser isEqualToString:@"2"]){
253
                if ([userFlag isEqualToString:@"0"]) {//子应用切换到灰度
254
                    alert = [UIAlertController alertControllerWithTitle:nil
255
                            message:@"发现新版本,请选择是否更新"  preferredStyle:UIAlertControllerStyleAlert];
256
                    [self addActionWithAlert:alert UserFlag:isGrayUser RequestHost:grayRequestHost RequestPath:grayRequestPath ResourceHost:grayResourceHost IsExit:NO];
257
                }
258
                if ([userFlag isEqualToString:@"1"]) {//主应用切生产,子应用切灰度
259
                    alert = [UIAlertController alertControllerWithTitle:nil
260
                            message:@"发现新版本,选择更新后将关闭应用,请重新打开"  preferredStyle:UIAlertControllerStyleAlert];
261
                    [self addActionWithAlert:alert UserFlag:isGrayUser RequestHost:grayRequestHost RequestPath:grayRequestPath ResourceHost:grayResourceHost IsExit:YES];
262
                }
263
            }
264
            
265
            if (alert) {
266
                [[self getViewController] presentViewController:alert animated:YES completion:^{
267
                    
268
                }];
269
            }
270
        }else{//环境未发生切换
271
            if ([isGrayUser isEqualToString:@"1"]) {//1切1
272
                NSString * localResourceHost = [[NSUserDefaults standardUserDefaults] valueForKey:GRAY_RESOURCE_HOST];
273
                NSString * localRequestHost = [[NSUserDefaults standardUserDefaults] valueForKey:GRAY_REQUEST_HOST];
274
                NSString * localRequestPath = [[NSUserDefaults standardUserDefaults] valueForKey:GRAY_REQUEST_PATH];
275
                if ((![localRequestHost isEqualToString:grayRequestHost]) || (![localRequestPath isEqualToString:grayRequestPath]) || (![localResourceHost isEqualToString:grayResourceHost])) {
276
                    UIAlertController * alert = [UIAlertController alertControllerWithTitle:nil
277
                            message:@"发现新版本,选择更新后将关闭应用,请重新打开"  preferredStyle:UIAlertControllerStyleAlert];
278
                    [self addActionWithAlert:alert UserFlag:isGrayUser RequestHost:grayRequestHost RequestPath:grayRequestPath ResourceHost:grayResourceHost IsExit:YES];
279
                    [[self getViewController] presentViewController:alert animated:YES completion:^{
280
                        
281
                    }];
282
                }
283
            }
284
        }
285
    }
286
}
287
    
288
-(void)addActionWithAlert:(UIAlertController *)alert UserFlag:(NSString *)userFlag RequestHost:(NSString *)requestHost RequestPath:(NSString *)requestPath ResourceHost:(NSString *)resourceHost IsExit:(BOOL)isExit{
289
        UIAlertAction* confirmAction = [UIAlertAction actionWithTitle:@"立即更新"     style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
290
            [self setGrayIsGrayUser:userFlag grayRequestHost:requestHost grayRequestPath:requestPath grayResourceHost:resourceHost];
291
            if (isExit) {
292
                exit(0);
293
            }
294
        }];
295
        UIAlertAction* cancelAction = [UIAlertAction actionWithTitle:@"下次提醒"     style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) {
296
            
297
        }];
298
        [alert addAction:confirmAction];
299
        [alert addAction:cancelAction];
300
    }
301
    
302
-(void)setGrayIsGrayUser:(NSString *)isGrayUser grayRequestHost:(NSString *)grayRequestHost grayRequestPath:(NSString *)grayRequestPath grayResourceHost:(NSString *)grayResourceHost{
303
    [[NSUserDefaults standardUserDefaults] setValue:isGrayUser forKey:IS_GRAY_USER];
304
    if ([isGrayUser isEqualToString:@"1"]) {//灰度用户
305
        if (![IPUCommonTool isNullWithString:grayRequestHost]) {
306
            [[NSUserDefaults standardUserDefaults] setValue:grayRequestHost forKey:GRAY_REQUEST_HOST];
307
        }
308
        if (![IPUCommonTool isNullWithString:grayRequestPath]) {
309
            [[NSUserDefaults standardUserDefaults] setValue:grayRequestPath forKey:GRAY_REQUEST_PATH];
310
        }
311
        if (![IPUCommonTool isNullWithString:grayResourceHost]) {
312
            [[NSUserDefaults standardUserDefaults] setValue:grayResourceHost forKey:GRAY_RESOURCE_HOST];
313
        }
314
    }else{
315
        [[NSUserDefaults standardUserDefaults] setValue:nil forKey:GRAY_REQUEST_HOST];
316
        [[NSUserDefaults standardUserDefaults] setValue:nil forKey:GRAY_REQUEST_PATH];
317
        [[NSUserDefaults standardUserDefaults] setValue:nil forKey:GRAY_RESOURCE_HOST];
318
    }
319
    [[NSUserDefaults standardUserDefaults] synchronize];
320
}
321
322
184 323
@end