Alex Zhou 6 лет назад
Родитель
Сommit
5e9b31e17f

+ 2 - 0
.gitignore

@@ -19,6 +19,8 @@ DerivedData
 *.hmap
 *.ipa
 
+report.xml
+
 # Bundler
 .bundle
 

+ 6 - 1
MKRRadioManager/Classes/MKRRadioManager/MKRWIFIDeviceManager/MKRWIFIDeviceManager.h

@@ -14,7 +14,12 @@
 
 @protocol MKRWIFIDeviceManagerDelegate <NSObject>
 
-- (void)didSearchNewDevice:(NSArray <NSDictionary *> *)deviceArray;
+@optional
+/** 已经搜索到的设备数组发生改变 */
+- (void)currentDevicesChange:(NSArray <NSDictionary *> *)deviceArray;
+
+/** 搜索到新设备 */
+- (void)didSearchNewDevice:(NSDictionary *)newDecice;
 
 @end
 

+ 21 - 16
MKRRadioManager/Classes/MKRRadioManager/MKRWIFIDeviceManager/MKRWIFIDeviceManager.m

@@ -91,6 +91,7 @@ static inline void wd_main_queue(void (^block)(void)){
     } else {
         [self startUpnp];
     }
+    [self.currentDevices removeAllObjects];
     __block int count = searchTime +1;
     _searchTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0));
     dispatch_source_set_timer(_searchTimer, DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
@@ -190,10 +191,7 @@ static inline void wd_main_queue(void (^block)(void)){
 -(void)CallBackAddZoneMedia:(NSArray *)nStr Size:(NSInteger)size{
     NSLog(@"搜索到设备:%@",nStr);
     NSLog(@"%s",__func__);
-    dispatch_async(dispatch_get_global_queue(0, 0), ^{
-      [self addDevice:nStr];
-    });
-    
+    [self addDevice:nStr];
 }
 
 - (void)updateClockID:(NSString *)clockID clockDic:(NSDictionary *)clockDic clockTime:(NSString *)clockTime operationType:(BOOL)isOn deleteClock:(BOOL)isDelete{
@@ -227,17 +225,14 @@ static inline void wd_main_queue(void (^block)(void)){
 }
 
 - (void)addDevice:(NSArray *)array {
-    
     NSMutableDictionary *deviceDict = [NSMutableDictionary dictionary];
-    
-    [deviceDict setObject:array[0] forKey:@"devName"];
-    [deviceDict setObject:array[1] forKey:@"devUUId"];
-    [deviceDict setObject:array[2] forKey:@"devBaseURL"];
-
-    [deviceDict setObject:array[5] forKey:@"devCMURL"];
-    [deviceDict setObject:array[7] forKey:@"devAVTURL"];
-    [deviceDict setObject:array[9] forKey:@"devRCURL"];
-    [deviceDict setObject:array[11] forKey:@"devGMURL"];
+    [deviceDict setObject:array[0] forKey:@"deviceName"];
+    [deviceDict setObject:array[1] forKey:@"deviceUUID"];
+    [deviceDict setObject:array[2] forKey:@"deviceBaseUrl"];
+    [deviceDict setObject:array[5] forKey:@"connectionManagerUrl"];
+    [deviceDict setObject:array[7] forKey:@"avTransportUrl"];
+    [deviceDict setObject:array[9] forKey:@"renderingControlUrl"];
+    [deviceDict setObject:array[11] forKey:@"groupManagementUrl"];
     NSArray *deviceInfo = [[ASControlTools sharedInstanceUPNP] libupnp_GetDeviceInfo:array[11] ServiceTYPE:array[10]];
     if(deviceInfo == nil || [deviceInfo isEqual:[NSNull null]]){
         return;
@@ -254,7 +249,6 @@ static inline void wd_main_queue(void (^block)(void)){
     NSString *devFlag = [NSString stringWithFormat:@"%@-%@",deviceInfo[9],deviceInfo[10]];
     [deviceDict setObject:devFlag forKey:@"devFlag"];
     [deviceDict setObject:[deviceInfo[18] length] ?deviceInfo[18]:@"MJ_M" forKey:@"devProductModel"];
-    [deviceDict setObject:[deviceInfo[32] length] ?deviceInfo[32]:@"null" forKey:@"devClockStr"];
     [deviceDict setObject:[deviceInfo[39] length] ?deviceInfo[39] :@"0" forKey:@"devOpenLowPowerNotice"];
     [deviceDict setObject:[deviceInfo[19] length] ? deviceInfo[19] : @"1.0.0" forKey:@"devVersion"];
     [deviceDict setObject:[deviceInfo[41] length] ? deviceInfo[41] :@"" forKey:@"devDuerAccessToken"];
@@ -288,13 +282,24 @@ static inline void wd_main_queue(void (^block)(void)){
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"deviceUUID = %@",array[1]];
     BOOL isExist = [self.currentDevices filteredArrayUsingPredicate:predicate].count;
     if (!isExist) {
+        id<MKRWIFIDeviceManagerDelegate> obj;
+        NSEnumerator *enumerator = [self.listeners objectEnumerator];
+        while ((obj = [enumerator nextObject]) != nil) {
+            wd_main_queue(^{
+                if ([obj respondsToSelector:@selector(didSearchNewDevice:)]) {
+                    [obj didSearchNewDevice:deviceDict];
+                }
+            });
+        }
         [self.currentDevices addObject:deviceDict];
     }
     id<MKRWIFIDeviceManagerDelegate> obj;
     NSEnumerator *enumerator = [self.listeners objectEnumerator];
     while ((obj = [enumerator nextObject]) != nil) {
         wd_main_queue(^{
-            [obj didSearchNewDevice:self.currentDevices];
+            if ([obj respondsToSelector:@selector(currentDevicesChange:)]) {
+                [obj currentDevicesChange:self.currentDevices];
+            }
         });
     }
 }