浏览代码

add丢包提示

leon 3 年之前
父节点
当前提交
e3a5f13795

二进制
.DS_Store


+ 3 - 1
DanceGame/Classes/FitfunTool/FitfunSDK_V2.0/KpSupport/SDK/BLE/BTDataProcess.h

@@ -11,7 +11,8 @@
 #import "LEONBLManager.h"
 #import "CBPeripheral+ADName.h"
 
-#define Game_Type @"dance"
+#define Game_Type @"run"
+
 //游戏类型
 typedef NS_ENUM(int, GAME_TYPE){
     GAME_TYPE_DEMO =0, //
@@ -39,6 +40,7 @@ typedef NS_ENUM(NSInteger, BLETOOTH_STUTAS){
 @property(assign,nonatomic)DEVICE_TYPE deviceType;
 //游戏种类 1是跳舞 3是跑酷 2是赛达尔传说 4是demo->dance
 @property(assign,nonatomic)GAME_TYPE game_id;
+@property(assign,nonatomic)int game_type;
 //蓝牙设备数据源回调给popSeaechView
 @property(copy,nonatomic)void (^deviceArrBLock)(NSMutableArray*arr);
 //主设备跳起 下蹲 步数 的总数

+ 63 - 45
DanceGame/Classes/FitfunTool/FitfunSDK_V2.0/KpSupport/SDK/BLE/BTDataProcess.mm

@@ -9,6 +9,7 @@
 #import "BTDataProcess.h"
 #import "IOSPlatformSDK.h"
 #include "Game.h"
+#import <AudioToolbox/AudioToolbox.h>
 
 //#define NSLog(format, ...) printf("TIME:%s FILE:%s(%d行) FUNCTION:%s %s\n",__TIME__, [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, __PRETTY_FUNCTION__, [[NSString stringWithFormat:(format), ##__VA_ARGS__] UTF8String])
 @interface BTDataProcess ()<NSURLSessionDataDelegate>
@@ -21,8 +22,6 @@ Game *viceDeviceGame;
 @property (strong, nonatomic)NSMutableArray  * deviceArray;/**< 蓝牙设备个数 */
 @property (nonatomic,strong)IOSPlatformSDK * sdk;//ios_sdk
 
-//@property (nonatomic,strong)GameObjc * game ;//主设备蓝牙算法sdk
-//@property (nonatomic,strong)GameObjc * viceDeviceGame ;//副设备设备蓝牙算法sdk
 
 @property(nonatomic,weak)NSTimer * timer;//定时器 定时请求主、副设备电量
 @property(nonatomic,assign)BOOL gameModel;//是否开启游戏模式
@@ -38,6 +37,8 @@ Game *viceDeviceGame;
 @property (nonatomic,assign)int  totalPackages;
 @property (nonatomic,strong)NSString * tempStepString;//剑波要的字符串数据 缓存plist
 @property(nonatomic,assign) NSNumber *RSSI;//威严要的测试数据
+@property(nonatomic,assign) int currentTS;//颖嘉要的测试数据
+
 //@property(nonatomic,weak)NSTimer * rssiTimer;//记录每秒的rssi峰值
 //@property(nonatomic,assign) NSNumber * currentPeakRSSI;//龙哥要的测试数据
 
@@ -309,6 +310,8 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
             default:
                 break;
         }
+        //
+        self.game_type = self.game_id;
         
         //
         NSLog(@"BTDataProcess connectPeripheral self.deviceType ==>> %ld  self.game_id ==>> %d   mac ==>>  %@",(long)self.deviceType,self.game_id,self.macAddress);
@@ -317,11 +320,9 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
         if (self.deviceType==DEVICETYPE_MAIN){
             LEManager.peripheral = peripheral;
             game = new Game(self.game_id);
-//            MainShoesAnalysis * instance = [MainShoesAnalysis sharedInstance];
-//            instance->game = new Game(self.game_id);
         }else if (self.deviceType == DEVICETYPE_VICE){
             LEManager.vicePeripheral = peripheral;
-//            viceDeviceGame = [[GameObjc alloc] initWithGametype:self.game_id];
+            viceDeviceGame = new Game(self.game_id);
         }
         
         //根据ios_sdk传入deviceType 链接 主/副 设备
@@ -415,34 +416,36 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
     //蓝牙连接丢失
     LEManager.disConnectBlock = ^(CBPeripheral * _Nonnull peripheral, NSError * _Nonnull error){
         
+
+        if (LEManager.peripheral!=nil&&peripheral == LEManager.peripheral){
+            
+            [self.sdk bridgingDeviceAction:DEVICETYPE_MAIN
+                                        name:LEManager.peripheral.name
+                                     address:LEManager.peripheral.identifier.UUIDString
+                                      status:CONNECT_LOST
+                                 electricity:0];
+            
+        }
+        
+        if (LEManager.vicePeripheral!=nil&&peripheral == LEManager.vicePeripheral){
+            
+            [self.sdk bridgingDeviceAction:DEVICETYPE_VICE
+                                        name:LEManager.vicePeripheral.name
+                                     address:LEManager.vicePeripheral.identifier.UUIDString
+                                      status:CONNECT_LOST
+                                 electricity:0];
+        }
+        
         NSLog(@"蓝牙链接丢失");
         //断线重连
         [self initCBCentralManager];
 
-        if (peripheral == LEManager.peripheral){
-            if (LEManager.peripheral!=nil){
-                
-                [self.sdk bridgingDeviceAction:DEVICETYPE_MAIN
-                                            name:LEManager.peripheral.name
-                                         address:LEManager.peripheral.identifier.UUIDString
-                                          status:CONNECT_LOST
-                                     electricity:0];
-                
-            }
-            
-            if (LEManager.vicePeripheral!=nil){
-                
-                [self.sdk bridgingDeviceAction:DEVICETYPE_VICE
-                                            name:LEManager.vicePeripheral.name
-                                         address:LEManager.vicePeripheral.identifier.UUIDString
-                                          status:CONNECT_LOST
-                                     electricity:0];
-            }
-        }
+        
     };
     
 }
 
+
 #pragma mark ===============================================>> 读取特征后 鞋子打开游戏模式 & 激光开关 &查询鞋子蓝牙状态 & 主设备初始化缓存游戏步数
 -(void)initGameAction:(DEVICE_TYPE)deviceType{
     
@@ -455,7 +458,7 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
     }
 
     //开启游戏模式&查询设备信息 初始化步数数据
-    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(),^{
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(),^{
         [self timingDataTransmission:@"dispatch_after"];
     });
     
@@ -464,7 +467,7 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
         [self.timer invalidate];
         self.timer = nil;
     }
-    self.timer = [NSTimer scheduledTimerWithTimeInterval:15 target:self selector:@selector(timingDataTransmission:) userInfo:nil repeats:YES];
+    self.timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(timingDataTransmission:) userInfo:nil repeats:YES];
     [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode];
 
 }
@@ -485,7 +488,6 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
 }
 
 
-
 #pragma mark ===============================================>> 校验 & 报文数据解析
 -(void)verifyData:(CBCharacteristic*)characteristic deviceType:(DEVICE_TYPE)deviceType{
     
@@ -619,18 +621,18 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
 //                int rightPressure = [AlgorithmTool dataToInt:[characteristic subdataWithRange:NSMakeRange(17, 4)]];
 //                int rightStepCount = [AlgorithmTool dataToInt:[characteristic subdataWithRange:NSMakeRange(21, 4)]];
                 
-                if (deviceType==DEVICETYPE_MAIN){//主设备
+                if (deviceType==DEVICETYPE_MAIN && LEManager.peripheral!=nil){//主设备
                     
-                    NSLog(@"主设备 接收到 鞋子硬件数据 data 26 = %@  电量 %d %d",characteristic,leftElectricity,rightElectricity);
+//                    NSLog(@"主设备 接收到 鞋子硬件数据 data 26 = %@  电量 %d %d %@ %@",characteristic,leftElectricity,rightElectricity,LEManager.peripheral.name,LEManager.peripheral.identifier.UUIDString);
 
                     //主 设备定时器 60秒调一次   /******************ios call unity*****************/
                      [self.sdk bridgingDeviceAction:DEVICETYPE_MAIN
                                                  name:LEManager.peripheral.name
                                               address:LEManager.peripheral.identifier.UUIDString
                                                status:CONNECT_ED
-                                          electricity:leftElectricity<=rightElectricity?leftElectricity:rightElectricity];
-                    
-                }else if (deviceType==DEVICETYPE_VICE){//副设备
+                                          electricity:20];
+             
+                }else if (deviceType==DEVICETYPE_VICE && LEManager.vicePeripheral!=nil){//副设备
                     
                     NSLog(@"副设备 接收到 鞋子硬件数据 26 = %@  电量 %d %d",characteristic,leftElectricity,rightElectricity);
 
@@ -748,7 +750,7 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
         self.allMotionCountBLock(current_jump_count, current_dump_count, leftStepCount + rightStepCount);
     }
     
-    /********************剑波要的图表数据 *****************/
+    /********************剑波 & 威严 要的图表数据 *****************/
     NSString * aString = [NSString stringWithUTF8String:game->getGameDataStr().c_str()];
     if (self.RSSI==nil){
         self.RSSI = 0;
@@ -760,22 +762,40 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
     }
   
     /********************调试窗数据 *****************/
+    NSArray *aArray = [self.tempStepString componentsSeparatedByString:@","];
     dispatch_async(dispatch_get_main_queue(), ^{
-        NSArray *aArray = [self.tempStepString componentsSeparatedByString:@","];
         if (self.testLabel!=nil){
             self.testLabel.text = [NSString stringWithFormat:@"right:[%d,%d,%d] [%d,%d,%d] [%d,%d,%d] \nleft:[%d,%d,%d] [%d,%d,%d] [%d,%d,%d] \nZupt:[%d,%d]  press:[%d,%d] \nj&d[%d %d]  rssi:[%d %@] ts:%d \n脚步: %@ %@\n步频: %d %d ",right_pos[0],right_pos[1],right_pos[2],right_att[0],right_att[1],right_att[2],right_acc[0],right_acc[1],right_acc[2],left_pos[0],left_pos[1],left_pos[2],left_att[0],left_att[1],left_att[2],left_acc[0],left_acc[1],left_acc[2],rightZupt,leftZupt,right_press,left_press,jump,down,rssi,self.RSSI,ts,aArray[aArray.count-2],aArray.lastObject,leftStepFreq,rightStepFreq];
         }
-        
     });
     
+    /********************颖嘉+的ts丢包数据 *****************/
+    NSString * tsString =  aArray[aArray.count-4];
+    int tsInt = [tsString  intValue];
+    int total;
+    //1....255
+    if (tsInt > self.currentTS){
+         total = tsInt - self.currentTS - 1;
+    }
+    //255...1
+    if (tsInt < self.currentTS){
+        if (tsInt ==0) {
+            total = (255-self.currentTS) + tsInt + 1 - 1;
+        }else{
+            total = (255-self.currentTS) + tsInt - 1;
+        }
+    }
+    NSLog(@"tsInt = %d  currentTS = %d total = %d",tsInt,self.currentTS,total);
+    if (total > 20){
+        dispatch_async(dispatch_get_main_queue(), ^{
+            AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
+            [PopupView showCusHUDA:[NSString stringWithFormat:@"丢包数: %d",total]];
+        });
+    }
+    self.currentTS = tsInt;
+    
 }
 
-//
-////读取剑波sdk返回字符串数据
-//-(void)ocGetGameDataStr:(NSData*)characteristic{
-//
-//}
-
 #pragma mark ===============================================>>副设备 报文数据解析后 -- 调用蓝牙鞋子SDK装换数据 -- ios call unity 更新游戏动作
 -(void)viceShoseSDKRight_pos:(int[3])right_pos
                    Right_att:(int[3])right_att
@@ -794,7 +814,7 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
                   left_press:(int)left_press
               characteristic:(NSData*)characteristic{
 
-        /********************初始化 运动轨迹算法 SDK *****************/
+    /********************初始化 运动轨迹算法 SDK *****************/
     //游戏数据
     NSData * validData= [characteristic subdataWithRange:NSMakeRange(4, characteristic.length-4)];
     Byte * buff = (Byte*)[validData bytes];
@@ -804,7 +824,6 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
     int result[length];
     viceDeviceGame->getGameResult(result);
     //   NSLog(@"result == %d %d %d %d \n",result[0],result[1],result[2],result[3]);
-        
 
     /********************蓝牙sdk返回的鞋子 状态 步频 步数*****************/
     int leftStepStatus =  game->getStepStatus(LEFT_FOOT);
@@ -814,7 +833,6 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
     int rightStepFreq =  game->getStepFreq(RIGHT_FOOT);
     int rightStepCount =  game->getStepCount(RIGHT_FOOT);
     
-
     /********************蓝牙sdk返回的鞋子 动作*****************/
     int motionLeft = result[0];//左脚的动作
     int motionRight = result[1];//右脚的动作

+ 4 - 3
DanceGame/Classes/FitfunTool/FitfunSDK_V2.0/KpSupport/SDK/IOSPlatformSDK.mm

@@ -345,10 +345,11 @@ void inviteFriends (CFNotificationCenterRef center, void *observer, CFStringRef
     //
     const char * charName =[name UTF8String];
     const char * charAddress =[address UTF8String];
-    deviceHandler(cusid,charName,charAddress,status,electricity);
+    if (deviceHandler!=nil){
+        deviceHandler(cusid,charName,charAddress,status,electricity);
+    }
 }
 
-
 -(void)bridgingInteraction:(int)cusid
                       code:(int)code{
     //传给unity ---> 旧版游戏未用到
@@ -605,7 +606,7 @@ void InviteFriend(int friendid,char * info){
 void GetInviteInfo(){
     
     NSLog(@"Unity获取好友邀请信息 GetInviteInfo ===>>");
-    
+    return;
     if ([instance existUserInfo]==NO){
         
         return;

+ 11 - 10
DanceGame/Classes/UnityAppController.mm

@@ -246,7 +246,7 @@ extern "C" void UnityRequestQuit()
     NSDictionary* notifData = [NSDictionary dictionaryWithObjects: values forKeys: keys];
     AppController_SendNotificationWithArg(kUnityOnOpenURL, notifData);
     
-    // [FitfunSDKManager application:application openURL:url sourceApplication:sourceApplication annotation:annotation];
+//     [FitfunSDKManager application:application openURL:url sourceApplication:sourceApplication annotation:annotation];
     
     IOSPlatformSDK * sdk = [IOSPlatformSDK sharedInstance];
     sdk.openStyle = @"启动后 通过URL打开的";
@@ -302,8 +302,9 @@ extern "C" void UnityRequestQuit()
     //注册初始化
     [[FitfunSDKManager ff_sharedInstance] ff_registerSDK];
     
-    // [FitfunSDKManager application:application didFinishLaunchingWithOptions:launchOptions];
-    //以下是几种打开App方式
+//     [FitfunSDKManager application:application didFinishLaunchingWithOptions:launchOptions];
+    
+//    以下是几种打开App方式
     if(launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]){
          NSLog(@"打开方式 远程推送打开");
      }else if(launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]){
@@ -311,20 +312,20 @@ extern "C" void UnityRequestQuit()
      }else if(launchOptions[UIApplicationLaunchOptionsUserActivityDictionaryKey]){
          NSLog(@"打开方式 UniversalLinks打开");
      }else if(launchOptions[UIApplicationLaunchOptionsURLKey]){
-     //我们需要在此处处理通过 scheme 打开App并截获参数。
-      NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
-         NSLog(@"打开方式 通过URL打开的  ===== >> %@",url);
+//     我们需要在此处处理通过 scheme 打开App并截获参数。
+//      NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
+//         NSLog(@"打开方式 通过URL打开的  ===== >> %@",url);
 //         IOSPlatformSDK * sdk = [IOSPlatformSDK sharedInstance];
 //         sdk.openStyle = @"启动前 通过URL打开的";
 //         [sdk startWithUrl:url];
      }else if (!launchOptions){
          NSLog(@"打开方式 手动点击打开");
          IOSPlatformSDK * sdk = [IOSPlatformSDK sharedInstance];
-         sdk.openStyle = @"手动点击打开";
+//         sdk.openStyle = @"手动点击打开";
      }
     
-    [Bugly startWithAppId:@"403d275730"];
-    return YES;
+     [Bugly startWithAppId:@"403d275730"];
+     return YES;
     
 }
 
@@ -336,7 +337,7 @@ extern "C" void UnityRequestQuit()
     BTDataProcess * sharedInstance =  [BTDataProcess sharedInstance];
     sharedInstance.isBackGround = YES;
     //开启后台任务保活
-    [self comeToBackgroundMode];
+//    [self comeToBackgroundMode];
     
 }
 

二进制
DanceGame/Unity-iPhone.xcodeproj/project.xcworkspace/xcuserdata/duowan123.xcuserdatad/UserInterfaceState.xcuserstate


二进制
RunGame/Bugly.framework/Bugly


+ 0 - 163
RunGame/Bugly.framework/Headers/Bugly.h

@@ -1,163 +0,0 @@
-//
-//  Bugly.h
-//
-//  Version: 2.5(9)
-//
-//  Copyright (c) 2017年 Tencent. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "BuglyConfig.h"
-#import "BuglyLog.h"
-
-BLY_START_NONNULL
-
-@interface Bugly : NSObject
-
-/**
- *  初始化Bugly,使用默认BuglyConfigs
- *
- *  @param appId 注册Bugly分配的应用唯一标识
- */
-+ (void)startWithAppId:(NSString * BLY_NULLABLE)appId;
-
-/**
- *  使用指定配置初始化Bugly
- *
- *  @param appId 注册Bugly分配的应用唯一标识
- *  @param config 传入配置的 BuglyConfig
- */
-+ (void)startWithAppId:(NSString * BLY_NULLABLE)appId
-                config:(BuglyConfig * BLY_NULLABLE)config;
-
-/**
- *  使用指定配置初始化Bugly
- *
- *  @param appId 注册Bugly分配的应用唯一标识
- *  @param development 是否开发设备
- *  @param config 传入配置的 BuglyConfig
- */
-+ (void)startWithAppId:(NSString * BLY_NULLABLE)appId
-     developmentDevice:(BOOL)development
-                config:(BuglyConfig * BLY_NULLABLE)config;
-
-/**
- *  设置用户标识
- *
- *  @param userId 用户标识
- */
-+ (void)setUserIdentifier:(NSString *)userId;
-
-/**
- *  更新版本信息
- *
- *  @param version 应用版本信息
- */
-+ (void)updateAppVersion:(NSString *)version;
-
-/**
- *  设置关键数据,随崩溃信息上报
- *
- *  @param value KEY
- *  @param key VALUE
- */
-+ (void)setUserValue:(NSString *)value
-              forKey:(NSString *)key;
-
-/**
- *  获取USER ID
- *
- *  @return USER ID
- */
-+ (NSString *)buglyUserIdentifier;
-
-/**
- *  获取关键数据
- *
- *  @return 关键数据
- */
-+ (NSDictionary * BLY_NULLABLE)allUserValues;
-
-/**
- *  设置标签
- *
- *  @param tag 标签ID,可在网站生成
- */
-+ (void)setTag:(NSUInteger)tag;
-
-/**
- *  获取当前设置标签
- *
- *  @return 当前标签ID
- */
-+ (NSUInteger)currentTag;
-
-/**
- *  获取设备ID
- *
- *  @return 设备ID
- */
-+ (NSString *)buglyDeviceId;
-
-/**
- *  上报自定义Objective-C异常
- *
- *  @param exception 异常信息
- */
-+ (void)reportException:(NSException *)exception;
-
-/**
- *  上报错误
- *
- *  @param error 错误信息
- */
-+ (void)reportError:(NSError *)error;
-
-/**
- *    @brief 上报自定义错误
- *
- *    @param category    类型(Cocoa=3,CSharp=4,JS=5,Lua=6)
- *    @param aName       名称
- *    @param aReason     错误原因
- *    @param aStackArray 堆栈
- *    @param info        附加数据
- *    @param terminate   上报后是否退出应用进程
- */
-+ (void)reportExceptionWithCategory:(NSUInteger)category
-                               name:(NSString *)aName
-                             reason:(NSString *)aReason
-                          callStack:(NSArray *)aStackArray
-                          extraInfo:(NSDictionary *)info
-                       terminateApp:(BOOL)terminate;
-
-/**
- *  SDK 版本信息
- *
- *  @return SDK版本号
- */
-+ (NSString *)sdkVersion;
-
-/**
- *  APP 版本信息
- *
- *  @return SDK版本号
- */
-+ (NSString *)appVersion;
-
-/**
- *  App 是否发生了连续闪退
- *  如果 启动SDK 且 5秒内 闪退,且次数达到 3次 则判定为连续闪退
- *
- *  @return 是否连续闪退
- */
-+ (BOOL)isAppCrashedOnStartUpExceedTheLimit;
-
-/**
- *  关闭bugly监控
- */
-+ (void)closeCrashReport;
-
-BLY_END_NONNULL
-
-@end

+ 0 - 141
RunGame/Bugly.framework/Headers/BuglyConfig.h

@@ -1,141 +0,0 @@
-//
-//  BuglyConfig.h
-//  Bugly
-//
-//  Copyright (c) 2016年 Tencent. All rights reserved.
-//
-
-#pragma once
-
-#define BLY_UNAVAILABLE(x) __attribute__((unavailable(x)))
-
-#if __has_feature(nullability)
-#define BLY_NONNULL __nonnull
-#define BLY_NULLABLE __nullable
-#define BLY_START_NONNULL _Pragma("clang assume_nonnull begin")
-#define BLY_END_NONNULL _Pragma("clang assume_nonnull end")
-#else
-#define BLY_NONNULL
-#define BLY_NULLABLE
-#define BLY_START_NONNULL
-#define BLY_END_NONNULL
-#endif
-
-#import <Foundation/Foundation.h>
-
-#import "BuglyLog.h"
-
-BLY_START_NONNULL
-
-@protocol BuglyDelegate <NSObject>
-
-@optional
-/**
- *  发生异常时回调
- *
- *  @param exception 异常信息
- *
- *  @return 返回需上报记录,随异常上报一起上报
- */
-- (NSString * BLY_NULLABLE)attachmentForException:(NSException * BLY_NULLABLE)exception;
-
-
-/**
- *  策略激活时回调
- *
- *  @param tacticInfo
- *
- *  @return app是否弹框展示
- */
-- (BOOL) h5AlertForTactic:(NSDictionary *)tacticInfo;
-
-@end
-
-@interface BuglyConfig : NSObject
-
-/**
- *  SDK Debug信息开关, 默认关闭
- */
-@property (nonatomic, assign) BOOL debugMode;
-
-/**
- *  设置自定义渠道标识
- */
-@property (nonatomic, copy) NSString *channel;
-
-/**
- *  设置自定义版本号
- */
-@property (nonatomic, copy) NSString *version;
-
-/**
- *  设置自定义设备唯一标识
- */
-@property (nonatomic, copy) NSString *deviceIdentifier;
-
-/**
- *  卡顿监控开关,默认关闭
- */
-@property (nonatomic) BOOL blockMonitorEnable;
-
-/**
- *  卡顿监控判断间隔,单位为秒
- */
-@property (nonatomic) NSTimeInterval blockMonitorTimeout;
-
-/**
- *  设置 App Groups Id (如有使用 Bugly iOS Extension SDK,请设置该值)
- */
-@property (nonatomic, copy) NSString *applicationGroupIdentifier;
-
-/**
- *  进程内还原开关,默认开启
- */
-@property (nonatomic) BOOL symbolicateInProcessEnable;
-
-/**
- *  非正常退出事件记录开关,默认关闭
- */
-@property (nonatomic) BOOL unexpectedTerminatingDetectionEnable;
-
-/**
- *  页面信息记录开关,默认开启
- */
-@property (nonatomic) BOOL viewControllerTrackingEnable;
-
-/**
- *  Bugly Delegate
- */
-@property (nonatomic, assign) id<BuglyDelegate> delegate;
-
-/**
- * 控制自定义日志上报,默认值为BuglyLogLevelSilent,即关闭日志记录功能。
- * 如果设置为BuglyLogLevelWarn,则在崩溃时会上报Warn、Error接口打印的日志
- */
-@property (nonatomic, assign) BuglyLogLevel reportLogLevel;
-
-/**
- *  崩溃数据过滤器,如果崩溃堆栈的模块名包含过滤器中设置的关键字,则崩溃数据不会进行上报
- *  例如,过滤崩溃堆栈中包含搜狗输入法的数据,可以添加过滤器关键字SogouInputIPhone.dylib等
- */
-@property (nonatomic, copy) NSArray *excludeModuleFilter;
-
-/**
- * 控制台日志上报开关,默认开启
- */
-@property (nonatomic, assign) BOOL consolelogEnable;
-
-/**
- * 崩溃退出超时,如果监听到崩溃后,App一直没有退出,则到达超时时间后会自动abort进程退出
- * 默认值 5s, 单位 秒
- * 当赋值为0时,则不会自动abort进程退出
- */
-@property (nonatomic, assign) NSUInteger crashAbortTimeout;
-
-/**
- *  设置自定义联网、crash上报域名
- */
-@property (nonatomic, copy) NSString *crashServerUrl;
-
-@end
-BLY_END_NONNULL

+ 0 - 78
RunGame/Bugly.framework/Headers/BuglyLog.h

@@ -1,78 +0,0 @@
-//
-//  BuglyLog.h
-//  Bugly
-//
-//  Copyright (c) 2017年 Tencent. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-// Log level for Bugly Log
-typedef NS_ENUM(NSUInteger, BuglyLogLevel) {
-    BuglyLogLevelSilent  = 0,
-    BuglyLogLevelError   = 1,
-    BuglyLogLevelWarn    = 2,
-    BuglyLogLevelInfo    = 3,
-    BuglyLogLevelDebug   = 4,
-    BuglyLogLevelVerbose = 5,
-};
-#pragma mark -
-
-OBJC_EXTERN void BLYLog(BuglyLogLevel level, NSString *format, ...) NS_FORMAT_FUNCTION(2, 3);
-
-OBJC_EXTERN void BLYLogv(BuglyLogLevel level, NSString *format, va_list args) NS_FORMAT_FUNCTION(2, 0);
-
-#pragma mark -
-#define BUGLY_LOG_MACRO(_level, fmt, ...) [BuglyLog level:_level tag:nil log:fmt, ##__VA_ARGS__]
-
-#define BLYLogError(fmt, ...)   BUGLY_LOG_MACRO(BuglyLogLevelError, fmt, ##__VA_ARGS__)
-#define BLYLogWarn(fmt, ...)    BUGLY_LOG_MACRO(BuglyLogLevelWarn,  fmt, ##__VA_ARGS__)
-#define BLYLogInfo(fmt, ...)    BUGLY_LOG_MACRO(BuglyLogLevelInfo, fmt, ##__VA_ARGS__)
-#define BLYLogDebug(fmt, ...)   BUGLY_LOG_MACRO(BuglyLogLevelDebug, fmt, ##__VA_ARGS__)
-#define BLYLogVerbose(fmt, ...) BUGLY_LOG_MACRO(BuglyLogLevelVerbose, fmt, ##__VA_ARGS__)
-
-#pragma mark - Interface
-@interface BuglyLog : NSObject
-
-/**
- *    @brief  初始化日志模块
- *
- *    @param level 设置默认日志级别,默认BLYLogLevelSilent
- *
- *    @param printConsole 是否打印到控制台,默认NO
- */
-+ (void)initLogger:(BuglyLogLevel) level consolePrint:(BOOL)printConsole;
-
-/**
- *    @brief 打印BLYLogLevelInfo日志
- *
- *    @param format   日志内容 总日志大小限制为:字符串长度30k,条数200
- */
-+ (void)log:(NSString *)format, ... NS_FORMAT_FUNCTION(1, 2);
-
-/**
- *    @brief  打印日志
- *
- *    @param level 日志级别
- *    @param message   日志内容 总日志大小限制为:字符串长度30k,条数200
- */
-+ (void)level:(BuglyLogLevel) level logs:(NSString *)message;
-
-/**
- *    @brief  打印日志
- *
- *    @param level 日志级别
- *    @param format   日志内容 总日志大小限制为:字符串长度30k,条数200
- */
-+ (void)level:(BuglyLogLevel) level log:(NSString *)format, ... NS_FORMAT_FUNCTION(2, 3);
-
-/**
- *    @brief  打印日志
- *
- *    @param level  日志级别
- *    @param tag    日志模块分类
- *    @param format   日志内容 总日志大小限制为:字符串长度30k,条数200
- */
-+ (void)level:(BuglyLogLevel) level tag:(NSString *) tag log:(NSString *)format, ... NS_FORMAT_FUNCTION(3, 4);
-
-@end

+ 0 - 12
RunGame/Bugly.framework/Modules/module.modulemap

@@ -1,12 +0,0 @@
-framework module Bugly {
-	umbrella header "Bugly.h"
-	
-	export *
-	module * { export * }
-	
-	link framework "Foundation"
-	link framework "Security"
-	link framework "SystemConfiguration"
-	link "c++"
-	link "z"
-}

+ 1 - 1
RunGame/Classes/UnityAppController.h

@@ -61,7 +61,7 @@ __attribute__ ((visibility("default")))
 @property (readonly, copy, nonatomic) UIViewController*     rootViewController;
 @property (readonly, copy, nonatomic) DisplayConnection*    mainDisplay;
 //leon add保活
-@property (nonatomic,assign) UIBackgroundTaskIdentifier bgTask;
+//@property (nonatomic,assign) UIBackgroundTaskIdentifier bgTask;
 #if UNITY_SUPPORT_ROTATION
 @property (readonly, nonatomic) UIInterfaceOrientation      interfaceOrientation;
 #endif

+ 23 - 25
RunGame/Classes/UnityAppController.mm

@@ -41,7 +41,6 @@
 #include <sys/sysctl.h>
 
 #import "IOSPlatformSDK.h"
-#import <Bugly/Bugly.h>
 
 // we assume that app delegate is never changed and we can cache it, instead of re-query UIApplication every time
 UnityAppController* _UnityAppController = nil;
@@ -347,7 +346,6 @@ extern "C" void UnityCleanupTrampoline()
          [IOSPlatformSDK sharedInstance];
      }
     //36a0c05291
-    [Bugly startWithAppId:@"36a0c05291"];
 
     return YES;
     
@@ -372,29 +370,29 @@ extern "C" void UnityCleanupTrampoline()
     
 }
 
-#pragma mark -- leon add
--(void)comeToBackgroundMode{
-    //初始化一个后台任务BackgroundTask,这个后台任务的作用就是告诉系统当前app在后台有任务处理,需要时间
-    UIApplication*  app = [UIApplication sharedApplication];
-    self.bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
-        [app endBackgroundTask:self.bgTask];
-        self.bgTask = UIBackgroundTaskInvalid;
-    }];
-    //开启定时器 不断向系统请求后台任务执行的时间
-    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:30.0 target:self selector:@selector(applyForMoreTime) userInfo:nil repeats:YES];
-    [timer fire];
-}
-
--(void)applyForMoreTime{
-    //如果系统给的剩余时间小于60秒 就终止当前的后台任务,再重新初始化一个后台任务,重新让系统分配时间,这样一直循环下去,保持APP在后台一直处于active状态。
-    if ([UIApplication sharedApplication].backgroundTimeRemaining < 60){
-        [[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
-        self.bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
-            [[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
-            self.bgTask = UIBackgroundTaskInvalid;
-        }];
-    }
-}
+//#pragma mark -- leon add
+//-(void)comeToBackgroundMode{
+//    //初始化一个后台任务BackgroundTask,这个后台任务的作用就是告诉系统当前app在后台有任务处理,需要时间
+//    UIApplication*  app = [UIApplication sharedApplication];
+//    self.bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
+//        [app endBackgroundTask:self.bgTask];
+//        self.bgTask = UIBackgroundTaskInvalid;
+//    }];
+//    //开启定时器 不断向系统请求后台任务执行的时间
+//    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:30.0 target:self selector:@selector(applyForMoreTime) userInfo:nil repeats:YES];
+//    [timer fire];
+//}
+//
+//-(void)applyForMoreTime{
+//    //如果系统给的剩余时间小于60秒 就终止当前的后台任务,再重新初始化一个后台任务,重新让系统分配时间,这样一直循环下去,保持APP在后台一直处于active状态。
+//    if ([UIApplication sharedApplication].backgroundTimeRemaining < 60){
+//        [[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
+//        self.bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
+//            [[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
+//            self.bgTask = UIBackgroundTaskInvalid;
+//        }];
+//    }
+//}
 
 - (void)applicationWillEnterForeground:(UIApplication*)application
 {

+ 1 - 0
RunGame/SDK/BLE/BTDataProcess.h

@@ -40,6 +40,7 @@ typedef NS_ENUM(NSInteger, BLETOOTH_STUTAS){
 @property(assign,nonatomic)DEVICE_TYPE deviceType;
 //游戏种类 1是跳舞 3是跑酷 2是赛达尔传说 4是demo->dance
 @property(assign,nonatomic)GAME_TYPE game_id;
+@property(assign,nonatomic)int game_type;
 //蓝牙设备数据源回调给popSeaechView
 @property(copy,nonatomic)void (^deviceArrBLock)(NSMutableArray*arr);
 //主设备跳起 下蹲 步数 的总数

+ 62 - 41
RunGame/SDK/BLE/BTDataProcess.mm

@@ -9,6 +9,7 @@
 #import "BTDataProcess.h"
 #import "IOSPlatformSDK.h"
 #include "Game.h"
+#import <AudioToolbox/AudioToolbox.h>
 
 //#define NSLog(format, ...) printf("TIME:%s FILE:%s(%d行) FUNCTION:%s %s\n",__TIME__, [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, __PRETTY_FUNCTION__, [[NSString stringWithFormat:(format), ##__VA_ARGS__] UTF8String])
 @interface BTDataProcess ()<NSURLSessionDataDelegate>
@@ -21,8 +22,6 @@ Game *viceDeviceGame;
 @property (strong, nonatomic)NSMutableArray  * deviceArray;/**< 蓝牙设备个数 */
 @property (nonatomic,strong)IOSPlatformSDK * sdk;//ios_sdk
 
-//@property (nonatomic,strong)GameObjc * game ;//主设备蓝牙算法sdk
-//@property (nonatomic,strong)GameObjc * viceDeviceGame ;//副设备设备蓝牙算法sdk
 
 @property(nonatomic,weak)NSTimer * timer;//定时器 定时请求主、副设备电量
 @property(nonatomic,assign)BOOL gameModel;//是否开启游戏模式
@@ -38,6 +37,8 @@ Game *viceDeviceGame;
 @property (nonatomic,assign)int  totalPackages;
 @property (nonatomic,strong)NSString * tempStepString;//剑波要的字符串数据 缓存plist
 @property(nonatomic,assign) NSNumber *RSSI;//威严要的测试数据
+@property(nonatomic,assign) int currentTS;//颖嘉要的测试数据
+
 //@property(nonatomic,weak)NSTimer * rssiTimer;//记录每秒的rssi峰值
 //@property(nonatomic,assign) NSNumber * currentPeakRSSI;//龙哥要的测试数据
 
@@ -309,6 +310,8 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
             default:
                 break;
         }
+        //
+        self.game_type = self.game_id;
         
         //
         NSLog(@"BTDataProcess connectPeripheral self.deviceType ==>> %ld  self.game_id ==>> %d   mac ==>>  %@",(long)self.deviceType,self.game_id,self.macAddress);
@@ -317,11 +320,9 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
         if (self.deviceType==DEVICETYPE_MAIN){
             LEManager.peripheral = peripheral;
             game = new Game(self.game_id);
-//            MainShoesAnalysis * instance = [MainShoesAnalysis sharedInstance];
-//            instance->game = new Game(self.game_id);
         }else if (self.deviceType == DEVICETYPE_VICE){
             LEManager.vicePeripheral = peripheral;
-//            viceDeviceGame = [[GameObjc alloc] initWithGametype:self.game_id];
+            viceDeviceGame = new Game(self.game_id);
         }
         
         //根据ios_sdk传入deviceType 链接 主/副 设备
@@ -415,34 +416,36 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
     //蓝牙连接丢失
     LEManager.disConnectBlock = ^(CBPeripheral * _Nonnull peripheral, NSError * _Nonnull error){
         
+
+        if (LEManager.peripheral!=nil&&peripheral == LEManager.peripheral){
+            
+            [self.sdk bridgingDeviceAction:DEVICETYPE_MAIN
+                                        name:LEManager.peripheral.name
+                                     address:LEManager.peripheral.identifier.UUIDString
+                                      status:CONNECT_LOST
+                                 electricity:0];
+            
+        }
+        
+        if (LEManager.vicePeripheral!=nil&&peripheral == LEManager.vicePeripheral){
+            
+            [self.sdk bridgingDeviceAction:DEVICETYPE_VICE
+                                        name:LEManager.vicePeripheral.name
+                                     address:LEManager.vicePeripheral.identifier.UUIDString
+                                      status:CONNECT_LOST
+                                 electricity:0];
+        }
+        
         NSLog(@"蓝牙链接丢失");
         //断线重连
         [self initCBCentralManager];
 
-        if (peripheral == LEManager.peripheral){
-            if (LEManager.peripheral!=nil){
-                
-                [self.sdk bridgingDeviceAction:DEVICETYPE_MAIN
-                                            name:LEManager.peripheral.name
-                                         address:LEManager.peripheral.identifier.UUIDString
-                                          status:CONNECT_LOST
-                                     electricity:0];
-                
-            }
-            
-            if (LEManager.vicePeripheral!=nil){
-                
-                [self.sdk bridgingDeviceAction:DEVICETYPE_VICE
-                                            name:LEManager.vicePeripheral.name
-                                         address:LEManager.vicePeripheral.identifier.UUIDString
-                                          status:CONNECT_LOST
-                                     electricity:0];
-            }
-        }
+        
     };
     
 }
 
+
 #pragma mark ===============================================>> 读取特征后 鞋子打开游戏模式 & 激光开关 &查询鞋子蓝牙状态 & 主设备初始化缓存游戏步数
 -(void)initGameAction:(DEVICE_TYPE)deviceType{
     
@@ -455,7 +458,7 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
     }
 
     //开启游戏模式&查询设备信息 初始化步数数据
-    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(),^{
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(),^{
         [self timingDataTransmission:@"dispatch_after"];
     });
     
@@ -464,7 +467,7 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
         [self.timer invalidate];
         self.timer = nil;
     }
-    self.timer = [NSTimer scheduledTimerWithTimeInterval:15 target:self selector:@selector(timingDataTransmission:) userInfo:nil repeats:YES];
+    self.timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(timingDataTransmission:) userInfo:nil repeats:YES];
     [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode];
 
 }
@@ -485,7 +488,6 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
 }
 
 
-
 #pragma mark ===============================================>> 校验 & 报文数据解析
 -(void)verifyData:(CBCharacteristic*)characteristic deviceType:(DEVICE_TYPE)deviceType{
     
@@ -619,18 +621,18 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
 //                int rightPressure = [AlgorithmTool dataToInt:[characteristic subdataWithRange:NSMakeRange(17, 4)]];
 //                int rightStepCount = [AlgorithmTool dataToInt:[characteristic subdataWithRange:NSMakeRange(21, 4)]];
                 
-                if (deviceType==DEVICETYPE_MAIN){//主设备
+                if (deviceType==DEVICETYPE_MAIN && LEManager.peripheral!=nil){//主设备
                     
-                    NSLog(@"主设备 接收到 鞋子硬件数据 data 26 = %@  电量 %d %d",characteristic,leftElectricity,rightElectricity);
+//                    NSLog(@"主设备 接收到 鞋子硬件数据 data 26 = %@  电量 %d %d %@ %@",characteristic,leftElectricity,rightElectricity,LEManager.peripheral.name,LEManager.peripheral.identifier.UUIDString);
 
                     //主 设备定时器 60秒调一次   /******************ios call unity*****************/
                      [self.sdk bridgingDeviceAction:DEVICETYPE_MAIN
                                                  name:LEManager.peripheral.name
                                               address:LEManager.peripheral.identifier.UUIDString
                                                status:CONNECT_ED
-                                          electricity:leftElectricity<=rightElectricity?leftElectricity:rightElectricity];
-                    
-                }else if (deviceType==DEVICETYPE_VICE){//副设备
+                                          electricity:20];
+             
+                }else if (deviceType==DEVICETYPE_VICE && LEManager.vicePeripheral!=nil){//副设备
                     
                     NSLog(@"副设备 接收到 鞋子硬件数据 26 = %@  电量 %d %d",characteristic,leftElectricity,rightElectricity);
 
@@ -748,7 +750,7 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
         self.allMotionCountBLock(current_jump_count, current_dump_count, leftStepCount + rightStepCount);
     }
     
-    /********************剑波要的图表数据 *****************/
+    /********************剑波 & 威严 要的图表数据 *****************/
     NSString * aString = [NSString stringWithUTF8String:game->getGameDataStr().c_str()];
     if (self.RSSI==nil){
         self.RSSI = 0;
@@ -760,22 +762,41 @@ void disConnectBle (CFNotificationCenterRef center, void *observer, CFStringRef
     }
   
     /********************调试窗数据 *****************/
+    NSArray *aArray = [self.tempStepString componentsSeparatedByString:@","];
     dispatch_async(dispatch_get_main_queue(), ^{
-        NSArray *aArray = [self.tempStepString componentsSeparatedByString:@","];
         if (self.testLabel!=nil){
             self.testLabel.text = [NSString stringWithFormat:@"right:[%d,%d,%d] [%d,%d,%d] [%d,%d,%d] \nleft:[%d,%d,%d] [%d,%d,%d] [%d,%d,%d] \nZupt:[%d,%d]  press:[%d,%d] \nj&d[%d %d]  rssi:[%d %@] ts:%d \n脚步: %@ %@\n步频: %d %d ",right_pos[0],right_pos[1],right_pos[2],right_att[0],right_att[1],right_att[2],right_acc[0],right_acc[1],right_acc[2],left_pos[0],left_pos[1],left_pos[2],left_att[0],left_att[1],left_att[2],left_acc[0],left_acc[1],left_acc[2],rightZupt,leftZupt,right_press,left_press,jump,down,rssi,self.RSSI,ts,aArray[aArray.count-2],aArray.lastObject,leftStepFreq,rightStepFreq];
         }
         
     });
     
+    /********************颖嘉要的ts丢包数据 *****************/
+    NSString * tsString =  aArray[aArray.count-4];
+    int tsInt = [tsString  intValue];
+    int total;
+    //1....255
+    if (tsInt > self.currentTS){
+         total = tsInt - self.currentTS - 1;
+    }
+    //255...1
+    if (tsInt < self.currentTS){
+        if (tsInt ==0) {
+            total = (255-self.currentTS) + tsInt + 1 - 1;
+        }else{
+            total = (255-self.currentTS) + tsInt - 1;
+        }
+    }
+    NSLog(@"tsInt = %d  currentTS = %d total = %d",tsInt,self.currentTS,total);
+    if (total > 20){
+        dispatch_async(dispatch_get_main_queue(), ^{
+            AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
+            [PopupView showCusHUDA:[NSString stringWithFormat:@"丢包数: %d",total]];
+        });
+    }
+    self.currentTS = tsInt;
+    
 }
 
-//
-////读取剑波sdk返回字符串数据
-//-(void)ocGetGameDataStr:(NSData*)characteristic{
-//
-//}
-
 #pragma mark ===============================================>>副设备 报文数据解析后 -- 调用蓝牙鞋子SDK装换数据 -- ios call unity 更新游戏动作
 -(void)viceShoseSDKRight_pos:(int[3])right_pos
                    Right_att:(int[3])right_att

+ 6 - 4
RunGame/SDK/IOSPlatformSDK.mm

@@ -345,10 +345,12 @@ void inviteFriends (CFNotificationCenterRef center, void *observer, CFStringRef
     //
     const char * charName =[name UTF8String];
     const char * charAddress =[address UTF8String];
-    deviceHandler(cusid,charName,charAddress,status,electricity);
+    if (deviceHandler != nil) {
+        deviceHandler(cusid,charName,charAddress,status,electricity);
+    }
+    
 }
 
-
 -(void)bridgingInteraction:(int)cusid
                       code:(int)code{
     //传给unity ---> 旧版游戏未用到
@@ -357,7 +359,6 @@ void inviteFriends (CFNotificationCenterRef center, void *observer, CFStringRef
 
 @end
 
-
 #pragma mark ============================>> unity call ios
 /**
  * c语言字符串指针malloc
@@ -563,6 +564,7 @@ void GetUserFriends(){
          }else{
              return MakeStringCopy("");
          }
+         
      }
      
 }
@@ -605,7 +607,7 @@ void InviteFriend(int friendid,char * info){
 void GetInviteInfo(){
     
     NSLog(@"Unity获取好友邀请信息 GetInviteInfo ===>>");
-    
+    return;
     if ([instance existUserInfo]==NO){
         
         return;

+ 6 - 18
RunGame/Unity-iPhone.xcodeproj/project.pbxproj

@@ -146,13 +146,9 @@
 		936820C9276201B2007B4D6B /* BigFoot.h in Headers */ = {isa = PBXBuildFile; fileRef = 936820C7276201B2007B4D6B /* BigFoot.h */; };
 		936820CA276201B2007B4D6B /* BigFoot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 936820C8276201B2007B4D6B /* BigFoot.cpp */; };
 		936820CB276201B2007B4D6B /* BigFoot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 936820C8276201B2007B4D6B /* BigFoot.cpp */; };
-		936820D92763399D007B4D6B /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 936820D82763399D007B4D6B /* libz.tbd */; };
-		936820DB276339A6007B4D6B /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 936820DA276339A5007B4D6B /* libc++.tbd */; };
 		93BF4D8886264CB7CCCB31FC /* QFramework.RefCounter_CodeGen.c in Sources */ = {isa = PBXBuildFile; fileRef = 0BBF475A88C75316BEDFEF01 /* QFramework.RefCounter_CodeGen.c */; };
-		93E55CFD27688C2600D8F97E /* Bugly.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93E55CFC27688C2600D8F97E /* Bugly.framework */; };
-		93E55CFE27688C2600D8F97E /* Bugly.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93E55CFC27688C2600D8F97E /* Bugly.framework */; };
-		93E55D0027688E5400D8F97E /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 93E55CFF27688E5400D8F97E /* libz.tbd */; };
-		93E55D0227688E5D00D8F97E /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 93E55D0127688E5D00D8F97E /* libc++.tbd */; };
+		93E62C97276ADD04006975D1 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8358D1B70ED1CC3700E3A684 /* AudioToolbox.framework */; };
+		93E62C99276ADD0B006975D1 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93E62C98276ADD0B006975D1 /* AudioToolbox.framework */; };
 		93FA55822750E1EE00AEAD33 /* TXCarouselCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 93FA54ED2750E1EE00AEAD33 /* TXCarouselCollectionViewCell.xib */; };
 		93FA55832750E1EE00AEAD33 /* TXCarouselCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 93FA54ED2750E1EE00AEAD33 /* TXCarouselCollectionViewCell.xib */; };
 		93FA55842750E1EE00AEAD33 /* TXCarouselViewLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 93FA54EE2750E1EE00AEAD33 /* TXCarouselViewLayout.h */; };
@@ -821,9 +817,7 @@
 		936820C8276201B2007B4D6B /* BigFoot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BigFoot.cpp; path = ../../../../shoe_sdk_c/BigFoot.cpp; sourceTree = "<group>"; };
 		936820D82763399D007B4D6B /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
 		936820DA276339A5007B4D6B /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
-		93E55CFC27688C2600D8F97E /* Bugly.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Bugly.framework; sourceTree = "<group>"; };
-		93E55CFF27688E5400D8F97E /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; };
-		93E55D0127688E5D00D8F97E /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/lib/libc++.tbd"; sourceTree = DEVELOPER_DIR; };
+		93E62C98276ADD0B006975D1 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; };
 		93FA54ED2750E1EE00AEAD33 /* TXCarouselCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TXCarouselCollectionViewCell.xib; sourceTree = "<group>"; };
 		93FA54EE2750E1EE00AEAD33 /* TXCarouselViewLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TXCarouselViewLayout.h; sourceTree = "<group>"; };
 		93FA54EF2750E1EE00AEAD33 /* ShoesCarouselView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShoesCarouselView.h; sourceTree = "<group>"; };
@@ -1091,12 +1085,10 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				936820DB276339A6007B4D6B /* libc++.tbd in Frameworks */,
-				936820D92763399D007B4D6B /* libz.tbd in Frameworks */,
+				93E62C97276ADD04006975D1 /* AudioToolbox.framework in Frameworks */,
 				93FA566F2750E40600AEAD33 /* CFNetwork.framework in Frameworks */,
 				93FA566E2750E40300AEAD33 /* Security.framework in Frameworks */,
 				93FA566D2750E3FF00AEAD33 /* SystemConfiguration.framework in Frameworks */,
-				93E55CFD27688C2600D8F97E /* Bugly.framework in Frameworks */,
 				93FA566C2750E3FB00AEAD33 /* MobileCoreServices.framework in Frameworks */,
 				93FA566A2750E3F400AEAD33 /* CoreBluetooth.framework in Frameworks */,
 				93FA56682750E3ED00AEAD33 /* QuartzCore.framework in Frameworks */,
@@ -1118,15 +1110,13 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				93E55D0227688E5D00D8F97E /* libc++.tbd in Frameworks */,
-				93E55D0027688E5400D8F97E /* libz.tbd in Frameworks */,
+				93E62C99276ADD0B006975D1 /* AudioToolbox.framework in Frameworks */,
 				93FA56732750E41100AEAD33 /* CoreBluetooth.framework in Frameworks */,
 				93FA56712750E40C00AEAD33 /* MobileCoreServices.framework in Frameworks */,
 				00000000008063A1000160D3 /* libiPhone-lib.a in Frameworks */,
 				9D690CCF21BFD341005026B1 /* Security.framework in Frameworks */,
 				9D690CD021BFD349005026B1 /* MediaToolbox.framework in Frameworks */,
 				9D690CD221BFD36C005026B1 /* CoreText.framework in Frameworks */,
-				93E55CFE27688C2600D8F97E /* Bugly.framework in Frameworks */,
 				9D690CD321BFD376005026B1 /* AudioToolbox.framework in Frameworks */,
 				9D690CD421BFD37E005026B1 /* AVFoundation.framework in Frameworks */,
 				8A20382D213D4B3C005E6C56 /* AVKit.framework in Frameworks */,
@@ -1181,9 +1171,7 @@
 		29B97323FDCFA39411CA2CEA /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
-				93E55D0127688E5D00D8F97E /* libc++.tbd */,
-				93E55CFF27688E5400D8F97E /* libz.tbd */,
-				93E55CFC27688C2600D8F97E /* Bugly.framework */,
+				93E62C98276ADD0B006975D1 /* AudioToolbox.framework */,
 				936820DA276339A5007B4D6B /* libc++.tbd */,
 				936820D82763399D007B4D6B /* libz.tbd */,
 				93FA56722750E41100AEAD33 /* CoreBluetooth.framework */,

二进制
RunGame/Unity-iPhone.xcodeproj/project.xcworkspace/xcuserdata/duowan123.xcuserdatad/UserInterfaceState.xcuserstate