ttlock / iOS_SDK_Demo

TTLock is a global provider of solutions for smart locks. We provide PCBA and softwares for lock manufactures and end users. We provide open API/SDK for developers. With these APIs/SDKs, you can develop your own applications to manage smart locks. The SDK here is for mobile app to communicate with locks via bluetooth.
MIT License
12 stars 12 forks source link

iOS Swift: How to validate TTlock lockData? #16

Closed pathanparvezkhan closed 9 months ago

pathanparvezkhan commented 1 year ago

I am currently trying to fetch operation logs using TTlock iOS SDK. App is getting crash if the lockData is invalid.

JuannyiOS commented 1 year ago

Hi, the lockData obtained from our SDK or server are all valid.
Where did you obtain the invalid lockData ?
What is the lockdata that generated the crash ?

pathanparvezkhan commented 1 year ago

Hi, the lockData obtained from our SDK or server are all valid. Where did you obtain the invalid lockData ? What is the lockdata that generated the crash ?

Please find the below lockData that generated the crash:

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

JuannyiOS commented 1 year ago

The lockdata is valid. We used the lockdata to fetch operation logs without causing a crash.

Why would you say it's invalid? Can you explain the specific situation? Is there a crash log available?

pathanparvezkhan commented 1 year ago

Please find the below crash log:

+[TTHandleResponse getLockDataModel:] Fatal Exception: NSInvalidArgumentException - data parameter is nil

Fatal Exception: NSInvalidArgumentException 0 CoreFoundation 0xa248 exceptionPreprocess 1 libobjc.A.dylib 0x17a68 objc_exception_throw 2 Foundation 0xa77b8 -[NSPersonNameComponents nameSuffix] 3 TestApp 0x287068 +[TTHandleResponse getLockDataModel:] 4 TestApp 0x2d2314 -[TTLockModel setLockData:] 5 TestApp 0x2d22a8 +[TTLockModel modelWithLockData:] 6 TestApp 0x276690 -[TTLockApiManager getOperationLogWithType:lockData:success:failure:] 7 TestApp 0x29dc64 +[TTLock getOperationLogWithType:lockData:success:failure:] 8 TestApp 0xe1550 AccessPointViewModel.uploadTTLockUnlockLogData() + 149 (TTLockHelper.swift:149) 9 TestApp 0x1cd3d8 thunk for @escaping @callee_guaranteed (@unowned Bool) -> () () 10 TestApp 0x1237a0 TTLockHelper.addNewTTLockDevice(device:) + 43 (Bindable.swift:43) 11 TestApp 0x123d44 closure #1 in TTLockHelper.startScanning() + 108 (TTLockHelper.swift:108) 12 TestApp 0xe3f44 thunk for @escaping @callee_guaranteed (@guaranteed TTScanModel?) -> () () 13 TestApp 0x27ce40 -[TTLockApiManager onScanLockWithModel:] 14 TestApp 0x2d436c -[TTCenterManager centralManager:didDiscoverPeripheral:advertisementData:RSSI:] 15 CoreBluetooth 0x62d4 -[CBCentralManager handlePeripheralDiscovered:] 16 CoreBluetooth 0x2698 -[CBCentralManager handleMsg:args:] 17 CoreBluetooth 0x21d0 -[CBManager xpcConnectionDidReceiveMsg:args:] 18 CoreBluetooth 0x20a8 30-[CBXpcConnection _handleMsg:]_block_invoke 19 libdispatch.dylib 0x24b4 _dispatch_call_block_and_release 20 libdispatch.dylib 0x3fdc _dispatch_client_callout 21 libdispatch.dylib 0xb694 _dispatch_lane_serial_drain 22 libdispatch.dylib 0xc214 _dispatch_lane_invoke 23 libdispatch.dylib 0x12748 _dispatch_main_queue_drain 24 libdispatch.dylib 0x12444 _dispatch_main_queue_callback_4CF 25 CoreFoundation 0x9aa08 CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE 26 CoreFoundation 0x7c368 __CFRunLoopRun 27 CoreFoundation 0x811e4 CFRunLoopRunSpecific 28 GraphicsServices 0x1368 GSEventRunModal 29 UIKitCore 0x3a2d88 -[UIApplication run] 30 UIKitCore 0x3a29ec UIApplicationMain 31 libswiftUIKit.dylib 0x352a0 UIApplicationMain(:::_:) 32 TestApp 0x8fec main (ManageModel.swift) 33 ??? 0x1d42fd948 (Missing)

It's crashing while fetching operation logs from the SDK. Please find the below code that we use to fetch operation logs.

TTLock.getOperationLog(with: .all, lockData: lockData) { value in //success } failure: { errorCode, errorMsg in //failure }

JuannyiOS commented 1 year ago
  1. Please carefully confirm the value of lockData passed into this interface. Because the error reporting method is public, other interfaces are also used, such as unlock.

  2. Check if the SDK is the latest version 3.2.9. Because there are no issues with our testing here.

pathanparvezkhan commented 1 year ago

Thank you for your quick response.

Currently we are running with the SDK version 3.2.0, I will update it to latest version 3.2.9 and then will check the same scenario.

pathanparvezkhan commented 1 year ago
  1. Please carefully confirm the value of lockData passed into this interface. Because the error reporting method is public, other interfaces are also used, such as unlock.
  2. Check if the SDK is the latest version 3.2.9. Because there are no issues with our testing here.

@JuannyiOS That Issue has been fixed after updating SDK to latest version 3.2.9.

Thank you for your support.

pathanparvezkhan commented 9 months ago

Issue has been fixed.