Browse Source

【代码优化】解决手表运动后,同步运动数据不保存问题

master
公司电脑 1 year ago
parent
commit
035de41ffd
  1. 6
      FireBoltt.xcodeproj/project.pbxproj
  2. 2
      FireBoltt.xcodeproj/xcshareddata/xcschemes/FireBoltt.xcscheme
  3. BIN
      FireBoltt.xcworkspace/xcuserdata/ecell.xcuserdatad/UserInterfaceState.xcuserstate
  4. 264
      FireBoltt.xcworkspace/xcuserdata/ecell.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  5. 2
      FireBoltt/Const/Enum.swift
  6. 2
      FireBoltt/FB_Modules/FB_Bluetooth/BLEBLDelegate.h
  7. 8
      FireBoltt/FB_Modules/FB_Bluetooth/BLEBaseBlFireBoltt.m
  8. 24
      FireBoltt/FB_Modules/FB_Bluetooth/BluetoothFireBoltt.m
  9. 7
      FireBoltt/FB_Modules/FB_Device/Service/BluetoothService.swift
  10. 2
      FireBoltt/FB_Modules/FB_Device/ViewModel/DeviceViewModels.swift
  11. 10
      FireBoltt/FB_Modules/FB_Sport/View/SportHeaderView.swift
  12. 100
      FireBoltt/FB_Modules/FB_Sport/View/SportHeaderView.xib
  13. 2
      FireBoltt/FB_Modules/FB_Sport/ViewModel/SportCellViewModels.swift
  14. 22
      FireBoltt/Resource/Assets.xcassets/SportImg/icon_free_training.imageset/Contents.json
  15. BIN
      FireBoltt/Resource/Assets.xcassets/SportImg/icon_free_training.imageset/icon_free_training@2x.png
  16. BIN
      FireBoltt/Resource/Assets.xcassets/SportImg/icon_free_training.imageset/icon_free_training@3x.png
  17. 22
      FireBoltt/Resource/Assets.xcassets/SportImg/icon_running.imageset/Contents.json
  18. BIN
      FireBoltt/Resource/Assets.xcassets/SportImg/icon_running.imageset/icon_running@2x.png
  19. BIN
      FireBoltt/Resource/Assets.xcassets/SportImg/icon_running.imageset/icon_running@3x.png
  20. 20
      FireBoltt/Resource/en.lproj/Localizable.strings
  21. 8
      FireBoltt/Resource/nl.lproj/Localizable.strings
  22. 383
      R.generated.swift

6
FireBoltt.xcodeproj/project.pbxproj

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 51;
objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
@ -2558,7 +2558,7 @@ @@ -2558,7 +2558,7 @@
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = "$(inherited)";
MARKETING_VERSION = 1.0.0;
MARKETING_VERSION = 1.0.1;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.ecell.www.fireboltts;
PRODUCT_NAME = "$(TARGET_NAME)";
@ -2603,7 +2603,7 @@ @@ -2603,7 +2603,7 @@
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = "$(inherited)";
MARKETING_VERSION = 1.0.0;
MARKETING_VERSION = 1.0.1;
ONLY_ACTIVE_ARCH = NO;
PRODUCT_BUNDLE_IDENTIFIER = com.ecell.www.fireboltts;
PRODUCT_NAME = "$(TARGET_NAME)";

2
FireBoltt.xcodeproj/xcshareddata/xcschemes/FireBoltt.xcscheme

@ -31,7 +31,7 @@ @@ -31,7 +31,7 @@
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"

BIN
FireBoltt.xcworkspace/xcuserdata/ecell.xcuserdatad/UserInterfaceState.xcuserstate generated

Binary file not shown.

264
FireBoltt.xcworkspace/xcuserdata/ecell.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@ -269,78 +269,62 @@ @@ -269,78 +269,62 @@
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "74102FF6-C108-4E71-A30E-40CB1E71CBE2"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FireBoltt/FB_Modules/FB_DataBase/DataBaseManagerFireBoltt.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "114"
endingLineNumber = "114"
landmarkName = "insertModels(models:dataType:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "E0631F0C-5B86-415E-812F-FE11C5350058"
uuid = "C5F2317D-E3A7-49CF-A890-8551F7423EFC"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FireBoltt/FB_Modules/FB_Device/Service/BluetoothService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "865"
endingLineNumber = "865"
landmarkName = "handleHealthData(dict:)"
startingLineNumber = "718"
endingLineNumber = "718"
landmarkName = "finishedHandle(withData:cmd:)"
landmarkType = "7">
<Locations>
<Location
uuid = "E0631F0C-5B86-415E-812F-FE11C5350058 - 81af793b027c619"
uuid = "C5F2317D-E3A7-49CF-A890-8551F7423EFC - 9cd1bb94558624c4"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "FireBoltt.BluetoothService.handleHealthData(dict: Swift.Dictionary&lt;Swift.String, Any&gt;) -&gt; ()"
symbolName = "FireBoltt.BluetoothService.finishedHandle(_: Swift.Optional&lt;__C.BLEBaseBlFireBoltt&gt;, data: Swift.Optional&lt;Swift.Dictionary&lt;Swift.AnyHashable, Any&gt;&gt;, cmd: __C.BleCMD_FireBoltt) -&gt; ()"
moduleName = "FireBoltt"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/ecell/FireBoltt_ios/FireBoltt/FB_Modules/FB_Device/Service/BluetoothService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "863"
endingLineNumber = "863"
offsetFromSymbolStart = "3688">
startingLineNumber = "719"
endingLineNumber = "719"
offsetFromSymbolStart = "16892">
</Location>
<Location
uuid = "E0631F0C-5B86-415E-812F-FE11C5350058 - ee886ede3a07a1d2"
uuid = "C5F2317D-E3A7-49CF-A890-8551F7423EFC - 9cd1bb94558624e5"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "closure #1 (FireBoltt.SportModel) -&gt; () in FireBoltt.BluetoothService.handleHealthData(dict: Swift.Dictionary&lt;Swift.String, Any&gt;) -&gt; ()"
symbolName = "FireBoltt.BluetoothService.finishedHandle(_: Swift.Optional&lt;__C.BLEBaseBlFireBoltt&gt;, data: Swift.Optional&lt;Swift.Dictionary&lt;Swift.AnyHashable, Any&gt;&gt;, cmd: __C.BleCMD_FireBoltt) -&gt; ()"
moduleName = "FireBoltt"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/ecell/FireBoltt_ios/FireBoltt/FB_Modules/FB_Device/Service/BluetoothService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "864"
endingLineNumber = "864"
offsetFromSymbolStart = "88">
startingLineNumber = "718"
endingLineNumber = "718"
offsetFromSymbolStart = "16892">
</Location>
<Location
uuid = "E0631F0C-5B86-415E-812F-FE11C5350058 - 81af793b027c5c7"
uuid = "C5F2317D-E3A7-49CF-A890-8551F7423EFC - 19bb07e8a01bb698"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "FireBoltt.BluetoothService.handleHealthData(dict: Swift.Dictionary&lt;Swift.String, Any&gt;) -&gt; ()"
symbolName = "FireBoltt.BluetoothService.finishedHandle(withData: Swift.Optional&lt;Swift.Dictionary&lt;Swift.AnyHashable, Any&gt;&gt;, cmd: __C.BleCMD_FireBoltt) -&gt; ()"
moduleName = "FireBoltt"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/ecell/FireBoltt_ios/FireBoltt/FB_Modules/FB_Device/Service/BluetoothService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "865"
endingLineNumber = "865"
offsetFromSymbolStart = "3656">
startingLineNumber = "718"
endingLineNumber = "718"
offsetFromSymbolStart = "16896">
</Location>
</Locations>
</BreakpointContent>
@ -348,20 +332,20 @@ @@ -348,20 +332,20 @@
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "43FB20D8-897D-4868-B1DC-748755394D4C"
uuid = "615D9008-45AB-4639-BAC7-B77CDD8E41B5"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FireBoltt/FB_Modules/FB_Device/Service/BluetoothService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "697"
endingLineNumber = "697"
landmarkName = "finishedHandle(_:data:cmd:)"
startingLineNumber = "773"
endingLineNumber = "773"
landmarkName = "finishedHandle(withData:cmd:)"
landmarkType = "7">
<Locations>
<Location
uuid = "43FB20D8-897D-4868-B1DC-748755394D4C - 9cd1bb9455862750"
uuid = "615D9008-45AB-4639-BAC7-B77CDD8E41B5 - 9cd1bb9455862dad"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
@ -371,12 +355,12 @@ @@ -371,12 +355,12 @@
urlString = "file:///Users/ecell/FireBoltt_ios/FireBoltt/FB_Modules/FB_Device/Service/BluetoothService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "699"
endingLineNumber = "699"
offsetFromSymbolStart = "14648">
startingLineNumber = "774"
endingLineNumber = "774"
offsetFromSymbolStart = "21216">
</Location>
<Location
uuid = "43FB20D8-897D-4868-B1DC-748755394D4C - 9cd1bb9455862750"
uuid = "615D9008-45AB-4639-BAC7-B77CDD8E41B5 - 9cd1bb9455862dce"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
@ -386,24 +370,24 @@ @@ -386,24 +370,24 @@
urlString = "file:///Users/ecell/FireBoltt_ios/FireBoltt/FB_Modules/FB_Device/Service/BluetoothService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "699"
endingLineNumber = "699"
offsetFromSymbolStart = "15100">
startingLineNumber = "773"
endingLineNumber = "773"
offsetFromSymbolStart = "21216">
</Location>
<Location
uuid = "43FB20D8-897D-4868-B1DC-748755394D4C - 9cd1bb9455862792"
uuid = "615D9008-45AB-4639-BAC7-B77CDD8E41B5 - 19bb07e8a01bbfb3"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "FireBoltt.BluetoothService.finishedHandle(_: Swift.Optional&lt;__C.BLEBaseBlFireBoltt&gt;, data: Swift.Optional&lt;Swift.Dictionary&lt;Swift.AnyHashable, Any&gt;&gt;, cmd: __C.BleCMD_FireBoltt) -&gt; ()"
symbolName = "FireBoltt.BluetoothService.finishedHandle(withData: Swift.Optional&lt;Swift.Dictionary&lt;Swift.AnyHashable, Any&gt;&gt;, cmd: __C.BleCMD_FireBoltt) -&gt; ()"
moduleName = "FireBoltt"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/ecell/FireBoltt_ios/FireBoltt/FB_Modules/FB_Device/Service/BluetoothService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "697"
endingLineNumber = "697"
offsetFromSymbolStart = "14632">
startingLineNumber = "773"
endingLineNumber = "773"
offsetFromSymbolStart = "21236">
</Location>
</Locations>
</BreakpointContent>
@ -411,134 +395,6 @@ @@ -411,134 +395,6 @@
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "C5F2317D-E3A7-49CF-A890-8551F7423EFC"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FireBoltt/FB_Modules/FB_Device/Service/BluetoothService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "719"
endingLineNumber = "719"
landmarkName = "finishedHandle(_:data:cmd:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "615D9008-45AB-4639-BAC7-B77CDD8E41B5"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FireBoltt/FB_Modules/FB_Device/Service/BluetoothService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "774"
endingLineNumber = "774"
landmarkName = "finishedHandle(_:data:cmd:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "F78C4540-A800-4FBF-A47F-AE6C292DE26C"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FireBoltt/FB_Modules/FB_Bluetooth/L2DataParseFireBoltt.m"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "999"
endingLineNumber = "999"
landmarkName = "+p_parseBraceletData_syncHealthWith:"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "277E3F88-23DC-43CF-A2CF-ADC12209B361"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FireBoltt/FB_Modules/FB_Bluetooth/L2DataParseFireBoltt.m"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "106"
endingLineNumber = "106"
landmarkName = "+L2_ParseData:type:"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "47E326DB-8E1F-4E48-B3F4-DCF76AB7E6D6"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FireBoltt/FB_Modules/FB_DataBase/DataBaseManagerFireBoltt.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "86"
endingLineNumber = "86"
landmarkName = "createDataTables()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "32AA9704-8901-4A65-8BE1-C99030984CC1"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FireBoltt/FB_Modules/FB_Health/ViewModel/HealthHomeViewModels.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "94"
endingLineNumber = "94"
landmarkName = "fbloadHealthData()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "EC56E8DB-F3C2-4372-B06D-8B46BE99408A"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FireBoltt/FB_Modules/FB_Device/Service/BluetoothService.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "350"
endingLineNumber = "350"
landmarkName = "fbsendSyncDeviceData()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "C1BE2A4A-4B89-43B6-B2F4-A7F8C0ACB052"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FireBoltt/FB_Modules/FB_DataBase/DataBaseManagerFireBoltt.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "236"
endingLineNumber = "236"
landmarkName = "fbquerySleepModel(dataDate:queryType:_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "F5F86B84-6C64-4EF6-B882-57525997D1BD"
shouldBeEnabled = "Yes"
ignoreCount = "0"
@ -552,53 +408,5 @@ @@ -552,53 +408,5 @@
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "7B3B2F2A-BC9C-4A42-A1C1-30444EEA25D4"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FireBoltt/FB_Modules/FB_Health/ViewModel/HealthHomeViewModels.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "180"
endingLineNumber = "180"
landmarkName = "monitor()"
landmarkType = "7">
<Locations>
<Location
uuid = "7B3B2F2A-BC9C-4A42-A1C1-30444EEA25D4 - 6cc846a688ec7e4d"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "closure #2 (FireBoltt.HealthDataSyncState) -&gt; () in FireBoltt.HealthHomeViewModels.monitor() -&gt; ()"
moduleName = "FireBoltt"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/ecell/FireBoltt_ios/FireBoltt/FB_Modules/FB_Health/ViewModel/HealthHomeViewModels.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "180"
endingLineNumber = "180"
offsetFromSymbolStart = "176">
</Location>
<Location
uuid = "7B3B2F2A-BC9C-4A42-A1C1-30444EEA25D4 - b36d41eca6612d21"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "closure #1 (Swift.Array&lt;FireBoltt.BaseJsonModel&gt;) -&gt; () in closure #2 (FireBoltt.HealthDataSyncState) -&gt; () in FireBoltt.HealthHomeViewModels.monitor() -&gt; ()"
moduleName = "FireBoltt"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/ecell/FireBoltt_ios/FireBoltt/FB_Modules/FB_Health/ViewModel/HealthHomeViewModels.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "181"
endingLineNumber = "181"
offsetFromSymbolStart = "56">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

2
FireBoltt/Const/Enum.swift

@ -268,7 +268,7 @@ extension SportType { @@ -268,7 +268,7 @@ extension SportType {
case .freeTraining: return R.image.fb_icon_free()
default:
return nil
return R.image.icon_running()
}
}
}

2
FireBoltt/FB_Modules/FB_Bluetooth/BLEBLDelegate.h

@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
/**
*
*/
- (void)finishedHandle:(BLEBaseBlFireBoltt*)bl data:(NSDictionary *)data cmd:(BleCMD_FireBoltt)cmd;
- (void)finishedHandleWithData:(NSDictionary *)data cmd:(BleCMD_FireBoltt)cmd;
@optional
/**

8
FireBoltt/FB_Modules/FB_Bluetooth/BLEBaseBlFireBoltt.m

@ -1619,10 +1619,14 @@ @@ -1619,10 +1619,14 @@
//NSLog(@"我是接收到的完整数据 -------%@",data);
NSDictionary *dict = [L2DataParseFireBoltt L2_ParseData:data type:cmdId];
if (cmdId == BleCMD_syncHealth)
{
NSLog(@"实时运动数据 22 %@", dict);
}
if (IsDelegate(self.delegate, finishedHandle:data:cmd:)) {
if (IsDelegate(self.delegate, finishedHandleWithData:cmd:)) {
[self.delegate finishedHandle:self data:dict cmd:cmdId];
[self.delegate finishedHandleWithData:dict cmd:cmdId];
}
}

24
FireBoltt/FB_Modules/FB_Bluetooth/BluetoothFireBoltt.m

@ -822,6 +822,8 @@ NSString *FLT_BLE_RCSP_R = @"AE02"; //命令“读”通道 @@ -822,6 +822,8 @@ NSString *FLT_BLE_RCSP_R = @"AE02"; //命令“读”通道
// 拼接最后完整数据包
[self.totalData appendData:self.currenData];
// 代理返回成功数据
if (item.cmd == BleCMD_syncHealth)
NSLog(@"909090");
if (IsDelegate(item.dataSource, bluetoothManager:sequenceID:didCompleteWithData:cmdId:)) {
[self.currenItem.dataSource bluetoothManager:self sequenceID:item.sid didCompleteWithData:self.totalData cmdId:item.cmd];
}
@ -919,13 +921,9 @@ NSString *FLT_BLE_RCSP_R = @"AE02"; //命令“读”通道 @@ -919,13 +921,9 @@ NSString *FLT_BLE_RCSP_R = @"AE02"; //命令“读”通道
if (blecmd == BleCMD_realTimesync)
[BLEBaseBlFireBoltt.shareInstance readProfileWithBleCmdTypeFB:BleCMD_readProfile];
// 处理设备端发来的实时步数,心率,血压血氧
if (blecmd == BleCMD_realTimesync||blecmd == BleCMD_syncHealth) {
NSDictionary *dict = [L2DataParseFireBoltt L2_ParseData:data type:blecmd];
BleCMD_FireBoltt reportCMD = [dict[@"DataType"] integerValue];
[[NSNotificationCenter defaultCenter] postNotificationName:DeviceReportRealTimeHealthData object:@(reportCMD) userInfo:dict];
// 处理设备端发来的实时
if (blecmd == BleCMD_realTimesync || blecmd == BleCMD_syncHealth) {
[self handleDeviceDataCMD:blecmd Data:data];
return;
}
// 回复设备发出通知
@ -967,9 +965,21 @@ NSString *FLT_BLE_RCSP_R = @"AE02"; //命令“读”通道 @@ -967,9 +965,21 @@ NSString *FLT_BLE_RCSP_R = @"AE02"; //命令“读”通道
处理设备发送过来的数据
*/
- (void)handleDeviceDataCMD:(BleCMD_FireBoltt)blecmd Data:(NSMutableData *)data {
NSDictionary *dict = [L2DataParseFireBoltt L2_ParseData:data type:blecmd];
BleCMD_FireBoltt reportCMD = [dict[@"DataType"] integerValue];
[[NSNotificationCenter defaultCenter] postNotificationName:DeviceReportRealTimeHealthData object:@(reportCMD) userInfo:dict];
if (blecmd == BleCMD_syncHealth)
{
NSLog(@"实时运动数据:%@",dict[@"SPORT"]);
if (dict[@"SPORT"])
{
// if (IsDelegate(self.currenItem.dataSource, bluetoothManager:sequenceID:didCompleteWithData:cmdId:)) {
// [self.currenItem.dataSource bluetoothManager:self sequenceID:self.currenItem.sid didCompleteWithData:data cmdId:BleCMD_syncHealth];
// }
[BluetoothService.ocShareInstance finishedHandleWithData:dict cmd:BleCMD_syncHealth];
}
}
}
/**

7
FireBoltt/FB_Modules/FB_Device/Service/BluetoothService.swift

@ -77,8 +77,7 @@ class BluetoothService: NSObject { @@ -77,8 +77,7 @@ class BluetoothService: NSObject {
baseBl.delegate = self
loadDefaultData()
monitorNotification()
//
// finishedHandle(BLEBaseBl(), data: ["deviceName": "ceshi", "platform": 0, "macID": "asdasd", "adapterNumber": 9527, "firmwareVersion": "1.0.0"], cmd: .firmwareVersion)
}
private func loadDefaultData() {
@ -556,8 +555,8 @@ extension BluetoothService { @@ -556,8 +555,8 @@ extension BluetoothService {
// MARK: -
extension BluetoothService: BLEBLDelegate {
func finishedHandle(_ bl: BLEBaseBlFireBoltt!, data: [AnyHashable : Any]!, cmd: BleCMD_FireBoltt) {
func finishedHandle(withData data: [AnyHashable : Any]!, cmd: BleCMD_FireBoltt) {
switch cmd {
case .setAlarmClock:
print("")

2
FireBoltt/FB_Modules/FB_Device/ViewModel/DeviceViewModels.swift

@ -183,7 +183,7 @@ extension DeviceViewModels { @@ -183,7 +183,7 @@ extension DeviceViewModels {
if adapterInfo.music { section2.append(.music) }
// Section3
if adapterInfo.firmwareVersion { section3.insert(.firmwareUpgrade, at: 0) }
if adapterInfo.wechatSport { section3.insert(.wechatSport, at: 1) }
if adapterInfo.wechatSport { section3.insert(.wechatSport, at: 0) }
if adapterInfo.dailPush { section3.insert(.dialPush, at: 0) }
}
let funcations: [[FunctionTypeFireBoltt]] = [section1, section2, section3]

10
FireBoltt/FB_Modules/FB_Sport/View/SportHeaderView.swift

@ -31,6 +31,10 @@ class SportHeaderView: UIView { @@ -31,6 +31,10 @@ class SportHeaderView: UIView {
@IBOutlet weak var sportListLabel: UILabel!
@IBOutlet weak var xiaoshiLabel: UILabel!
@IBOutlet weak var qiankaLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
dataBgView.layer.cornerRadius = 10
@ -48,6 +52,10 @@ class SportHeaderView: UIView { @@ -48,6 +52,10 @@ class SportHeaderView: UIView {
durationTipLabel.text = MultiLanguageKey_FB.totalDurationFB.localized
caloriesTipLabel.text = MultiLanguageKey_FB.totalCaloriesFB.localized
sportListLabel.text = MultiLanguageKey_FB.sportListFB.localized
countUnitLabel.text = MultiLanguageKey_FB.timeFB.localized
xiaoshiLabel.text = MultiLanguageKey_FB.hourFB.localized
qiankaLabel.text = MultiLanguageKey_FB.kcalFB.localized
}
///
@ -64,7 +72,7 @@ class SportHeaderView: UIView { @@ -64,7 +72,7 @@ class SportHeaderView: UIView {
let metric = UserDefaultsManagerFrieBoltt.getUserInfo()?.metricUnit ?? 0
let distanceStr = metric == 0 ? String(format: "%0.2lf",CGFloat(distance) / 1000.0) : String(format: "%0.2lf", CGFloat(distance) / 1000.0 * 0.62137)
distanceValueLabel.text = distanceStr
distanceUnitLabel.text = metric == 0 ? "公里" : "miles"
distanceUnitLabel.text = metric == 0 ? MultiLanguageKey_FB.kmFB.localized : "miles"
caloriesValueLabel.text = String(calories)
durationValueLabel.text = String(format: "%.1lf", Double(duration) / 3600)
countValueLabel.text = String(sports.count)

100
FireBoltt/FB_Modules/FB_Sport/View/SportHeaderView.xib

@ -1,9 +1,9 @@ @@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22154" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22130"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
@ -20,18 +20,22 @@ @@ -20,18 +20,22 @@
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="i4I-eS-dgn">
<rect key="frame" x="122.5" y="15" width="90" height="53"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="总次数" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ffs-AA-3Gt">
<rect key="frame" x="5" y="4" width="13" height="45"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="总次数" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ffs-AA-3Gt">
<rect key="frame" x="3" y="2" width="82" height="11"/>
<constraints>
<constraint firstAttribute="height" constant="45" id="QKP-U9-35A"/>
<constraint firstAttribute="width" constant="13" id="kC6-9k-5c6"/>
<constraint firstAttribute="height" constant="11" id="QKP-U9-35A"/>
<constraint firstAttribute="width" constant="82" id="kC6-9k-5c6"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="9"/>
<color key="textColor" red="0.0" green="0.65490196078431373" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="6" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OUB-hC-yj2">
<rect key="frame" x="37.5" y="12" width="15.5" height="29"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="6" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OUB-hC-yj2">
<rect key="frame" x="17" y="13" width="61" height="29"/>
<constraints>
<constraint firstAttribute="height" constant="29" id="1EH-p5-72a"/>
<constraint firstAttribute="width" constant="61" id="WJN-HQ-pWh"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="24"/>
<color key="textColor" red="0.0" green="0.65490196079999996" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
@ -46,30 +50,31 @@ @@ -46,30 +50,31 @@
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="90" id="24k-JA-tlo"/>
<constraint firstItem="Ffs-AA-3Gt" firstAttribute="centerY" secondItem="i4I-eS-dgn" secondAttribute="centerY" id="BNt-vq-dH2"/>
<constraint firstItem="Ffs-AA-3Gt" firstAttribute="centerY" secondItem="i4I-eS-dgn" secondAttribute="centerY" constant="-19" id="BNt-vq-dH2"/>
<constraint firstAttribute="height" constant="53" id="bU1-us-3a8"/>
<constraint firstAttribute="bottom" secondItem="dRd-b3-kdm" secondAttribute="bottom" constant="2.5" id="bfD-0F-Bf1"/>
<constraint firstItem="Ffs-AA-3Gt" firstAttribute="leading" secondItem="i4I-eS-dgn" secondAttribute="leading" constant="5" id="cCk-NL-psi"/>
<constraint firstItem="OUB-hC-yj2" firstAttribute="centerX" secondItem="i4I-eS-dgn" secondAttribute="centerX" id="chf-L5-FSG"/>
<constraint firstItem="Ffs-AA-3Gt" firstAttribute="leading" secondItem="i4I-eS-dgn" secondAttribute="leading" constant="3" id="cCk-NL-psi"/>
<constraint firstAttribute="trailing" secondItem="dRd-b3-kdm" secondAttribute="trailing" constant="6.5" id="dyL-8D-Xvp"/>
<constraint firstItem="OUB-hC-yj2" firstAttribute="centerY" secondItem="i4I-eS-dgn" secondAttribute="centerY" id="reE-xz-gvc"/>
<constraint firstItem="Ffs-AA-3Gt" firstAttribute="centerY" secondItem="i4I-eS-dgn" secondAttribute="centerY" id="yE4-bS-aX0"/>
<constraint firstItem="OUB-hC-yj2" firstAttribute="top" secondItem="i4I-eS-dgn" secondAttribute="top" constant="13" id="fPL-UB-bjw"/>
<constraint firstItem="OUB-hC-yj2" firstAttribute="leading" secondItem="i4I-eS-dgn" secondAttribute="leading" constant="17" id="l4w-xB-4mn"/>
<constraint firstItem="Ffs-AA-3Gt" firstAttribute="centerY" secondItem="i4I-eS-dgn" secondAttribute="centerY" constant="-19" id="yE4-bS-aX0"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cAm-b2-u2i">
<rect key="frame" x="17.5" y="15" width="90" height="53"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="总里程" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DJW-Cz-bES">
<rect key="frame" x="5" y="10.5" width="9" height="32.5"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="总里程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DJW-Cz-bES">
<rect key="frame" x="3" y="2" width="82" height="11"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="9" id="40E-01-vYz"/>
<constraint firstAttribute="width" constant="82" id="40E-01-vYz"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="9"/>
<color key="textColor" red="0.0" green="0.30588235294117649" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="14.5" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tVr-wQ-xbV">
<rect key="frame" x="22" y="11" width="61" height="29"/>
<rect key="frame" x="17" y="13" width="61" height="29"/>
<constraints>
<constraint firstAttribute="height" constant="29" id="TBl-VF-ZUP"/>
</constraints>
@ -89,32 +94,32 @@ @@ -89,32 +94,32 @@
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="tVr-wQ-xbV" firstAttribute="centerY" secondItem="cAm-b2-u2i" secondAttribute="centerY" constant="-1" id="4PO-p4-Z9Q"/>
<constraint firstItem="tVr-wQ-xbV" firstAttribute="centerY" secondItem="cAm-b2-u2i" secondAttribute="centerY" constant="1" id="4PO-p4-Z9Q"/>
<constraint firstAttribute="width" constant="90" id="ShI-oc-rC3"/>
<constraint firstAttribute="trailing" secondItem="Nec-Gi-kqS" secondAttribute="trailing" constant="3.5" id="TEb-ie-zpL"/>
<constraint firstAttribute="height" constant="53" id="bKx-iu-m3E"/>
<constraint firstItem="DJW-Cz-bES" firstAttribute="centerY" secondItem="cAm-b2-u2i" secondAttribute="centerY" id="gfR-xW-A7S"/>
<constraint firstItem="DJW-Cz-bES" firstAttribute="leading" secondItem="cAm-b2-u2i" secondAttribute="leading" constant="5" id="hPS-Te-LCS"/>
<constraint firstItem="DJW-Cz-bES" firstAttribute="centerY" secondItem="cAm-b2-u2i" secondAttribute="centerY" constant="-19" id="gfR-xW-A7S"/>
<constraint firstItem="DJW-Cz-bES" firstAttribute="leading" secondItem="cAm-b2-u2i" secondAttribute="leading" constant="3" id="hPS-Te-LCS"/>
<constraint firstAttribute="bottom" secondItem="Nec-Gi-kqS" secondAttribute="bottom" constant="2.5" id="mno-JN-gfc"/>
<constraint firstItem="tVr-wQ-xbV" firstAttribute="leading" secondItem="DJW-Cz-bES" secondAttribute="trailing" constant="8" id="oQ5-P2-hyR"/>
<constraint firstAttribute="trailing" secondItem="tVr-wQ-xbV" secondAttribute="trailing" constant="7" id="s0W-je-tiM"/>
<constraint firstItem="tVr-wQ-xbV" firstAttribute="leading" secondItem="DJW-Cz-bES" secondAttribute="trailing" constant="-68" id="oQ5-P2-hyR"/>
<constraint firstAttribute="trailing" secondItem="tVr-wQ-xbV" secondAttribute="trailing" constant="12" id="s0W-je-tiM"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SZh-WY-c9X">
<rect key="frame" x="117.5" y="83" width="100" height="53"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="总消耗" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="t14-by-pUR">
<rect key="frame" x="7" y="6" width="13" height="41"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="总消耗" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="t14-by-pUR">
<rect key="frame" x="3" y="2" width="82" height="11"/>
<constraints>
<constraint firstAttribute="width" constant="13" id="eoS-Pf-GOh"/>
<constraint firstAttribute="height" constant="41" id="swK-IO-ZmX"/>
<constraint firstAttribute="width" constant="82" id="eoS-Pf-GOh"/>
<constraint firstAttribute="height" constant="11" id="swK-IO-ZmX"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="9"/>
<color key="textColor" red="0.86274509799999999" green="0.074509803920000006" blue="0.35294117650000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="6" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Uu5-Cg-7iz">
<rect key="frame" x="42.5" y="12" width="15.5" height="29"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="6" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Uu5-Cg-7iz">
<rect key="frame" x="2" y="13" width="95" height="29"/>
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="24"/>
<color key="textColor" red="0.86274509803921573" green="0.074509803921568626" blue="0.3529411764705882" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
@ -131,32 +136,37 @@ @@ -131,32 +136,37 @@
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="Uu5-Cg-7iz" firstAttribute="centerY" secondItem="SZh-WY-c9X" secondAttribute="centerY" id="0dv-SH-DNZ"/>
<constraint firstAttribute="height" constant="53" id="AOa-B3-f1t"/>
<constraint firstItem="t14-by-pUR" firstAttribute="leading" secondItem="SZh-WY-c9X" secondAttribute="leading" constant="7" id="Oeu-tN-JcJ"/>
<constraint firstItem="t14-by-pUR" firstAttribute="leading" secondItem="SZh-WY-c9X" secondAttribute="leading" constant="3" id="Oeu-tN-JcJ"/>
<constraint firstAttribute="trailing" secondItem="WgE-LU-CGG" secondAttribute="trailing" constant="5" id="XhK-um-Qp9"/>
<constraint firstItem="Uu5-Cg-7iz" firstAttribute="centerX" secondItem="SZh-WY-c9X" secondAttribute="centerX" id="mt9-lv-Q7e"/>
<constraint firstItem="t14-by-pUR" firstAttribute="centerY" secondItem="SZh-WY-c9X" secondAttribute="centerY" id="nQ7-t5-USW"/>
<constraint firstAttribute="trailing" secondItem="Uu5-Cg-7iz" secondAttribute="trailing" constant="3" id="ZlK-Py-IbV"/>
<constraint firstItem="Uu5-Cg-7iz" firstAttribute="leading" secondItem="SZh-WY-c9X" secondAttribute="leading" constant="2" id="gb2-sn-Ith"/>
<constraint firstItem="t14-by-pUR" firstAttribute="centerY" secondItem="SZh-WY-c9X" secondAttribute="centerY" constant="-19" id="nQ7-t5-USW"/>
<constraint firstAttribute="width" constant="100" id="oEh-cf-na4"/>
<constraint firstAttribute="bottom" secondItem="WgE-LU-CGG" secondAttribute="bottom" constant="3.5" id="q22-dC-gyZ"/>
<constraint firstItem="Uu5-Cg-7iz" firstAttribute="top" secondItem="t14-by-pUR" secondAttribute="bottom" id="wzL-Uw-2Jd"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Wx9-7W-7NJ">
<rect key="frame" x="227.5" y="15" width="90" height="53"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="总时长" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="4" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4r2-iy-DQa">
<rect key="frame" x="5" y="6" width="14" height="41"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="总时长" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4r2-iy-DQa">
<rect key="frame" x="3" y="2" width="82" height="11"/>
<constraints>
<constraint firstAttribute="height" constant="41" id="UZL-e9-GHz"/>
<constraint firstAttribute="width" constant="14" id="xlw-gM-xUg"/>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="41" id="yi4-O5-CF5"/>
<constraint firstAttribute="height" constant="11" id="UZL-e9-GHz"/>
<constraint firstAttribute="width" constant="82" id="xlw-gM-xUg"/>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="11" id="yi4-O5-CF5"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="9"/>
<color key="textColor" red="0.43137254899999999" green="0.62745098040000002" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="8.6" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jrM-Hy-9Pm">
<rect key="frame" x="27" y="12" width="36" height="29"/>
<rect key="frame" x="17" y="13" width="61" height="29"/>
<constraints>
<constraint firstAttribute="width" constant="61" id="2fj-O1-KzA"/>
<constraint firstAttribute="height" constant="29" id="TK1-0h-YS8"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="24"/>
<color key="textColor" red="0.43137254901960786" green="0.62745098039215685" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
@ -174,14 +184,14 @@ @@ -174,14 +184,14 @@
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="90" id="0EW-0O-AUI"/>
<constraint firstItem="jrM-Hy-9Pm" firstAttribute="leading" secondItem="Wx9-7W-7NJ" secondAttribute="leading" constant="17" id="6NF-Ce-tDB"/>
<constraint firstAttribute="bottom" secondItem="geO-w8-Gdz" secondAttribute="bottom" constant="3.5" id="FUT-n6-KWn"/>
<constraint firstItem="jrM-Hy-9Pm" firstAttribute="centerY" secondItem="Wx9-7W-7NJ" secondAttribute="centerY" id="M3W-c3-lUc"/>
<constraint firstAttribute="height" constant="53" id="UZL-ln-dLk"/>
<constraint firstItem="4r2-iy-DQa" firstAttribute="leading" secondItem="Wx9-7W-7NJ" secondAttribute="leading" constant="5" id="fnL-bb-UQ4"/>
<constraint firstItem="4r2-iy-DQa" firstAttribute="leading" secondItem="Wx9-7W-7NJ" secondAttribute="leading" constant="5" id="gKG-J4-G2l"/>
<constraint firstItem="4r2-iy-DQa" firstAttribute="leading" secondItem="Wx9-7W-7NJ" secondAttribute="leading" constant="3" id="fnL-bb-UQ4"/>
<constraint firstItem="4r2-iy-DQa" firstAttribute="leading" secondItem="Wx9-7W-7NJ" secondAttribute="leading" constant="3" id="gKG-J4-G2l"/>
<constraint firstItem="jrM-Hy-9Pm" firstAttribute="top" secondItem="Wx9-7W-7NJ" secondAttribute="top" constant="13" id="lni-eO-ubG"/>
<constraint firstAttribute="trailing" secondItem="geO-w8-Gdz" secondAttribute="trailing" constant="3.5" id="unU-i3-2YH"/>
<constraint firstItem="jrM-Hy-9Pm" firstAttribute="centerX" secondItem="Wx9-7W-7NJ" secondAttribute="centerX" id="ylU-OT-4QG"/>
<constraint firstItem="4r2-iy-DQa" firstAttribute="centerY" secondItem="Wx9-7W-7NJ" secondAttribute="centerY" id="ztp-pR-kbv"/>
<constraint firstItem="4r2-iy-DQa" firstAttribute="centerY" secondItem="Wx9-7W-7NJ" secondAttribute="centerY" constant="-19" id="ztp-pR-kbv"/>
</constraints>
</view>
</subviews>
@ -230,9 +240,11 @@ @@ -230,9 +240,11 @@
<outlet property="durationBgView" destination="Wx9-7W-7NJ" id="54O-cj-ovy"/>
<outlet property="durationTipLabel" destination="4r2-iy-DQa" id="1TD-pU-HRL"/>
<outlet property="durationValueLabel" destination="jrM-Hy-9Pm" id="a34-5q-HsE"/>
<outlet property="qiankaLabel" destination="WgE-LU-CGG" id="ZeL-sL-0GB"/>
<outlet property="sportListLabel" destination="iRH-aY-YJs" id="QdO-RC-w4U"/>
<outlet property="xiaoshiLabel" destination="geO-w8-Gdz" id="m3f-cP-J3G"/>
</connections>
<point key="canvasLocation" x="-1054.3478260869565" y="-124.55357142857142"/>
<point key="canvasLocation" x="-1396.376811594203" y="-125.22321428571428"/>
</view>
</objects>
<resources>

2
FireBoltt/FB_Modules/FB_Sport/ViewModel/SportCellViewModels.swift

@ -21,7 +21,7 @@ class SportCellViewModels: ViewModel { @@ -21,7 +21,7 @@ class SportCellViewModels: ViewModel {
init(sportModel: SportModel) {
self.sportModel = sportModel
sportName.accept(sportModel.getSportType.sportTypeName)
sportName.accept(sportModel.getSportType.sportTypeName.localized)
img.accept(sportModel.getSportType.sportImg)
timeStr.accept(sportModel.dataDate)
duration.accept(sportModel.durationStr)

22
FireBoltt/Resource/Assets.xcassets/SportImg/icon_free_training.imageset/Contents.json vendored

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "icon_free_training@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "icon_free_training@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

BIN
FireBoltt/Resource/Assets.xcassets/SportImg/icon_free_training.imageset/icon_free_training@2x.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
FireBoltt/Resource/Assets.xcassets/SportImg/icon_free_training.imageset/icon_free_training@3x.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

22
FireBoltt/Resource/Assets.xcassets/SportImg/icon_running.imageset/Contents.json vendored

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "icon_running@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "icon_running@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

BIN
FireBoltt/Resource/Assets.xcassets/SportImg/icon_running.imageset/icon_running@2x.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
FireBoltt/Resource/Assets.xcassets/SportImg/icon_running.imageset/icon_running@3x.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

20
FireBoltt/Resource/en.lproj/Localizable.strings

@ -256,4 +256,22 @@ @@ -256,4 +256,22 @@
"清醒时长" = "awakeDuration";
"寻找手机指令" = "Find phone command";
"免责声明" = "disclaimer";
"太极" = "Taici";
"户外步行" = "Outdoor walking";
"室内跑步" = "Indoor running";
"户外单车" = "Outdoor bike";
"室内单车" = "Indoor bike";
"泳池游泳" = "Swimming in the pool";
"开放水域游泳" = "Open water swimming";
"铁人三项" = "triathlon";
"徒步" = "On foot";
"椭圆机" = "Elliptical machine";
"踏步机" = "treadmills";
"划船机" = "Rowing machine";
"高强度间隙训练" = "High intensity interval training";
"功能性力量训练" = "Functional strength training";
"核心训练" = "Core training";
"瑜伽" = "yoga";
"普拉提" = "Pilates";
"舞蹈" = "Dance";
"整理放松" = "Tidy up and relax";

8
FireBoltt/Resource/nl.lproj/Localizable.strings

@ -161,10 +161,10 @@ @@ -161,10 +161,10 @@
"日" = "Dag";
"周" = "Week";
"次" = "Tijden";
"总里程" = "Totaal aantal mijlen";
"总消耗" = "Totaal verbruik";
"总次数" = "Totale tijden";
"总时长" = "Totale duur";
"总里程" = "TotaalAantalMijlen";
"总消耗" = "TotaalVerbruik";
"总次数" = "TotaleTijden";
"总时长" = "TotaleDuur";
"运动列表" = "Lijst met oefeningen";
"运动时间" = "Tijd oefening";
"平均配速" = "Gemiddeld tempo";

383
R.generated.swift

@ -158,7 +158,7 @@ struct R: Rswift.Validatable { @@ -158,7 +158,7 @@ struct R: Rswift.Validatable {
fileprivate init() {}
}
/// This `R.image` struct is generated, and contains static references to 166 images.
/// This `R.image` struct is generated, and contains static references to 168 images.
struct image {
/// Image `LaunchImage`.
static let launchImage = Rswift.ImageResource(bundle: R.hostingBundle, name: "LaunchImage")
@ -406,6 +406,8 @@ struct R: Rswift.Validatable { @@ -406,6 +406,8 @@ struct R: Rswift.Validatable {
static let icon_equipment_information_save = Rswift.ImageResource(bundle: R.hostingBundle, name: "icon_equipment_information_save")
/// Image `icon_find`.
static let icon_find = Rswift.ImageResource(bundle: R.hostingBundle, name: "icon_find")
/// Image `icon_free_training`.
static let icon_free_training = Rswift.ImageResource(bundle: R.hostingBundle, name: "icon_free_training")
/// Image `icon_girl_head_portrait`.
static let icon_girl_head_portrait = Rswift.ImageResource(bundle: R.hostingBundle, name: "icon_girl_head_portrait")
/// Image `icon_head_boy`.
@ -426,6 +428,8 @@ struct R: Rswift.Validatable { @@ -426,6 +428,8 @@ struct R: Rswift.Validatable {
static let icon_positioning_search = Rswift.ImageResource(bundle: R.hostingBundle, name: "icon_positioning_search")
/// Image `icon_remind`.
static let icon_remind = Rswift.ImageResource(bundle: R.hostingBundle, name: "icon_remind")
/// Image `icon_running`.
static let icon_running = Rswift.ImageResource(bundle: R.hostingBundle, name: "icon_running")
/// Image `icon_sedentary`.
static let icon_sedentary = Rswift.ImageResource(bundle: R.hostingBundle, name: "icon_sedentary")
/// Image `icon_selectImg_No`.
@ -1355,6 +1359,13 @@ struct R: Rswift.Validatable { @@ -1355,6 +1359,13 @@ struct R: Rswift.Validatable {
#endif
#if os(iOS) || os(tvOS)
/// `UIImage(named: "icon_free_training", bundle: ..., traitCollection: ...)`
static func icon_free_training(compatibleWith traitCollection: UIKit.UITraitCollection? = nil) -> UIKit.UIImage? {
return UIKit.UIImage(resource: R.image.icon_free_training, compatibleWith: traitCollection)
}
#endif
#if os(iOS) || os(tvOS)
/// `UIImage(named: "icon_girl_head_portrait", bundle: ..., traitCollection: ...)`
static func icon_girl_head_portrait(compatibleWith traitCollection: UIKit.UITraitCollection? = nil) -> UIKit.UIImage? {
return UIKit.UIImage(resource: R.image.icon_girl_head_portrait, compatibleWith: traitCollection)
@ -1425,6 +1436,13 @@ struct R: Rswift.Validatable { @@ -1425,6 +1436,13 @@ struct R: Rswift.Validatable {
#endif
#if os(iOS) || os(tvOS)
/// `UIImage(named: "icon_running", bundle: ..., traitCollection: ...)`
static func icon_running(compatibleWith traitCollection: UIKit.UITraitCollection? = nil) -> UIKit.UIImage? {
return UIKit.UIImage(resource: R.image.icon_running, compatibleWith: traitCollection)
}
#endif
#if os(iOS) || os(tvOS)
/// `UIImage(named: "icon_sedentary", bundle: ..., traitCollection: ...)`
static func icon_sedentary(compatibleWith traitCollection: UIKit.UITraitCollection? = nil) -> UIKit.UIImage? {
return UIKit.UIImage(resource: R.image.icon_sedentary, compatibleWith: traitCollection)
@ -2002,7 +2020,7 @@ struct R: Rswift.Validatable { @@ -2002,7 +2020,7 @@ struct R: Rswift.Validatable {
fileprivate init() {}
}
/// This `R.string.localizable` struct is generated, and contains static references to 246 localization keys.
/// This `R.string.localizable` struct is generated, and contains static references to 265 localization keys.
struct localizable {
/// en translation: Synchronizing Succeed
///
@ -2156,6 +2174,14 @@ struct R: Rswift.Validatable { @@ -2156,6 +2174,14 @@ struct R: Rswift.Validatable {
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
static let = Rswift.StringResource(key: "消耗", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "zh-Hans", "nl", "ru", "fr", "de", "pt-PT", "es", "tr", "pl", "ar", "ms", "th", "ja", "ko", "zh-HK", "zh-Hant"], comment: nil)
/// en translation: Core training
///
/// Locales: en
static let = Rswift.StringResource(key: "核心训练", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Dance
///
/// Locales: en
static let = Rswift.StringResource(key: "舞蹈", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Deep Sleep
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -2204,6 +2230,10 @@ struct R: Rswift.Validatable { @@ -2204,6 +2230,10 @@ struct R: Rswift.Validatable {
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
static let = Rswift.StringResource(key: "电量", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "zh-Hans", "nl", "ru", "fr", "de", "pt-PT", "es", "tr", "pl", "ar", "ms", "th", "ja", "ko", "zh-HK", "zh-Hant"], comment: nil)
/// en translation: Elliptical machine
///
/// Locales: en
static let = Rswift.StringResource(key: "椭圆机", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: End Time
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -2260,6 +2290,10 @@ struct R: Rswift.Validatable { @@ -2260,6 +2290,10 @@ struct R: Rswift.Validatable {
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
static let = Rswift.StringResource(key: "周五", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "zh-Hans", "nl", "ru", "fr", "de", "pt-PT", "es", "tr", "pl", "ar", "ms", "th", "ja", "ko", "zh-HK", "zh-Hant"], comment: nil)
/// en translation: Functional strength training
///
/// Locales: en
static let = Rswift.StringResource(key: "功能性力量训练", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Go
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -2280,6 +2314,10 @@ struct R: Rswift.Validatable { @@ -2280,6 +2314,10 @@ struct R: Rswift.Validatable {
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
static let = Rswift.StringResource(key: "心率监测", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "zh-Hans", "nl", "ru", "fr", "de", "pt-PT", "es", "tr", "pl", "ar", "ms", "th", "ja", "ko", "zh-HK", "zh-Hant"], comment: nil)
/// en translation: High intensity interval training
///
/// Locales: en
static let = Rswift.StringResource(key: "高强度间隙训练", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Imperial
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -2288,6 +2326,14 @@ struct R: Rswift.Validatable { @@ -2288,6 +2326,14 @@ struct R: Rswift.Validatable {
///
/// Locales: en, zh-Hans, nl, ru
static let = Rswift.StringResource(key: "推送中", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "zh-Hans", "nl", "ru"], comment: nil)
/// en translation: Indoor bike
///
/// Locales: en
static let = Rswift.StringResource(key: "室内单车", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Indoor running
///
/// Locales: en
static let = Rswift.StringResource(key: "室内跑步", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Inspection document
///
/// Locales: en, zh-Hans, nl
@ -2456,6 +2502,10 @@ struct R: Rswift.Validatable { @@ -2456,6 +2502,10 @@ struct R: Rswift.Validatable {
///
/// Locales: en, zh-Hans, nl
static let ota升级固件信息错误 = Rswift.StringResource(key: "OTA升级固件信息错误!", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "zh-Hans", "nl"], comment: nil)
/// en translation: On foot
///
/// Locales: en
static let = Rswift.StringResource(key: "徒步", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Only once
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -2464,6 +2514,18 @@ struct R: Rswift.Validatable { @@ -2464,6 +2514,18 @@ struct R: Rswift.Validatable {
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
static let = Rswift.StringResource(key: "开启", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "zh-Hans", "nl", "ru", "fr", "de", "pt-PT", "es", "tr", "pl", "ar", "ms", "th", "ja", "ko", "zh-HK", "zh-Hant"], comment: nil)
/// en translation: Open water swimming
///
/// Locales: en
static let = Rswift.StringResource(key: "开放水域游泳", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Outdoor bike
///
/// Locales: en
static let = Rswift.StringResource(key: "户外单车", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Outdoor walking
///
/// Locales: en
static let = Rswift.StringResource(key: "户外步行", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Outlook
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -2480,6 +2542,10 @@ struct R: Rswift.Validatable { @@ -2480,6 +2542,10 @@ struct R: Rswift.Validatable {
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
static let = Rswift.StringResource(key: "计步目标", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "zh-Hans", "nl", "ru", "fr", "de", "pt-PT", "es", "tr", "pl", "ar", "ms", "th", "ja", "ko", "zh-HK", "zh-Hant"], comment: nil)
/// en translation: Pilates
///
/// Locales: en
static let = Rswift.StringResource(key: "普拉提", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Please Select Phone Number
///
/// Locales: en, zh-Hans, nl, ru
@ -2552,6 +2618,10 @@ struct R: Rswift.Validatable { @@ -2552,6 +2618,10 @@ struct R: Rswift.Validatable {
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
static let = Rswift.StringResource(key: "骑行目标", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "zh-Hans", "nl", "ru", "fr", "de", "pt-PT", "es", "tr", "pl", "ar", "ms", "th", "ja", "ko", "zh-HK", "zh-Hant"], comment: nil)
/// en translation: Rowing machine
///
/// Locales: en
static let = Rswift.StringResource(key: "划船机", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Run
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -2644,6 +2714,10 @@ struct R: Rswift.Validatable { @@ -2644,6 +2714,10 @@ struct R: Rswift.Validatable {
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
static let = Rswift.StringResource(key: "周日", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "zh-Hans", "nl", "ru", "fr", "de", "pt-PT", "es", "tr", "pl", "ar", "ms", "th", "ja", "ko", "zh-HK", "zh-Hant"], comment: nil)
/// en translation: Swimming in the pool
///
/// Locales: en
static let = Rswift.StringResource(key: "泳池游泳", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Synchronizing data
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -2656,6 +2730,10 @@ struct R: Rswift.Validatable { @@ -2656,6 +2730,10 @@ struct R: Rswift.Validatable {
///
/// Locales: en, zh-Hans, nl
static let tws耳机未连接 = Rswift.StringResource(key: "TWS耳机未连接", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "zh-Hans", "nl"], comment: nil)
/// en translation: Taici
///
/// Locales: en
static let = Rswift.StringResource(key: "太极", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Take a picture
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -2708,6 +2786,10 @@ struct R: Rswift.Validatable { @@ -2708,6 +2786,10 @@ struct R: Rswift.Validatable {
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
static let = Rswift.StringResource(key: "周四", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "zh-Hans", "nl", "ru", "fr", "de", "pt-PT", "es", "tr", "pl", "ar", "ms", "th", "ja", "ko", "zh-HK", "zh-Hant"], comment: nil)
/// en translation: Tidy up and relax
///
/// Locales: en
static let = Rswift.StringResource(key: "整理放松", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: Time
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -2964,6 +3046,14 @@ struct R: Rswift.Validatable { @@ -2964,6 +3046,14 @@ struct R: Rswift.Validatable {
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
static let = Rswift.StringResource(key: "总里程", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "zh-Hans", "nl", "ru", "fr", "de", "pt-PT", "es", "tr", "pl", "ar", "ms", "th", "ja", "ko", "zh-HK", "zh-Hant"], comment: nil)
/// en translation: treadmills
///
/// Locales: en
static let = Rswift.StringResource(key: "踏步机", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: triathlon
///
/// Locales: en
static let = Rswift.StringResource(key: "铁人三项", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation: walk
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -2984,6 +3074,10 @@ struct R: Rswift.Validatable { @@ -2984,6 +3074,10 @@ struct R: Rswift.Validatable {
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
static let = Rswift.StringResource(key: "", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en", "zh-Hans", "nl", "ru", "fr", "de", "pt-PT", "es", "tr", "pl", "ar", "ms", "th", "ja", "ko", "zh-HK", "zh-Hant"], comment: nil)
/// en translation: yoga
///
/// Locales: en
static let = Rswift.StringResource(key: "瑜伽", tableName: "Localizable", bundle: R.hostingBundle, locales: ["en"], comment: nil)
/// en translation:
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -3559,6 +3653,36 @@ struct R: Rswift.Validatable { @@ -3559,6 +3653,36 @@ struct R: Rswift.Validatable {
return NSLocalizedString("消耗", bundle: bundle, comment: "")
}
/// en translation: Core training
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("核心训练", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "核心训练"
}
return NSLocalizedString("核心训练", bundle: bundle, comment: "")
}
/// en translation: Dance
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("舞蹈", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "舞蹈"
}
return NSLocalizedString("舞蹈", bundle: bundle, comment: "")
}
/// en translation: Deep Sleep
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -3739,6 +3863,21 @@ struct R: Rswift.Validatable { @@ -3739,6 +3863,21 @@ struct R: Rswift.Validatable {
return NSLocalizedString("电量", bundle: bundle, comment: "")
}
/// en translation: Elliptical machine
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("椭圆机", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "椭圆机"
}
return NSLocalizedString("椭圆机", bundle: bundle, comment: "")
}
/// en translation: End Time
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -3949,6 +4088,21 @@ struct R: Rswift.Validatable { @@ -3949,6 +4088,21 @@ struct R: Rswift.Validatable {
return NSLocalizedString("周五", bundle: bundle, comment: "")
}
/// en translation: Functional strength training
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("功能性力量训练", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "功能性力量训练"
}
return NSLocalizedString("功能性力量训练", bundle: bundle, comment: "")
}
/// en translation: Go
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -4024,6 +4178,21 @@ struct R: Rswift.Validatable { @@ -4024,6 +4178,21 @@ struct R: Rswift.Validatable {
return NSLocalizedString("心率监测", bundle: bundle, comment: "")
}
/// en translation: High intensity interval training
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("高强度间隙训练", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "高强度间隙训练"
}
return NSLocalizedString("高强度间隙训练", bundle: bundle, comment: "")
}
/// en translation: Imperial
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -4054,6 +4223,36 @@ struct R: Rswift.Validatable { @@ -4054,6 +4223,36 @@ struct R: Rswift.Validatable {
return NSLocalizedString("推送中", bundle: bundle, comment: "")
}
/// en translation: Indoor bike
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("室内单车", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "室内单车"
}
return NSLocalizedString("室内单车", bundle: bundle, comment: "")
}
/// en translation: Indoor running
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("室内跑步", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "室内跑步"
}
return NSLocalizedString("室内跑步", bundle: bundle, comment: "")
}
/// en translation: Inspection document
///
/// Locales: en, zh-Hans, nl
@ -4684,6 +4883,21 @@ struct R: Rswift.Validatable { @@ -4684,6 +4883,21 @@ struct R: Rswift.Validatable {
return NSLocalizedString("OTA升级固件信息错误!", bundle: bundle, comment: "")
}
/// en translation: On foot
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("徒步", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "徒步"
}
return NSLocalizedString("徒步", bundle: bundle, comment: "")
}
/// en translation: Only once
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -4714,6 +4928,51 @@ struct R: Rswift.Validatable { @@ -4714,6 +4928,51 @@ struct R: Rswift.Validatable {
return NSLocalizedString("开启", bundle: bundle, comment: "")
}
/// en translation: Open water swimming
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("开放水域游泳", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "开放水域游泳"
}
return NSLocalizedString("开放水域游泳", bundle: bundle, comment: "")
}
/// en translation: Outdoor bike
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("户外单车", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "户外单车"
}
return NSLocalizedString("户外单车", bundle: bundle, comment: "")
}
/// en translation: Outdoor walking
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("户外步行", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "户外步行"
}
return NSLocalizedString("户外步行", bundle: bundle, comment: "")
}
/// en translation: Outlook
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -4774,6 +5033,21 @@ struct R: Rswift.Validatable { @@ -4774,6 +5033,21 @@ struct R: Rswift.Validatable {
return NSLocalizedString("计步目标", bundle: bundle, comment: "")
}
/// en translation: Pilates
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("普拉提", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "普拉提"
}
return NSLocalizedString("普拉提", bundle: bundle, comment: "")
}
/// en translation: Please Select Phone Number
///
/// Locales: en, zh-Hans, nl, ru
@ -5044,6 +5318,21 @@ struct R: Rswift.Validatable { @@ -5044,6 +5318,21 @@ struct R: Rswift.Validatable {
return NSLocalizedString("骑行目标", bundle: bundle, comment: "")
}
/// en translation: Rowing machine
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("划船机", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "划船机"
}
return NSLocalizedString("划船机", bundle: bundle, comment: "")
}
/// en translation: Run
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -5389,6 +5678,21 @@ struct R: Rswift.Validatable { @@ -5389,6 +5678,21 @@ struct R: Rswift.Validatable {
return NSLocalizedString("周日", bundle: bundle, comment: "")
}
/// en translation: Swimming in the pool
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("泳池游泳", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "泳池游泳"
}
return NSLocalizedString("泳池游泳", bundle: bundle, comment: "")
}
/// en translation: Synchronizing data
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -5434,6 +5738,21 @@ struct R: Rswift.Validatable { @@ -5434,6 +5738,21 @@ struct R: Rswift.Validatable {
return NSLocalizedString("TWS耳机未连接", bundle: bundle, comment: "")
}
/// en translation: Taici
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("太极", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "太极"
}
return NSLocalizedString("太极", bundle: bundle, comment: "")
}
/// en translation: Take a picture
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -5629,6 +5948,21 @@ struct R: Rswift.Validatable { @@ -5629,6 +5948,21 @@ struct R: Rswift.Validatable {
return NSLocalizedString("周四", bundle: bundle, comment: "")
}
/// en translation: Tidy up and relax
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("整理放松", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "整理放松"
}
return NSLocalizedString("整理放松", bundle: bundle, comment: "")
}
/// en translation: Time
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -6589,6 +6923,36 @@ struct R: Rswift.Validatable { @@ -6589,6 +6923,36 @@ struct R: Rswift.Validatable {
return NSLocalizedString("总里程", bundle: bundle, comment: "")
}
/// en translation: treadmills
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("踏步机", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "踏步机"
}
return NSLocalizedString("踏步机", bundle: bundle, comment: "")
}
/// en translation: triathlon
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("铁人三项", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "铁人三项"
}
return NSLocalizedString("铁人三项", bundle: bundle, comment: "")
}
/// en translation: walk
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant
@ -6664,6 +7028,21 @@ struct R: Rswift.Validatable { @@ -6664,6 +7028,21 @@ struct R: Rswift.Validatable {
return NSLocalizedString("", bundle: bundle, comment: "")
}
/// en translation: yoga
///
/// Locales: en
static func (preferredLanguages: [String]? = nil) -> String {
guard let preferredLanguages = preferredLanguages else {
return NSLocalizedString("瑜伽", bundle: hostingBundle, comment: "")
}
guard let (_, bundle) = localeBundle(tableName: "Localizable", preferredLanguages: preferredLanguages) else {
return "瑜伽"
}
return NSLocalizedString("瑜伽", bundle: bundle, comment: "")
}
/// en translation:
///
/// Locales: en, zh-Hans, nl, ru, fr, de, pt-PT, es, tr, pl, ar, ms, th, ja, ko, zh-HK, zh-Hant

Loading…
Cancel
Save