From 46ed9763102a6f2c3db998d27afe7f32f6f10dc8 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Thu, 15 Dec 2022 11:16:37 -0300 Subject: [PATCH 1/8] =?UTF-8?q?Move=20the=20LogParser=20example=20app=20ou?= =?UTF-8?q?tside=20of=20the=20library=E2=80=99s=20directory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I want it to be easy for people to create a script that uses the LogParser library. The easiest thing I can think of is to be able to just copy and paste the existing example app and then make modifications to it. This isn’t very easy with the current structure, since the example app’s code and build config is a bit intertwined with that of the LogParser library. By putting the example app in a separate directory, we can make a copy of it by just duplicating the entire directory. --- .github/workflows/check.yml | 10 ++++---- Tools/LogParser/Package.swift | 16 +------------ Tools/LogParser/README.md | 6 +---- .../Package.resolved | 0 Tools/LogParserExample/Package.swift | 24 +++++++++++++++++++ Tools/LogParserExample/README.md | 9 +++++++ .../ParseLogFileCommand.swift | 0 .../example.txt | 0 8 files changed, 40 insertions(+), 25 deletions(-) rename Tools/{LogParser => LogParserExample}/Package.resolved (100%) create mode 100644 Tools/LogParserExample/Package.swift create mode 100644 Tools/LogParserExample/README.md rename Tools/{LogParser/Examples/CommandLineExample/Sources => LogParserExample/Sources/LogParserExample}/ParseLogFileCommand.swift (100%) rename Tools/{LogParser/Examples/CommandLineExample => LogParserExample}/example.txt (100%) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 2e8bcca2..4f94ab2b 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -48,9 +48,6 @@ jobs: check-log-parser: runs-on: macos-latest - defaults: - run: - working-directory: Tools/LogParser steps: - uses: actions/checkout@v2 with: @@ -58,5 +55,8 @@ jobs: - name: Run LogParser tests run: swift test - - name: Build LogParser command-line example app - run: swift build --target CommandLineExample + working-directory: Tools/LogParser + + - name: Build LogParserExample app + run: swift build + working-directory: Tools/LogParserExample diff --git a/Tools/LogParser/Package.swift b/Tools/LogParser/Package.swift index fb695eb8..9fe373f3 100644 --- a/Tools/LogParser/Package.swift +++ b/Tools/LogParser/Package.swift @@ -11,13 +11,7 @@ let package = Package( products: [ .library( name: "LogParser", - targets: ["LogParser"]), - .executable( - name: "CommandLineExample", - targets: ["CommandLineExample"]) - ], - dependencies: [ - .package(url: "https://github.com/apple/swift-argument-parser", from: "1.2.0") + targets: ["LogParser"]) ], targets: [ .target( @@ -26,14 +20,6 @@ let package = Package( .testTarget( name: "LogParserTests", dependencies: ["LogParser"] - ), - .executableTarget( - name: "CommandLineExample", - dependencies: [ - "LogParser", - .product(name: "ArgumentParser", package: "swift-argument-parser") - ], - path: "Examples/CommandLineExample/Sources" ) ] ) diff --git a/Tools/LogParser/README.md b/Tools/LogParser/README.md index 9268b6a3..b3883948 100644 --- a/Tools/LogParser/README.md +++ b/Tools/LogParser/README.md @@ -2,8 +2,4 @@ A package for parsing the log output of the Ably Asset Tracking Swift SDKs and their example apps. -There is an example command-line app in [`Examples/CommandLineExample`](Examples/CommandLineExample) which demonstrates how to use the library. You can run it on an example log file by running the following command from the current directory: - -```bash -swift run CommandLineExample Examples/CommandLineExample/example.txt -``` +There is an example command-line app in [`../LogParserExample`](../LogParserExample) which demonstrates how to use the library. diff --git a/Tools/LogParser/Package.resolved b/Tools/LogParserExample/Package.resolved similarity index 100% rename from Tools/LogParser/Package.resolved rename to Tools/LogParserExample/Package.resolved diff --git a/Tools/LogParserExample/Package.swift b/Tools/LogParserExample/Package.swift new file mode 100644 index 00000000..623b2329 --- /dev/null +++ b/Tools/LogParserExample/Package.swift @@ -0,0 +1,24 @@ +// swift-tools-version: 5.7 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "LogParserExample", + platforms: [ + .macOS(.v12) + ], + dependencies: [ + .package(url: "https://github.com/apple/swift-argument-parser", from: "1.2.0"), + .package(path: "../LogParser") + ], + targets: [ + .executableTarget( + name: "LogParserExample", + dependencies: [ + .product(name: "LogParser", package: "LogParser"), + .product(name: "ArgumentParser", package: "swift-argument-parser") + ] + ), + ] +) diff --git a/Tools/LogParserExample/README.md b/Tools/LogParserExample/README.md new file mode 100644 index 00000000..537c71a3 --- /dev/null +++ b/Tools/LogParserExample/README.md @@ -0,0 +1,9 @@ +# LogParserExample + +An example command-line app which demonstrates how to use the [LogParser library](../LogParser). + +You can run it on an example log file by running the following command from the current directory: + +```bash +swift run LogParserExample example.txt +``` diff --git a/Tools/LogParser/Examples/CommandLineExample/Sources/ParseLogFileCommand.swift b/Tools/LogParserExample/Sources/LogParserExample/ParseLogFileCommand.swift similarity index 100% rename from Tools/LogParser/Examples/CommandLineExample/Sources/ParseLogFileCommand.swift rename to Tools/LogParserExample/Sources/LogParserExample/ParseLogFileCommand.swift diff --git a/Tools/LogParser/Examples/CommandLineExample/example.txt b/Tools/LogParserExample/example.txt similarity index 100% rename from Tools/LogParser/Examples/CommandLineExample/example.txt rename to Tools/LogParserExample/example.txt From d53216aa429a1cedac85f1ac63ed6446db2f5577 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Thu, 15 Dec 2022 17:25:09 -0300 Subject: [PATCH 2/8] Move the LogParser library and example app into a Library directory I intend to add other things at the top level of the Tools directory (like tools that actually make use of the LogParser library). --- .github/workflows/check.yml | 4 ++-- Tools/{ => Library}/LogParser/Package.swift | 0 Tools/{ => Library}/LogParser/README.md | 0 .../LogParser/Sources/LogParser/ExampleAppLogFile.swift | 0 .../LogParser/Sources/LogParser/ExampleAppSDKLogLine.swift | 0 .../LogParser/Sources/LogParser/SDKLogMessage.swift | 0 .../Tests/LogParserTests/ExampleAppLogFileTests.swift | 0 .../Tests/LogParserTests/ExampleAppSDKLogLineTests.swift | 0 .../LogParser/Tests/LogParserTests/SDKLogMessageTests.swift | 0 Tools/{ => Library}/LogParserExample/Package.resolved | 0 Tools/{ => Library}/LogParserExample/Package.swift | 0 Tools/{ => Library}/LogParserExample/README.md | 0 .../Sources/LogParserExample/ParseLogFileCommand.swift | 0 Tools/{ => Library}/LogParserExample/example.txt | 0 Tools/README.md | 5 +++++ 15 files changed, 7 insertions(+), 2 deletions(-) rename Tools/{ => Library}/LogParser/Package.swift (100%) rename Tools/{ => Library}/LogParser/README.md (100%) rename Tools/{ => Library}/LogParser/Sources/LogParser/ExampleAppLogFile.swift (100%) rename Tools/{ => Library}/LogParser/Sources/LogParser/ExampleAppSDKLogLine.swift (100%) rename Tools/{ => Library}/LogParser/Sources/LogParser/SDKLogMessage.swift (100%) rename Tools/{ => Library}/LogParser/Tests/LogParserTests/ExampleAppLogFileTests.swift (100%) rename Tools/{ => Library}/LogParser/Tests/LogParserTests/ExampleAppSDKLogLineTests.swift (100%) rename Tools/{ => Library}/LogParser/Tests/LogParserTests/SDKLogMessageTests.swift (100%) rename Tools/{ => Library}/LogParserExample/Package.resolved (100%) rename Tools/{ => Library}/LogParserExample/Package.swift (100%) rename Tools/{ => Library}/LogParserExample/README.md (100%) rename Tools/{ => Library}/LogParserExample/Sources/LogParserExample/ParseLogFileCommand.swift (100%) rename Tools/{ => Library}/LogParserExample/example.txt (100%) create mode 100644 Tools/README.md diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 4f94ab2b..fb4298ac 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -55,8 +55,8 @@ jobs: - name: Run LogParser tests run: swift test - working-directory: Tools/LogParser + working-directory: Tools/Library/LogParser - name: Build LogParserExample app run: swift build - working-directory: Tools/LogParserExample + working-directory: Tools/Library/LogParserExample diff --git a/Tools/LogParser/Package.swift b/Tools/Library/LogParser/Package.swift similarity index 100% rename from Tools/LogParser/Package.swift rename to Tools/Library/LogParser/Package.swift diff --git a/Tools/LogParser/README.md b/Tools/Library/LogParser/README.md similarity index 100% rename from Tools/LogParser/README.md rename to Tools/Library/LogParser/README.md diff --git a/Tools/LogParser/Sources/LogParser/ExampleAppLogFile.swift b/Tools/Library/LogParser/Sources/LogParser/ExampleAppLogFile.swift similarity index 100% rename from Tools/LogParser/Sources/LogParser/ExampleAppLogFile.swift rename to Tools/Library/LogParser/Sources/LogParser/ExampleAppLogFile.swift diff --git a/Tools/LogParser/Sources/LogParser/ExampleAppSDKLogLine.swift b/Tools/Library/LogParser/Sources/LogParser/ExampleAppSDKLogLine.swift similarity index 100% rename from Tools/LogParser/Sources/LogParser/ExampleAppSDKLogLine.swift rename to Tools/Library/LogParser/Sources/LogParser/ExampleAppSDKLogLine.swift diff --git a/Tools/LogParser/Sources/LogParser/SDKLogMessage.swift b/Tools/Library/LogParser/Sources/LogParser/SDKLogMessage.swift similarity index 100% rename from Tools/LogParser/Sources/LogParser/SDKLogMessage.swift rename to Tools/Library/LogParser/Sources/LogParser/SDKLogMessage.swift diff --git a/Tools/LogParser/Tests/LogParserTests/ExampleAppLogFileTests.swift b/Tools/Library/LogParser/Tests/LogParserTests/ExampleAppLogFileTests.swift similarity index 100% rename from Tools/LogParser/Tests/LogParserTests/ExampleAppLogFileTests.swift rename to Tools/Library/LogParser/Tests/LogParserTests/ExampleAppLogFileTests.swift diff --git a/Tools/LogParser/Tests/LogParserTests/ExampleAppSDKLogLineTests.swift b/Tools/Library/LogParser/Tests/LogParserTests/ExampleAppSDKLogLineTests.swift similarity index 100% rename from Tools/LogParser/Tests/LogParserTests/ExampleAppSDKLogLineTests.swift rename to Tools/Library/LogParser/Tests/LogParserTests/ExampleAppSDKLogLineTests.swift diff --git a/Tools/LogParser/Tests/LogParserTests/SDKLogMessageTests.swift b/Tools/Library/LogParser/Tests/LogParserTests/SDKLogMessageTests.swift similarity index 100% rename from Tools/LogParser/Tests/LogParserTests/SDKLogMessageTests.swift rename to Tools/Library/LogParser/Tests/LogParserTests/SDKLogMessageTests.swift diff --git a/Tools/LogParserExample/Package.resolved b/Tools/Library/LogParserExample/Package.resolved similarity index 100% rename from Tools/LogParserExample/Package.resolved rename to Tools/Library/LogParserExample/Package.resolved diff --git a/Tools/LogParserExample/Package.swift b/Tools/Library/LogParserExample/Package.swift similarity index 100% rename from Tools/LogParserExample/Package.swift rename to Tools/Library/LogParserExample/Package.swift diff --git a/Tools/LogParserExample/README.md b/Tools/Library/LogParserExample/README.md similarity index 100% rename from Tools/LogParserExample/README.md rename to Tools/Library/LogParserExample/README.md diff --git a/Tools/LogParserExample/Sources/LogParserExample/ParseLogFileCommand.swift b/Tools/Library/LogParserExample/Sources/LogParserExample/ParseLogFileCommand.swift similarity index 100% rename from Tools/LogParserExample/Sources/LogParserExample/ParseLogFileCommand.swift rename to Tools/Library/LogParserExample/Sources/LogParserExample/ParseLogFileCommand.swift diff --git a/Tools/LogParserExample/example.txt b/Tools/Library/LogParserExample/example.txt similarity index 100% rename from Tools/LogParserExample/example.txt rename to Tools/Library/LogParserExample/example.txt diff --git a/Tools/README.md b/Tools/README.md new file mode 100644 index 00000000..807a8b81 --- /dev/null +++ b/Tools/README.md @@ -0,0 +1,5 @@ +# Developer tools for the Ably Asset Tracking Swift SDKs + +This directory contains tooling intended to be used by developers working on the Ably Asset Tracking Swift SDKs. + +It currently just contains the [`Library`](Library) directory, which contains the [`LogParser` library](Library/LogParser) for parsing logs emitted by these SDKs, as well as [an example app for the `LogParser` library](Library/LogParserExample). From 73118404f8e216a11c3a0f33feff220be6aa4723 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Thu, 15 Dec 2022 16:28:14 -0300 Subject: [PATCH 3/8] Publisher example: Add a setting for logging LocationHistoryData JSON MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit While testing a fix for #425, I wanted to have access to the location history data in a log message. This adds a switch in a new "Developer settings" section of the Settings page, which when turned on will emit a JSON serialization of the location history data when it’s received from the SDK. It’s turned off by default, because it's only for my specific use case. --- .../Model/ObservablePublisher.swift | 18 +++++++++++++++++- .../Model/SettingsModel.swift | 9 +++++++++ .../View/Settings/SettingsView.swift | 9 +++++++++ .../ViewModel/CreatePublisherViewModel.swift | 2 +- .../ViewModel/SettingsViewModel.swift | 6 ++++++ 5 files changed, 42 insertions(+), 2 deletions(-) diff --git a/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Model/ObservablePublisher.swift b/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Model/ObservablePublisher.swift index cf08ec24..fb5231eb 100644 --- a/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Model/ObservablePublisher.swift +++ b/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Model/ObservablePublisher.swift @@ -1,9 +1,11 @@ import Combine import AblyAssetTrackingPublisher import Foundation +import Logging class ObservablePublisher: ObservableObject { private let publisher: AblyAssetTrackingPublisher.Publisher + private let logger: Logger? let configInfo: PublisherConfigInfo let locationHistoryDataHandler: LocationHistoryDataHandlerProtocol? @@ -22,11 +24,12 @@ class ObservablePublisher: ObservableObject { @Published private(set) var lastError: ErrorInformation? // After initialising an ObservablePublisher instance, you need to manually set the publisher’s delegate to the created instance. - init(publisher: AblyAssetTrackingPublisher.Publisher, configInfo: PublisherConfigInfo, locationHistoryDataHandler: LocationHistoryDataHandlerProtocol? = nil) { + init(publisher: AblyAssetTrackingPublisher.Publisher, configInfo: PublisherConfigInfo, locationHistoryDataHandler: LocationHistoryDataHandlerProtocol? = nil, logger: Logger? = nil) { self.publisher = publisher self.configInfo = configInfo self.routingProfile = publisher.routingProfile self.locationHistoryDataHandler = locationHistoryDataHandler + self.logger = logger } func stop(completion: @escaping ResultHandler) { @@ -89,6 +92,19 @@ extension ObservablePublisher: PublisherDelegate { } func publisher(sender: AblyAssetTrackingPublisher.Publisher, didFinishRecordingLocationHistoryData locationHistoryData: LocationHistoryData) { + if SettingsModel.shared.logLocationHistoryJSON { + do { + let jsonData = try JSONEncoder().encode(locationHistoryData) + if let jsonString = String(data: jsonData, encoding: .utf8) { + logger?.log(level: .debug, "Received location history data: \(jsonString)") + } else { + logger?.log(level: .error, "Failed to convert location history data to string") + } + } catch { + logger?.log(level: .error, "Failed to serialize location history data to JSON: \(error.localizedDescription)") + } + } + locationHistoryDataHandler?.handleLocationHistoryData(locationHistoryData) } diff --git a/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Model/SettingsModel.swift b/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Model/SettingsModel.swift index e822d2d6..850d09bf 100644 --- a/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Model/SettingsModel.swift +++ b/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Model/SettingsModel.swift @@ -67,6 +67,15 @@ class SettingsModel { } } + var logLocationHistoryJSON: Bool { + get { + UserDefaults.standard.bool(forKey: "logLocationHistoryJSON") + } + set { + UserDefaults.standard.set(newValue, forKey: "logLocationHistoryJSON") + } + } + var vehicleProfile: VehicleProfile { get { guard let profile: VehicleProfile = UserDefaults.standard.get("vehicleProfile") else { diff --git a/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/View/Settings/SettingsView.swift b/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/View/Settings/SettingsView.swift index b87471ce..b6e0b4dd 100644 --- a/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/View/Settings/SettingsView.swift +++ b/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/View/Settings/SettingsView.swift @@ -45,6 +45,15 @@ struct SettingsView: View { } header: { Text("Other settings") } + + Section { + Toggle(isOn: $viewModel.logLocationHistoryJSON) { + Text("Log location history JSON") + Text("Causes the app to emit a `debug` level log message when a `LocationHistoryData` is received from the Asset Tracking SDK. The log message will contain a JSON serialization of this history data.") + } + } header: { + Text("Developer settings") + } } .listStyle(.grouped) .navigationBarTitle("Settings") diff --git a/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/ViewModel/CreatePublisherViewModel.swift b/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/ViewModel/CreatePublisherViewModel.swift index 977c9799..db7b3c6c 100644 --- a/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/ViewModel/CreatePublisherViewModel.swift +++ b/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/ViewModel/CreatePublisherViewModel.swift @@ -136,7 +136,7 @@ class CreatePublisherViewModel: ObservableObject { let configInfo = ObservablePublisher.PublisherConfigInfo(areRawLocationsEnabled: areRawLocationsEnabled, constantResolution: constantResolution) - let observablePublisher = ObservablePublisher(publisher: publisher, configInfo: configInfo, locationHistoryDataHandler: locationHistoryDataHandler) + let observablePublisher = ObservablePublisher(publisher: publisher, configInfo: configInfo, locationHistoryDataHandler: locationHistoryDataHandler, logger: logger) publisher.delegate = observablePublisher return observablePublisher diff --git a/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/ViewModel/SettingsViewModel.swift b/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/ViewModel/SettingsViewModel.swift index 6ccee8ba..e7b755b6 100644 --- a/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/ViewModel/SettingsViewModel.swift +++ b/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/ViewModel/SettingsViewModel.swift @@ -9,6 +9,12 @@ class SettingsViewModel: ObservableObject { } } + @Published var logLocationHistoryJSON: Bool = SettingsModel.shared.logLocationHistoryJSON { + didSet { + SettingsModel.shared.logLocationHistoryJSON = logLocationHistoryJSON + } + } + @Published var defaultResolutionMinimumDisplacement: String = "\(SettingsModel.shared.defaultResolution.minimumDisplacement)" @Published var defaultResolutionDesiredInterval: String = "\(SettingsModel.shared.defaultResolution.desiredInterval)" From 338c7014010ffb9e30f43e1071e8f245170224b3 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Thu, 15 Dec 2022 12:11:13 -0300 Subject: [PATCH 4/8] DRY up logging code in example apps --- .../Logger/PublisherLogger.swift | 23 ++++++++++--------- .../Screens/Logging/SubscriberLogger.swift | 23 ++++++++++--------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Logger/PublisherLogger.swift b/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Logger/PublisherLogger.swift index 6d335e73..23933e7e 100644 --- a/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Logger/PublisherLogger.swift +++ b/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Logger/PublisherLogger.swift @@ -11,17 +11,18 @@ class PublisherLogger: AblyAssetTrackingCore.LogHandler { func logMessage(level: LogLevel, message: String, error: Error?) { let errorString = error?.localizedDescription - switch level { - case .verbose: - logger.log(level: .trace, "\(message). \(errorString ?? "")") - case .info: - logger.log(level: .info, "\(message). \(errorString ?? "")") - case .debug: - logger.log(level: .debug, "\(message). \(errorString ?? "")") - case .warn: - logger.log(level: .warning, "\(message). \(errorString ?? "")") - case .error: - logger.log(level: .error, "\(message). \(errorString ?? "")") + logger.log(level: level.swiftLogLevel, "\(message). \(errorString ?? "")") + } +} + +private extension LogLevel { + var swiftLogLevel: Logger.Level { + switch self { + case .verbose: return .trace + case .info: return .info + case .debug: return .debug + case .warn: return .warning + case .error: return .error } } } diff --git a/Examples/SubscriberExample/Sources/Screens/Logging/SubscriberLogger.swift b/Examples/SubscriberExample/Sources/Screens/Logging/SubscriberLogger.swift index fa517cc8..beb66eb0 100644 --- a/Examples/SubscriberExample/Sources/Screens/Logging/SubscriberLogger.swift +++ b/Examples/SubscriberExample/Sources/Screens/Logging/SubscriberLogger.swift @@ -11,17 +11,18 @@ class SubscriberLogger: AblyAssetTrackingCore.LogHandler { func logMessage(level: LogLevel, message: String, error: Error?) { let errorString = error?.localizedDescription - switch level { - case .verbose: - logger.log(level: .trace, "\(message). \(errorString ?? "")") - case .info: - logger.log(level: .info, "\(message). \(errorString ?? "")") - case .debug: - logger.log(level: .debug, "\(message). \(errorString ?? "")") - case .warn: - logger.log(level: .warning, "\(message). \(errorString ?? "")") - case .error: - logger.log(level: .error, "\(message). \(errorString ?? "")") + logger.log(level: level.swiftLogLevel, "\(message). \(errorString ?? "")") + } +} + +private extension LogLevel { + var swiftLogLevel: Logger.Level { + switch self { + case .verbose: return .trace + case .info: return .info + case .debug: return .debug + case .warn: return .warning + case .error: return .error } } } From 476ba0c8ef344b1ec749c148a145bc8bc847656e Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Thu, 15 Dec 2022 12:41:31 -0300 Subject: [PATCH 5/8] LogParser: Properly extract the message and error description from example app logs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This removes this caveat from ExampleAppSDKLogLine#message: > The ``SDKLogMessage/message`` of this value is not necessarily the exact > value that was passed as the `message` argument of > AblyAssetTrackingCore’s `LogHandler.logMessage(level:message:error:)`. > It may contain a suffix added by the example apps’ log handlers, to add > a trailing full stop and information about the `error` argument. Now, #message contains the exact value passed as the `message` argument to `LogHandler.logMessage(level:message:error:)`, and #errorDescription contains the localizedDescription of the error passed as the `error` argument to that method. I want access to the exact log message emitted by the SDK, without any additional characters, so that I can for example emit some JSON in a log message from the SDK and then parse this JSON in an app that reads the logs. --- .../Logger/PublisherLogger.swift | 13 ++++++- .../Screens/Logging/SubscriberLogger.swift | 13 ++++++- .../LogParser/ExampleAppSDKLogLine.swift | 37 ++++++++++++++++--- .../ExampleAppLogFileTests.swift | 17 +++++++-- .../ExampleAppSDKLogLineTests.swift | 22 +++++++++-- Tools/Library/LogParserExample/example.txt | 5 ++- 6 files changed, 87 insertions(+), 20 deletions(-) diff --git a/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Logger/PublisherLogger.swift b/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Logger/PublisherLogger.swift index 23933e7e..9cff1551 100644 --- a/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Logger/PublisherLogger.swift +++ b/Examples/PublisherExampleSwiftUI/PublisherExampleSwiftUI/Logger/PublisherLogger.swift @@ -10,8 +10,17 @@ class PublisherLogger: AblyAssetTrackingCore.LogHandler { } func logMessage(level: LogLevel, message: String, error: Error?) { - let errorString = error?.localizedDescription - logger.log(level: level.swiftLogLevel, "\(message). \(errorString ?? "")") + let prefix: String + + if let error = error { + // The LogParser library needs to be able to extract the error description from the log message; for this reason we emit its length + let errorDescription = error.localizedDescription + prefix = "[error(len:\(errorDescription.count)): \(errorDescription)] " + } else { + prefix = "[noError] " + } + + logger.log(level: level.swiftLogLevel, "\(prefix)\(message)") } } diff --git a/Examples/SubscriberExample/Sources/Screens/Logging/SubscriberLogger.swift b/Examples/SubscriberExample/Sources/Screens/Logging/SubscriberLogger.swift index beb66eb0..83e70f5a 100644 --- a/Examples/SubscriberExample/Sources/Screens/Logging/SubscriberLogger.swift +++ b/Examples/SubscriberExample/Sources/Screens/Logging/SubscriberLogger.swift @@ -10,8 +10,17 @@ class SubscriberLogger: AblyAssetTrackingCore.LogHandler { } func logMessage(level: LogLevel, message: String, error: Error?) { - let errorString = error?.localizedDescription - logger.log(level: level.swiftLogLevel, "\(message). \(errorString ?? "")") + let prefix: String + + if let error = error { + // The LogParser library needs to be able to extract the error description from the log message; for this reason we emit its length + let errorDescription = error.localizedDescription + prefix = "[error(len:\(errorDescription.count)): \(errorDescription)] " + } else { + prefix = "[noError] " + } + + logger.log(level: level.swiftLogLevel, "\(prefix)\(message)") } } diff --git a/Tools/Library/LogParser/Sources/LogParser/ExampleAppSDKLogLine.swift b/Tools/Library/LogParser/Sources/LogParser/ExampleAppSDKLogLine.swift index 784f1754..4c98cfce 100644 --- a/Tools/Library/LogParser/Sources/LogParser/ExampleAppSDKLogLine.swift +++ b/Tools/Library/LogParser/Sources/LogParser/ExampleAppSDKLogLine.swift @@ -6,15 +6,17 @@ public struct ExampleAppSDKLogLine: Equatable { public var timestamp: Date /// The log level described by the log line. public var logLevel: String - /// The remainder of the log line. - /// - /// > Note: The ``SDKLogMessage/message`` of this value is not necessarily the exact value that was passed as the `message` argument of AblyAssetTrackingCore’s `LogHandler.logMessage(level:message:error:)`. It may contain a suffix added by the example apps’ log handlers, to add a trailing full stop and information about the `error` argument. - /// - /// Future versions of this library might address this issue. + /// The message received from the Asset Tracking SDK. public var message: SDKLogMessage + /// The `localizedDescription` of the error received from the Asset Tracking SDK, if any. + public var errorMessage: String? public enum ParseError: Error { case generalError + case missingErrorMarker + case missingErrorMessageLength + case missingErrorLengthTerminator + case missingErrorTerminator } private static let isoDateFormatter = { @@ -52,13 +54,36 @@ public struct ExampleAppSDKLogLine: Equatable { throw ParseError.generalError } + if scanner.scanString("[noError] ") != nil { + self.errorMessage = nil + } else if scanner.scanString("[error(len:") != nil { + var errorMessageLength = 0 + guard scanner.scanInt(&errorMessageLength) else { + throw ParseError.missingErrorMessageLength + } + guard scanner.scanString("): ") != nil else { + throw ParseError.missingErrorLengthTerminator + } + + let errorMessageEndIndex = line.index(scanner.currentIndex, offsetBy: errorMessageLength) + self.errorMessage = String(line[scanner.currentIndex.. Date: Wed, 30 Nov 2022 18:19:55 -0300 Subject: [PATCH 6/8] Try to reduce time taken to get a trackable online MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I noticed that on a stationary device, or on a simulator set to simulate a static location, the first trackable added would come online almost immediately, but subsequent ones would not come online or sometimes would come online after a long delay. This is because a trackable will not come online until, after the trackable is added, we receive a location update from LocationService. The frequency of location updates from PassiveLocationManager is determined by that of CLLocationManager, which usually only emits location updates when the device has moved a sufficient distance (where “sufficient” is determined by the publisher’s resolution policy). So, we provide a mechanism for the publisher to request a location update from CLLocationManager independently of the device’s motion, and we request a location update when any trackable (except for the first) is added. It’s probably worth also explaining how Android behaves in this scenario and why. My notes here are based on the codebase at commit 3a0d833. There are two different things that happen in the Android asset tracking SDK, either of which has the side effect of causing the publisher to receive a location update when a new trackable is added: 1. The publisher calls DefaultMapbox.changeResolution, which in turn ends up removing and re-adding all of (Google SDK) FusedLocationProviderClient’s location observers (via its requestLocationUpdates method). The documentation for FusedLocationProviderClient.requestLocationUpdates implies that observers will always receive a location update after this method is called (although it might be an old location). 2. (Only in the case where the added trackable is set as the active trackable – i.e. when it is added using .track and not .add) The publisher calls DefaultMapbox.clearRoute, which calls (Mapbox SDK) MapboxNavigation.setNavigationRoutes. Through some process that I haven’t looked into, this ends up calling (Mapbox SDK) MapboxTripSession.kt’s navigatorObserver’s onStatus, which makes an explicit call to updateLocationMatcherResult, which emits a location update. I think that the solution I’ve implemented for iOS turns Android side effect 1 into an explicit behaviour. Closes #425. --- .../DefaultPublisher.swift | 8 ++++- .../Services/DefaultLocationService.swift | 11 +++++++ .../Services/LocationService.swift | 2 ++ .../DefaultPublisherTests.swift | 33 +++++++++++++++++++ .../Mocks/MockLocationService.swift | 5 +++ 5 files changed, 58 insertions(+), 1 deletion(-) diff --git a/Sources/AblyAssetTrackingPublisher/DefaultPublisher.swift b/Sources/AblyAssetTrackingPublisher/DefaultPublisher.swift index 34e94e20..33b01003 100644 --- a/Sources/AblyAssetTrackingPublisher/DefaultPublisher.swift +++ b/Sources/AblyAssetTrackingPublisher/DefaultPublisher.swift @@ -263,12 +263,18 @@ extension DefaultPublisher { ablyPublisher.subscribeForChannelStateChange(trackable: event.trackable) trackables.insert(event.trackable) - //Start updating location only after the first trackable if (trackables.count == 1){ + //Start updating location only after the first trackable locationService.startRecordingLocation() locationService.startUpdatingLocation() + } else { + // We do this to increase the chances of receiving an enhanced location update for this trackable, so that the trackable can move into the online connection state as quickly as possible (see the hasSentAtLeastOneLocation check inside handleConnectionStateChange). + + // If we did not do this, then (since startUpdatingLocation has already been called on the location service) in the case of a slowly-moving or stationary device, the trackable would not move into the online connection state until the device had moved a distance deemed worthy (by the resolution policy) of a new location update. + locationService.requestLocationUpdate() } resolveResolution(trackable: event.trackable) + hooks.trackables?.onTrackableAdded(trackable: event.trackable) event.completion.handleSuccess() duplicateTrackableGuard.finishAddingTrackableWithId(event.trackable.id, result: .success) diff --git a/Sources/AblyAssetTrackingPublisher/Services/DefaultLocationService.swift b/Sources/AblyAssetTrackingPublisher/Services/DefaultLocationService.swift index 3db4a6b9..80a92fa1 100644 --- a/Sources/AblyAssetTrackingPublisher/Services/DefaultLocationService.swift +++ b/Sources/AblyAssetTrackingPublisher/Services/DefaultLocationService.swift @@ -72,6 +72,17 @@ class DefaultLocationService: LocationService { locationManager.systemLocationManager.stopUpdatingLocation() } + func requestLocationUpdate() { + /* + From reading the ``CLLocationManager/startUpdatingLocation`` documentation, this seems to be the only programmatic way to provoke it into emitting a location event: + + > Calling this method several times in succession does not automatically result in new events being generated. Calling stopUpdatingLocation() in between, however, does cause a new initial event to be sent the next time you call this method. + */ + logHandler?.debug(message: "Received requestLocationUpdate", error: nil) + locationManager.systemLocationManager.stopUpdatingLocation() + locationManager.systemLocationManager.startUpdatingLocation() + } + enum LocationHistoryTemporaryStorageConfiguration { private static let fileManager = FileManager.default diff --git a/Sources/AblyAssetTrackingPublisher/Services/LocationService.swift b/Sources/AblyAssetTrackingPublisher/Services/LocationService.swift index b2135541..d25b5bde 100644 --- a/Sources/AblyAssetTrackingPublisher/Services/LocationService.swift +++ b/Sources/AblyAssetTrackingPublisher/Services/LocationService.swift @@ -19,4 +19,6 @@ protocol LocationService: AnyObject { func startRecordingLocation() func stopRecordingLocation(completion: @escaping ResultHandler) func changeLocationEngineResolution(resolution: Resolution) + /// Requests that the location service emit a new location update as soon as possible. The location service will make a best effort to ensure that, shortly after this method is called, its delegate receives a ``LocationServiceDelegate/locationService(sender:didUpdateRawLocationUpdate)`` and ``LocationServiceDelegate/locationService(sender:didUpdateEnhancedLocationUpdate)`` event. + func requestLocationUpdate() } diff --git a/Tests/PublisherTests/DefaultPublisher/DefaultPublisherTests.swift b/Tests/PublisherTests/DefaultPublisher/DefaultPublisherTests.swift index 2989ad32..971c05d6 100644 --- a/Tests/PublisherTests/DefaultPublisher/DefaultPublisherTests.swift +++ b/Tests/PublisherTests/DefaultPublisher/DefaultPublisherTests.swift @@ -289,6 +289,39 @@ class DefaultPublisherTests: XCTestCase { XCTAssertEqual(publisher.activeTrackable, trackable) } + func testAddSecondTrackable_callsRequestLocationUpdateOnLocationService() { + ablyPublisher.connectCompletionHandler = { completion in completion?(.success) } + let expectation = XCTestExpectation() + expectation.expectedFulfillmentCount = 2 + + // When tracking a trackable + publisher.add(trackable: trackable) { result in + switch result { + case .success: + expectation.fulfill() + case .failure: + XCTFail("Failure callback shouldn't be called") + } + } + + // It should not yet have called requestLocationUpdate on the location service + XCTAssertFalse(locationService.requestLocationUpdateCalled) + + // And then adding another trackable + publisher.add(trackable: Trackable(id: "TestAddedTrackableId1")) { result in + switch result { + case .success: + expectation.fulfill() + case .failure: + XCTFail("Failure callback shouldn't be called") + } + } + wait(for: [expectation], timeout: 5.0) + + // It should call requestLocationUpdate on the location service + XCTAssertTrue(locationService.requestLocationUpdateCalled) + } + func testAdd_track_error() { let errorInformation = ErrorInformation(type: .publisherError(errorMessage: "Test AblyPublisherService error")) ablyPublisher.connectCompletionHandler = { completion in completion?(.failure(errorInformation)) } diff --git a/Tests/Support/AblyAssetTrackingPublisherTesting/Mocks/MockLocationService.swift b/Tests/Support/AblyAssetTrackingPublisherTesting/Mocks/MockLocationService.swift index e01850b8..6c87947c 100644 --- a/Tests/Support/AblyAssetTrackingPublisherTesting/Mocks/MockLocationService.swift +++ b/Tests/Support/AblyAssetTrackingPublisherTesting/Mocks/MockLocationService.swift @@ -40,4 +40,9 @@ public class MockLocationService: LocationService { stopRecordingLocationParamCompletion = completion stopRecordingLocationCallback?(completion) } + + public var requestLocationUpdateCalled = false + public func requestLocationUpdate() { + requestLocationUpdateCalled = true + } } From 0551af751c7b55aac634947fec98556ee00c69ba Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Thu, 15 Dec 2022 15:41:37 -0300 Subject: [PATCH 7/8] Log when we receive a location update from Mapbox I need this logging to help me analyse the impact of the change in a73e823. --- .../Services/DefaultLocationService.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Sources/AblyAssetTrackingPublisher/Services/DefaultLocationService.swift b/Sources/AblyAssetTrackingPublisher/Services/DefaultLocationService.swift index 80a92fa1..427075c6 100644 --- a/Sources/AblyAssetTrackingPublisher/Services/DefaultLocationService.swift +++ b/Sources/AblyAssetTrackingPublisher/Services/DefaultLocationService.swift @@ -176,6 +176,7 @@ extension DefaultLocationService: PassiveLocationManagerDelegate { } func passiveLocationManager(_ manager: PassiveLocationManager, didUpdateLocation location: CLLocation, rawLocation: CLLocation) { + logHandler?.debug(message: "passiveLocationManager.didUpdateLocation", error: nil) delegate?.locationService(sender: self, didUpdateRawLocationUpdate: RawLocationUpdate(location: rawLocation.toLocation())) delegate?.locationService(sender: self, didUpdateEnhancedLocationUpdate: EnhancedLocationUpdate(location: location.toLocation())) } From 206024d23c72777bf91f4e9c1118c27a44ac6a41 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Tue, 6 Dec 2022 10:25:15 -0300 Subject: [PATCH 8/8] Add script to emit CSV with frequency of location updates This is intended to help me analyse the impact of the change in a73e823. --- .github/workflows/check.yml | 4 + .../Package.resolved | 14 + .../Package.swift | 24 + .../AnalyzeLocationEventFrequencies/README.md | 57 + .../AnalyzeLocationEventFrequencies/CSV.swift | 15 + .../Event.swift | 54 + .../EventWithCalculations.swift | 41 + .../LocationHistoryData.swift | 15 + .../LogLine.swift | 43 + .../ParseLogFileCommand.swift | 21 + .../example.txt | 1564 +++++++++++++++++ Tools/README.md | 5 +- 12 files changed, 1856 insertions(+), 1 deletion(-) create mode 100644 Tools/Analysis/AnalyzeLocationEventFrequencies/Package.resolved create mode 100644 Tools/Analysis/AnalyzeLocationEventFrequencies/Package.swift create mode 100644 Tools/Analysis/AnalyzeLocationEventFrequencies/README.md create mode 100644 Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/CSV.swift create mode 100644 Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/Event.swift create mode 100644 Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/EventWithCalculations.swift create mode 100644 Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/LocationHistoryData.swift create mode 100644 Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/LogLine.swift create mode 100644 Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/ParseLogFileCommand.swift create mode 100644 Tools/Analysis/AnalyzeLocationEventFrequencies/example.txt diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index fb4298ac..64778d2f 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -60,3 +60,7 @@ jobs: - name: Build LogParserExample app run: swift build working-directory: Tools/Library/LogParserExample + + - name: Build AnalyzeLocationEventFrequencies app + run: swift build + working-directory: Tools/Analysis/AnalyzeLocationEventFrequencies diff --git a/Tools/Analysis/AnalyzeLocationEventFrequencies/Package.resolved b/Tools/Analysis/AnalyzeLocationEventFrequencies/Package.resolved new file mode 100644 index 00000000..6f189b39 --- /dev/null +++ b/Tools/Analysis/AnalyzeLocationEventFrequencies/Package.resolved @@ -0,0 +1,14 @@ +{ + "pins" : [ + { + "identity" : "swift-argument-parser", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-argument-parser", + "state" : { + "revision" : "fddd1c00396eed152c45a46bea9f47b98e59301d", + "version" : "1.2.0" + } + } + ], + "version" : 2 +} diff --git a/Tools/Analysis/AnalyzeLocationEventFrequencies/Package.swift b/Tools/Analysis/AnalyzeLocationEventFrequencies/Package.swift new file mode 100644 index 00000000..1b82849e --- /dev/null +++ b/Tools/Analysis/AnalyzeLocationEventFrequencies/Package.swift @@ -0,0 +1,24 @@ +// swift-tools-version: 5.7 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "AnalyzeLocationEventFrequencies", + platforms: [ + .macOS(.v12) + ], + dependencies: [ + .package(url: "https://github.com/apple/swift-argument-parser", from: "1.2.0"), + .package(path: "../../Library/LogParser") + ], + targets: [ + .executableTarget( + name: "AnalyzeLocationEventFrequencies", + dependencies: [ + .product(name: "LogParser", package: "LogParser"), + .product(name: "ArgumentParser", package: "swift-argument-parser") + ] + ), + ] +) diff --git a/Tools/Analysis/AnalyzeLocationEventFrequencies/README.md b/Tools/Analysis/AnalyzeLocationEventFrequencies/README.md new file mode 100644 index 00000000..eeb1d8f9 --- /dev/null +++ b/Tools/Analysis/AnalyzeLocationEventFrequencies/README.md @@ -0,0 +1,57 @@ +# AnalyzeLocationEventFrequencies + +This script is intended to help analyse the impact of restarting `CLLocationManager` each time `AblyAssetTrackingPublisher.DefaultLocationManager`’s `requestLocationUpdate` is called, specifically whether it negatively impacts: + +- the frequency at which the SDK receives location updates +- the Mapbox SDK’s location recording + +You can run it on a file containing log output from the publisher example app by running the following command from the current directory: + +```bash +swift run AnalyzeLocationEventFrequencies +``` + +There is an example log file `example.txt` that you can try this out on. It produces a CSV with contents like this: + +|Timestamp (ISO 8601) |Event type |Time since last location update|Time since last recorded location| +|------------------------|-----------------------|-------------------------------|---------------------------------| +|2022-12-15T19:52:19.421Z|Recorded location | | | +|2022-12-15T19:52:20.035Z|Location update | | | +|2022-12-15T19:52:32.429Z|Recorded location | |13.007 | +|2022-12-15T19:52:32.443Z|Location update |12.408 | | +|2022-12-15T19:52:38.433Z|Recorded location | |6.004 | +|2022-12-15T19:52:38.441Z|Location update |5.998 | | +|2022-12-15T19:52:43.423Z|Recorded location | |4.990 | +|2022-12-15T19:52:43.439Z|Location update |4.998 | | +|2022-12-15T19:52:47.419Z|Recorded location | |3.996 | +|2022-12-15T19:52:47.434Z|Location update |3.995 | | +|2022-12-15T19:52:51.421Z|Recorded location | |4.002 | +|2022-12-15T19:52:51.442Z|Location update |4.008 | | +|2022-12-15T19:52:53.428Z|Recorded location | |2.007 | +|2022-12-15T19:52:53.603Z|Request location update| | | +|2022-12-15T19:52:53.615Z|Location update |2.173 | | +|2022-12-15T19:52:57.420Z|Recorded location | |3.992 | +|2022-12-15T19:52:57.429Z|Location update |3.814 | | +|2022-12-15T19:53:01.427Z|Recorded location | |4.007 | +|2022-12-15T19:53:01.433Z|Location update |4.004 | | +|2022-12-15T19:53:04.429Z|Recorded location | |3.002 | +|2022-12-15T19:53:04.445Z|Location update |3.012 | | +|2022-12-15T19:53:07.434Z|Recorded location | |3.005 | +|2022-12-15T19:53:07.447Z|Location update |3.002 | | +|2022-12-15T19:53:10.433Z|Recorded location | |2.999 | +|2022-12-15T19:53:10.443Z|Location update |2.996 | | +|2022-12-15T19:53:11.424Z|Recorded location | |0.991 | +|2022-12-15T19:53:11.923Z|Request location update| | | +|2022-12-15T19:53:11.928Z|Location update |1.485 | | +|2022-12-15T19:53:15.418Z|Recorded location | |3.994 | +|2022-12-15T19:53:15.433Z|Location update |3.505 | | +|2022-12-15T19:53:19.424Z|Recorded location | |4.006 | +|2022-12-15T19:53:19.439Z|Location update |4.006 | | +|2022-12-15T19:53:23.433Z|Recorded location | |4.010 | +|2022-12-15T19:53:23.448Z|Location update |4.009 | | +|2022-12-15T19:53:26.420Z|Recorded location | |2.987 | +|2022-12-15T19:53:26.436Z|Location update |2.988 | | +|2022-12-15T19:53:29.429Z|Recorded location | |3.009 | +|2022-12-15T19:53:29.445Z|Location update |3.009 | | +|2022-12-15T19:53:33.429Z|Recorded location | |4.000 | +|2022-12-15T19:53:33.443Z|Location update |3.998 | | diff --git a/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/CSV.swift b/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/CSV.swift new file mode 100644 index 00000000..d25a93c1 --- /dev/null +++ b/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/CSV.swift @@ -0,0 +1,15 @@ +protocol CSVRowConvertible { + var csvRows: [String] { get } +} + +protocol CSVRowWithColumnNamesConvertible: CSVRowConvertible { + static var csvHeaders: [String] { get } +} + +enum CSVExport { + // A very rudimentary CSV export that does no quoting or escaping or anything like that. + static func export(rows: [T]) -> String { + let csvRowStrings = ([T.csvHeaders] + rows.map(\.csvRows)).map { $0.joined(separator: ",") } + return csvRowStrings.joined(separator: "\n") + } +} diff --git a/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/Event.swift b/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/Event.swift new file mode 100644 index 00000000..32e5e3bd --- /dev/null +++ b/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/Event.swift @@ -0,0 +1,54 @@ +import Foundation + +struct Event: Comparable, CSVRowWithColumnNamesConvertible { + var timestamp: Date + var type: EventType + + enum EventType: CSVRowWithColumnNamesConvertible, Hashable { + case locationUpdate + case requestLocationUpdate + case recordedLocation + + static var csvHeaders: [String] { + return ["Event type"] + } + + var csvRows: [String] { + switch self { + case .locationUpdate: + return ["Location update"] + case .requestLocationUpdate: + return ["Request location update"] + case .recordedLocation: + return ["Recorded location"] + } + } + } + + static func < (lhs: Event, rhs: Event) -> Bool { + return lhs.timestamp < rhs.timestamp + } + + static func fromLogLine(_ logLine: LogLine) -> [Self] { + switch logLine { + case let .locationUpdate(timestamp): + return [.init(timestamp: timestamp, type: .locationUpdate)] + case let .requestLocationUpdate(timestamp): + return [.init(timestamp: timestamp, type: .requestLocationUpdate)] + case let .locationHistoryData(locationHistoryData): + return locationHistoryData.events.map { event in + return .init(timestamp: Date(timeIntervalSince1970: event.properties.time), type: .recordedLocation) + } + } + } + + static var csvHeaders: [String] { + return ["Timestamp (ISO 8601)"] + EventType.csvHeaders + } + + var csvRows: [String] { + let formatter = ISO8601DateFormatter() + formatter.formatOptions = [.withFractionalSeconds, .withInternetDateTime] + return [formatter.string(from: timestamp)] + type.csvRows + } +} diff --git a/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/EventWithCalculations.swift b/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/EventWithCalculations.swift new file mode 100644 index 00000000..fe91e614 --- /dev/null +++ b/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/EventWithCalculations.swift @@ -0,0 +1,41 @@ +import Foundation + +struct EventWithCalculations: CSVRowWithColumnNamesConvertible { + var event: Event + var timeSinceLastOfType: TimeInterval? + + static func fromEvents(_ events: [Event]) -> [EventWithCalculations] { + var lastTimestamps: [Event.EventType : Date] = [:] + + return events.map { event in + let timeSinceLastOfType: TimeInterval? + if let lastTimestamp = lastTimestamps[event.type] { + timeSinceLastOfType = event.timestamp.timeIntervalSince(lastTimestamp) + } else { + timeSinceLastOfType = nil + } + + lastTimestamps[event.type] = event.timestamp + + return .init(event: event, timeSinceLastOfType: timeSinceLastOfType) + } + } + + static var csvHeaders: [String] { + return Event.csvHeaders + ["Time since last location update", "Time since last recorded location"] + } + + var csvRows: [String] { + let formattedTimeSinceLastOfType: String + if let timeSinceLastOfType { + formattedTimeSinceLastOfType = String(format: "%.3f", timeSinceLastOfType) + } else { + formattedTimeSinceLastOfType = "" + } + + return event.csvRows + [ + event.type == .locationUpdate ? formattedTimeSinceLastOfType : "", + event.type == .recordedLocation ? formattedTimeSinceLastOfType : "" + ] + } +} diff --git a/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/LocationHistoryData.swift b/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/LocationHistoryData.swift new file mode 100644 index 00000000..7bab507d --- /dev/null +++ b/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/LocationHistoryData.swift @@ -0,0 +1,15 @@ +/// A subset of AblyAssetTrackingCore’s same type. +struct LocationHistoryData: Codable { + var events: [GeoJSONMessage] + + struct GeoJSONMessage: Codable { + var properties: GeoJSONProperties + + struct GeoJSONProperties: Codable { + /** + Timestamp from a moment when measurment was done (in seconds since 1st of January 1970) + */ + let time: Double + } + } +} diff --git a/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/LogLine.swift b/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/LogLine.swift new file mode 100644 index 00000000..8a5cfa79 --- /dev/null +++ b/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/LogLine.swift @@ -0,0 +1,43 @@ +import Foundation +import LogParser + +enum LogLine { + case locationUpdate(timestamp: Date) + case requestLocationUpdate(timestamp: Date) + case locationHistoryData(LocationHistoryData) + + private struct KnownLogMessage { + var lastSubsystem: String + var prefix: String + + static let locationUpdate = Self(lastSubsystem: "DefaultLocationService", prefix: "passiveLocationManager.didUpdateLocation") + static let requestLocationUpdate = Self(lastSubsystem: "DefaultLocationService", prefix: "Received requestLocationUpdate") + + func matches(_ exampleAppSDKLine: ExampleAppSDKLogLine) -> Bool { + return exampleAppSDKLine.message.subsystems.last == lastSubsystem && exampleAppSDKLine.message.message.hasPrefix(prefix) + } + } + + init?(exampleAppLine: ExampleAppLogFile.Line) { + switch exampleAppLine { + case let .other(line): + let prefix = "Received location history data: " + guard let prefixRange = line.range(of: prefix) else { + return nil + } + + let jsonString = line[prefixRange.upperBound...] + let jsonData = jsonString.data(using: .utf8)! + let locationHistoryData = try! JSONDecoder().decode(LocationHistoryData.self, from: jsonData) + self = .locationHistoryData(locationHistoryData) + case let .sdk(exampleAppSDKLine): + if KnownLogMessage.locationUpdate.matches(exampleAppSDKLine) { + self = .locationUpdate(timestamp: exampleAppSDKLine.timestamp) + } else if KnownLogMessage.requestLocationUpdate.matches(exampleAppSDKLine) { + self = .requestLocationUpdate(timestamp: exampleAppSDKLine.timestamp) + } else { + return nil + } + } + } +} diff --git a/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/ParseLogFileCommand.swift b/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/ParseLogFileCommand.swift new file mode 100644 index 00000000..2c4a7dc6 --- /dev/null +++ b/Tools/Analysis/AnalyzeLocationEventFrequencies/Sources/AnalyzeLocationEventFrequencies/ParseLogFileCommand.swift @@ -0,0 +1,21 @@ +import ArgumentParser +import LogParser +import Foundation + +@main struct ParseLogFile: ParsableCommand { + @Argument(help: "The path to the example app log file.") + var input: String + + mutating func run() throws { + let url = URL(fileURLWithPath: input) + let data = try Data(contentsOf: url) + let logFile = try ExampleAppLogFile(data: data) + + let lines = logFile.lines.compactMap { LogLine(exampleAppLine: $0) } + let events = lines.flatMap { Event.fromLogLine($0) }.sorted() + let eventsWithCalculations = EventWithCalculations.fromEvents(events) + + let csv = CSVExport.export(rows: eventsWithCalculations) + print(csv) + } +} diff --git a/Tools/Analysis/AnalyzeLocationEventFrequencies/example.txt b/Tools/Analysis/AnalyzeLocationEventFrequencies/example.txt new file mode 100644 index 00000000..21171873 --- /dev/null +++ b/Tools/Analysis/AnalyzeLocationEventFrequencies/example.txt @@ -0,0 +1,1564 @@ +2022-12-15 16:52:07.897840-0300 PublisherExampleSwiftUI[25086:2129708] [Mapbox] [Info, common]: Using Mapbox Common SDK v23.1.0(c88f279af) +2022-12-15 16:52:07.901698-0300 PublisherExampleSwiftUI[25086:2129708] [Mapbox] [Info, maps-core]: Using Mapbox Core Maps SDK v10.9.0(10541225b5) +2022-12-15 16:52:07.991838-0300 PublisherExampleSwiftUI[25086:2129708] [SceneConfiguration] Info.plist contained no UIScene configuration dictionary (looking for configuration named "(no name)") +2022-12-15 16:52:07.991923-0300 PublisherExampleSwiftUI[25086:2129708] [SceneConfiguration] Info.plist contained no UIScene configuration dictionary (looking for configuration named "(no name)") +2022-12-15 16:52:07.991986-0300 PublisherExampleSwiftUI[25086:2129708] [SceneConfiguration] Info.plist contained no UIScene configuration dictionary (looking for configuration named "(no name)") +2022-12-15T16:52:16.311000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTAuth.m:152) RS:0x600000292b20 validating - + key: 4v8EIQ.F3rJog:HRzgFlPm12ZrMHK2QN7MDqKHWKtTPrTc-ol1tXeSZOI; + token: (null); + authUrl: (null); + authMethod: GET; + hasAuthCallback: 0; + clientId: Asset Tracking Publisher Example; +2022-12-15T16:52:16.312000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTAuth.m:158) RS:0x600000292b20 setting up auth method Basic (anonymous) +2022-12-15T16:52:16.312000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RT:0x600000c8d3b0 realtime is transitioning from 0 - Initialized to 1 - Connecting +2022-12-15T16:52:16.312000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTWebSocketTransport.m:119) R:0x600000c8d3b0 WS:0x6000017bb120 websocket connect with key +2022-12-15T16:52:16.313000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTWebSocketTransport.m:190) R:0x600000c8d3b0 WS:0x6000017bb120 url wss://realtime.ably.io:443/?agent=ably-asset-tracking-swift/1.0.0-rc.1%20ably-cocoa/1.2.19%20iOS/16.2.0&key=4v8EIQ.F3rJog:HRzgFlPm12ZrMHK2QN7MDqKHWKtTPrTc-ol1tXeSZOI&clientId=Asset%20Tracking%20Publisher%20Example&echo=true&v=1.2&format=msgpack +2022-12-15T16:52:16.335000-03:00 info: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] Reachability: started listening for host realtime.ably.io +2022-12-15 16:52:16.341404-0300 PublisherExampleSwiftUI[25086:2129708] [Mapbox] [Warning, nav-native]: `common::Scheduler::GetCurrent()` hasn't returned a scheduler. `common::RunLoop::getOrCreateForThisThread()` will be used to get a main scheduler. +2022-12-15 16:52:16.342193-0300 PublisherExampleSwiftUI[25086:2129708] [Mapbox] [Info, nav-native]: PersistentConfig path: /Users/lawrence/Library/Developer/CoreSimulator/Devices/4EDF4713-21D4-4BF1-920A-38999893F359/data/Containers/Data/Application/950A8DFF-EB4D-4A39-AE7F-08F52329F481/Library/Application Support/.mapbox/tile_store/navigation/config.json +2022-12-15 16:52:16.342371-0300 PublisherExampleSwiftUI[25086:2129708] [Mapbox] [Warning, valhalla]: No metadata found for tiles +2022-12-15 16:52:16.342472-0300 PublisherExampleSwiftUI[25086:2129708] [Mapbox] [Warning, valhalla]: No metadata found for tiles +2022-12-15 16:52:16.345601-0300 PublisherExampleSwiftUI[25086:2129708] [Mapbox] [Info, nav-native]: Tiles path = "/Users/lawrence/Library/Developer/CoreSimulator/Devices/4EDF4713-21D4-4BF1-920A-38999893F359/data/Containers/Data/Application/950A8DFF-EB4D-4A39-AE7F-08F52329F481/Library/Application Support/.mapbox/tile_store" +2022-12-15 16:52:16.345662-0300 PublisherExampleSwiftUI[25086:2129708] [Mapbox] [Info, nav-native]: TileStore instance was passed +2022-12-15 16:52:16.345733-0300 PublisherExampleSwiftUI[25086:2129708] [Mapbox] [Info, nav-native]: Endpoint config = "{"dataSet":"mapbox/driving-traffic","host":"https://api.mapbox.com","isFallback":false,"minDiffInDaysToConsiderServerVersion":0,"navigatorVersion":"119.0.1","token":"***...*","userAgent":"PublisherExampleSwiftUI/1.0.0 MapboxNavigation/2.9.0 MapboxCoreNavigation/2.9.0 iOS/16.2.0 (arm64; Simulator)","version":"","versionBeforeFallback":""}" +2022-12-15 16:52:16.345799-0300 PublisherExampleSwiftUI[25086:2129708] [Mapbox] [Info, nav-native]: Creating navigator v.119.0.1 +2022-12-15 16:52:16.345894-0300 PublisherExampleSwiftUI[25086:2129708] [Mapbox] [Warning, valhalla]: No metadata found for tiles +2022-12-15 16:52:16.346947-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Warning, valhalla]: No metadata found for tiles +2022-12-15T16:52:16.349000-03:00 info: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] Reachability: host realtime.ably.io is reachable: true +2022-12-15 16:52:16.350284-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Warning, valhalla]: No metadata found for tiles +2022-12-15 16:52:16.350770-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Warning, valhalla]: No metadata found for tiles +2022-12-15 16:52:16.351893-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Warning, valhalla]: No metadata found for tiles +2022-12-15T16:52:16.386000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:175) passiveLocationManager.passiveLocationManagerDidChangeAuthorization +2022-12-15 16:52:16.556199-0300 PublisherExampleSwiftUI[25086:2129870] [Mapbox] [Info, nav-native]: Async version config for mapbox/driving-traffic resolved with version 2022_12_11-03_00_05 [{"map":{"tileset_version":"2022_12_11-03_00_05"}}] +2022-12-15T16:52:16.894000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTWebSocketTransport.m:262) R:0x600000c8d3b0 WS:0x6000017bb120 websocket did open +2022-12-15T16:52:16.913000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 404, bytes = 0x85a66163 74696f6e 04ac636f 6e6e6563 ... 65727661 6ccd3a98 }'; got: { + action = 4; + connectionDetails = { + clientId = "Asset Tracking Publisher Example"; + connectionKey = "e7dwChmfwBJBBp!3kD7nUjLktJS80Lm-21cf6"; + connectionStateTtl = 120000; + maxFrameSize = 262144; + maxIdleInterval = 15000; + maxInboundRate = 15; + maxMessageSize = 16384; + maxOutboundRate = 15; + serverId = "frontend.d242.4.us-east-1-A.i-073b0e93826c9e82b.e7dwChmfwBJBBp"; + }; + connectionId = 3kD7nUjLkt; + connectionKey = "e7dwChmfwBJBBp!3kD7nUjLktJS80Lm-21cf6"; + connectionSerial = "-1"; +} +2022-12-15T16:52:16.914000-03:00 error: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] ARTDeviceIdentityTokenDetails unarchive failed: Error Domain=NSCocoaErrorDomain Code=4864 "*** -[NSKeyedUnarchiver _initForReadingFromData:error:throwLegacyExceptions:]: data is NULL" UserInfo={NSDebugDescription=*** -[NSKeyedUnarchiver _initForReadingFromData:error:throwLegacyExceptions:]: data is NULL} +2022-12-15T16:52:16.915000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RT:0x600000c8d3b0 realtime is transitioning from 1 - Connecting to 2 - Connected +2022-12-15T16:52:16.915000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:220) Connection to Ably changed. New state: ConnectionState.online +2022-12-15T16:52:16.915000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:922) ablyPublisher.didChangeConnectionState. State: ConnectionState.online +2022-12-15 16:52:18.603029-0300 PublisherExampleSwiftUI[25086:2129708] [SceneConfiguration] Info.plist contained no UIScene configuration dictionary (looking for configuration named "(no name)") +2022-12-15T16:52:19.710000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRestChannel.m:126) RS:0x6000017d2b20 instantiating under 'tracking:123' +2022-12-15T16:52:19.711000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:590) RT:0x600000c8d3b0 C:0x600000a86140 (tracking:123) channel state transitions from 0 - Initialized to 1 - Attaching +2022-12-15T16:52:19.711000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 10; + channel = "tracking:123"; + flags = 720896; +}'; got: {length = 41, bytes = 0x83a76368 616e6e65 6cac7472 61636b69 ... 616773ce 000b0000 } +2022-12-15T16:52:19.711000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 10 - Attach +2022-12-15T16:52:19.841000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 81, bytes = 0x84a66163 74696f6e 0ba5666c 616773ce ... 39323733 373a2d31 }'; got: { + action = 11; + channel = "tracking:123"; + channelSerial = "e7dXYO_QQBJB0841992737:-1"; + flags = 720897; +} +2022-12-15T16:52:19.842000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a86140 (tracking:123) received channel message 11 - Attached +2022-12-15T16:52:19.842000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:666) R:0x600000c8d3b0 C:0x600000a86140 (tracking:123) { + count: 0, + id: (null), + action: 11 (Attached), + channel: tracking:123, + channelSerial: e7dXYO_QQBJB0841992737:-1, + connectionId: (null), + connectionKey: (null), + connectionSerial: 0, + msgSerial: (null), + timestamp: (null), + flags: 720897, + flags.hasPresence: YES, + flags.hasBacklog: NO, + flags.resumed: NO, + messages: (null) + params: (null) +} +2022-12-15T16:52:19.842000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:170) 0x6000013813b0 PresenceMap sync started +2022-12-15T16:52:19.842000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:590) RT:0x600000c8d3b0 C:0x600000a86140 (tracking:123) channel state transitions from 1 - Attaching to 2 - Attached +2022-12-15T16:52:19.843000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 14; + channel = "tracking:123"; + msgSerial = 0; + presence = ( + { + action = 2; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + } + ); +}'; got: {length = 132, bytes = 0x84a96d73 67536572 69616c00 a8707265 ... a6616374 696f6e0e } +2022-12-15T16:52:19.843000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 14 - Presence +2022-12-15T16:52:19.964000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c00 }'; got: { + action = 1; + count = 1; + msgSerial = 0; +} +2022-12-15T16:52:19.964000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:102) Entered a channel [id: 123] presence successfully +2022-12-15T16:52:19.964000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 317, bytes = 0x88a66163 74696f6e 0ea26964 ac336b44 ... a6616374 696f6e02 }'; got: { + action = 14; + channel = "tracking:123"; + channelSerial = "e7dXYO_QQBJB0841992737:0"; + connectionId = 3kD7nUjLkt; + connectionSerial = 0; + id = "3kD7nUjLkt:0"; + presence = ( + { + action = 2; + clientId = "Asset Tracking Publisher Example"; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + id = "3kD7nUjLkt:0:0"; + timestamp = 1671133939880; + } + ); + timestamp = 1671133939880; +} +2022-12-15T16:52:19.965000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a86140 (tracking:123) received channel message 14 - Presence +2022-12-15T16:52:19.965000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:848) RT:0x600000c8d3b0 C:0x600000a86140 (tracking:123) handle PRESENCE message +2022-12-15T16:52:19.965000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:106) local member 3kD7nUjLkt:Asset Tracking Publisher Example with action PRESENT has been added +2022-12-15T16:52:19.967000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimePresence.m:201) R:0x600000c8d3b0 C:0x600000a86140 (tracking:123) sync is in progress, waiting until the presence members is synchronized +2022-12-15T16:52:19.969000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 14; + channel = "tracking:123"; + msgSerial = 1; + presence = ( + { + action = 4; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"resolution\":{\"desiredInterval\":5000,\"minimumDisplacement\":100,\"accuracy\":\"BALANCED\"},\"rawLocations\":false}"; + } + ); +}'; got: {length = 218, bytes = 0x84a96d73 67536572 69616c01 a8707265 ... a6616374 696f6e0e } +2022-12-15T16:52:19.969000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 14 - Presence +2022-12-15 16:52:19.972409-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238097433659905ns <= 1671133939421115904ns. No status will be produced. +2022-12-15 16:52:19.995271-0300 PublisherExampleSwiftUI[25086:2129708] [plugin] AddInstanceForFactory: No factory registered for id F8BB1C28-BAE8-11D6-9C31-00039315CD46 +2022-12-15 16:52:20.021833-0300 PublisherExampleSwiftUI[25086:2129708] HALC_ProxyObjectMap.cpp:153 HALC_ProxyObjectMap::_CopyObjectByObjectID: failed to create the local object +2022-12-15 16:52:20.021963-0300 PublisherExampleSwiftUI[25086:2129708] HALC_ShellDevice.cpp:2606 HALC_ShellDevice::RebuildControlList: couldn't find the control object +2022-12-15T16:52:20.035000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:52:20.035000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:52:20.036000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:52:20.038000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.0325498,37.335195720000002,0]},\"properties\":{\"bearing\":179.64999389648438,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":1.940000057220459,\"time\":1671133939.4211159,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 2; +}'; got: {length = 429, bytes = 0x84a96d73 67536572 69616c02 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:52:20.038000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:52:20.054000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 239, bytes = 0x84a66163 74696f6e 10a76368 616e6e65 ... a6616374 696f6e01 }'; got: { + action = 16; + channel = "tracking:123"; + channelSerial = "e7dwChmfwBJBBp23352802:"; + presence = ( + { + action = 1; + clientId = "Asset Tracking Publisher Example"; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + id = "3kD7nUjLkt:0:0"; + timestamp = 1671133939880; + } + ); +} +2022-12-15T16:52:20.054000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a86140 (tracking:123) received channel message 16 - Sync +2022-12-15T16:52:20.054000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:886) RT:0x600000c8d3b0 C:0x600000a86140 (tracking:123) PresenceMap sync is in progress +2022-12-15T16:52:20.054000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:91) Presence member "3kD7nUjLkt:Asset Tracking Publisher Example" with action Present has been ignored +2022-12-15T16:52:20.054000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:132) 0x6000013813b0 cleaning up absent members (syncSessionId=1) +2022-12-15T16:52:20.054000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:142) 0x6000013813b0 leaving members not present in sync (syncSessionId=1) +2022-12-15T16:52:20.054000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:154) 0x6000013813b0 reentering local members missed from sync (syncSessionId=1) +2022-12-15T16:52:20.059000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:132) 0x6000013813b0 cleaning up absent members (syncSessionId=1) +2022-12-15T16:52:20.059000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:184) 0x6000013813b0 PresenceMap sync ended +2022-12-15T16:52:20.059000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:899) RT:0x600000c8d3b0 C:0x600000a86140 (tracking:123) PresenceMap sync ended +2022-12-15T16:52:20.092000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 403, bytes = 0x88a66163 74696f6e 0ea26964 ac336b44 ... a6616374 696f6e04 }'; got: { + action = 14; + channel = "tracking:123"; + channelSerial = "e7dXYO_QQBJB0841992737:1"; + connectionId = 3kD7nUjLkt; + connectionSerial = 1; + id = "3kD7nUjLkt:1"; + presence = ( + { + action = 4; + clientId = "Asset Tracking Publisher Example"; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"resolution\":{\"desiredInterval\":5000,\"minimumDisplacement\":100,\"accuracy\":\"BALANCED\"},\"rawLocations\":false}"; + id = "3kD7nUjLkt:1:0"; + timestamp = 1671133940006; + } + ); + timestamp = 1671133940006; +} +2022-12-15T16:52:20.092000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a86140 (tracking:123) received channel message 14 - Presence +2022-12-15T16:52:20.092000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:848) RT:0x600000c8d3b0 C:0x600000a86140 (tracking:123) handle PRESENCE message +2022-12-15T16:52:20.092000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:106) local member 3kD7nUjLkt:Asset Tracking Publisher Example with action PRESENT has been added +2022-12-15 16:52:20.112651-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15T16:52:20.114000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:239) Get presence update from channel +2022-12-15T16:52:20.116000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:932) publisherService.didReceivePresenceUpdate. Presence: Presence(action: AblyAssetTrackingInternal.PresenceAction.present, type: AblyAssetTrackingInternal.PresenceType.publisher), Trackable: AblyAssetTrackingCore.Trackable +2022-12-15T16:52:20.118000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:250) Received presence update from channel +2022-12-15T16:52:20.118000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:932) publisherService.didReceivePresenceUpdate. Presence: Presence(action: AblyAssetTrackingInternal.PresenceAction.update, type: AblyAssetTrackingInternal.PresenceType.publisher), Trackable: AblyAssetTrackingCore.Trackable +2022-12-15 16:52:20.124989-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15 16:52:20.233737-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15 16:52:20.358213-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15T16:52:20.469000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7402 ... 67536572 69616c01 }'; got: { + action = 1; + count = 2; + msgSerial = 1; +} +2022-12-15T16:52:20.469000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15 16:52:20.470947-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:52:20.592131-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:52:20.704092-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15T16:52:31.966000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 9, bytes = 0x81a6616374696f6e00}'; got: { + action = 0; +} +2022-12-15 16:52:32.437739-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238084426237953ns <= 1671133952428537856ns. No status will be produced. +2022-12-15T16:52:32.443000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:52:32.443000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:52:32.443000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:52:32.444000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.03369603,37.334779769999997,0]},\"properties\":{\"bearing\":255.58999633789062,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":17.209999084472656,\"time\":1671133952.4285378,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 3; +}'; got: {length = 431, bytes = 0x84a96d73 67536572 69616c03 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:52:32.444000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:52:32.571000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c03 }'; got: { + action = 1; + count = 1; + msgSerial = 3; +} +2022-12-15T16:52:32.571000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15 16:52:32.571703-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:52:32.802513-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15 16:52:32.923491-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:52:32.925871-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:52:33.051061-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:52:33.179466-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15 16:52:33.276214-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:52:38.439062-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238078421879553ns <= 1671133958432896256ns. No status will be produced. +2022-12-15T16:52:38.441000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:52:38.441000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:52:38.441000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:52:38.441000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.0350347,37.33460316,0]},\"properties\":{\"bearing\":265.07998657226562,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":22.450000762939453,\"time\":1671133958.4328961,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 4; +}'; got: {length = 423, bytes = 0x84a96d73 67536572 69616c04 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:52:38.442000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:52:38.561000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c04 }'; got: { + action = 1; + count = 1; + msgSerial = 4; +} +2022-12-15T16:52:38.561000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15 16:52:38.837138-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:52:38.837729-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15 16:52:39.238856-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:52:39.239472-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:52:39.363096-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:52:39.652598-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:52:39.710931-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15 16:52:43.433337-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238073431572737ns <= 1671133963423203072ns. No status will be produced. +2022-12-15T16:52:43.439000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:52:43.439000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:52:43.439000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:52:43.440000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.03638578,37.33454218,0]},\"properties\":{\"bearing\":268.95001220703125,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":25.100000381469727,\"time\":1671133963.423203,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 5; +}'; got: {length = 423, bytes = 0x84a96d73 67536572 69616c05 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:52:43.440000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15 16:52:43.564714-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:52:43.565582-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15T16:52:43.580000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c05 }'; got: { + action = 1; + count = 1; + msgSerial = 5; +} +2022-12-15T16:52:43.581000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15 16:52:43.693344-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:52:43.817221-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:52:43.918188-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:52:43.941218-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:52:44.045205-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15T16:52:47.025000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 9, bytes = 0x81a6616374696f6e00}'; got: { + action = 0; +} +2022-12-15 16:52:47.428658-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238069435787777ns <= 1671133967418988032ns. No status will be produced. +2022-12-15 16:52:47.431574-0300 PublisherExampleSwiftUI[25086:2130120] [connection] nw_connection_add_timestamp_locked_on_nw_queue [C2] Hit maximum timestamp count, will start dropping events +2022-12-15T16:52:47.434000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:52:47.434000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:52:47.434000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:52:47.435000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.03753997,37.33453652,0]},\"properties\":{\"bearing\":268.95001220703125,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":26.120000839233398,\"time\":1671133967.418988,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 6; +}'; got: {length = 423, bytes = 0x84a96d73 67536572 69616c06 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:52:47.447000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15 16:52:47.563636-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:52:47.564165-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15T16:52:47.564000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c06 }'; got: { + action = 1; + count = 1; + msgSerial = 6; +} +2022-12-15T16:52:47.564000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15 16:52:47.694222-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:52:47.695733-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:52:47.822231-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:52:47.822981-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:52:47.955464-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15 16:52:51.432646-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238065433461761ns <= 1671133971421314048ns. No status will be produced. +2022-12-15T16:52:51.442000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:52:51.442000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:52:51.442000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:52:51.443000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.03875936999999,37.334503789999999,0]},\"properties\":{\"bearing\":267.8900146484375,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":27.979999542236328,\"time\":1671133971.421314,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 7; +}'; got: {length = 435, bytes = 0x84a96d73 67536572 69616c07 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:52:51.445000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15 16:52:51.561609-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15T16:52:51.564000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c07 }'; got: { + action = 1; + count = 1; + msgSerial = 7; +} +2022-12-15T16:52:51.564000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15 16:52:51.684716-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:52:51.784321-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:52:51.808129-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:52:51.912747-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:52:51.934234-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:52:52.035241-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15T16:52:53.337000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRestChannel.m:126) RS:0x6000017e8c00 instantiating under 'tracking:234' +2022-12-15T16:52:53.337000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:590) RT:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) channel state transitions from 0 - Initialized to 1 - Attaching +2022-12-15T16:52:53.337000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 10; + channel = "tracking:234"; + flags = 720896; +}'; got: {length = 41, bytes = 0x83a76368 616e6e65 6cac7472 61636b69 ... 616773ce 000b0000 } +2022-12-15T16:52:53.337000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 10 - Attach +2022-12-15T16:52:53.469000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 81, bytes = 0x84a66163 74696f6e 0ba5666c 616773ce ... 37373636 303a2d31 }'; got: { + action = 11; + channel = "tracking:234"; + channelSerial = "e7dCEbzgQBJB9k43077660:-1"; + flags = 720897; +} +2022-12-15T16:52:53.470000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) received channel message 11 - Attached +2022-12-15T16:52:53.470000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:666) R:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) { + count: 0, + id: (null), + action: 11 (Attached), + channel: tracking:234, + channelSerial: e7dCEbzgQBJB9k43077660:-1, + connectionId: (null), + connectionKey: (null), + connectionSerial: 0, + msgSerial: (null), + timestamp: (null), + flags: 720897, + flags.hasPresence: YES, + flags.hasBacklog: NO, + flags.resumed: NO, + messages: (null) + params: (null) +} +2022-12-15T16:52:53.470000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:170) 0x600001392350 PresenceMap sync started +2022-12-15T16:52:53.470000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:590) RT:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) channel state transitions from 1 - Attaching to 2 - Attached +2022-12-15T16:52:53.471000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 14; + channel = "tracking:234"; + msgSerial = 8; + presence = ( + { + action = 2; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + } + ); +}'; got: {length = 132, bytes = 0x84a96d73 67536572 69616c08 a8707265 ... a6616374 696f6e0e } +2022-12-15T16:52:53.471000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 14 - Presence +2022-12-15T16:52:53.600000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c08 }'; got: { + action = 1; + count = 1; + msgSerial = 8; +} +2022-12-15T16:52:53.601000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:102) Entered a channel [id: 234] presence successfully +2022-12-15T16:52:53.602000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 317, bytes = 0x88a66163 74696f6e 0ea26964 ac336b44 ... a6616374 696f6e02 }'; got: { + action = 14; + channel = "tracking:234"; + channelSerial = "e7dCEbzgQBJB9k43077660:0"; + connectionId = 3kD7nUjLkt; + connectionSerial = 2; + id = "3kD7nUjLkt:8"; + presence = ( + { + action = 2; + clientId = "Asset Tracking Publisher Example"; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + id = "3kD7nUjLkt:8:0"; + timestamp = 1671133973508; + } + ); + timestamp = 1671133973508; +} +2022-12-15T16:52:53.602000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) received channel message 14 - Presence +2022-12-15T16:52:53.602000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:848) RT:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) handle PRESENCE message +2022-12-15T16:52:53.602000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:106) local member 3kD7nUjLkt:Asset Tracking Publisher Example with action PRESENT has been added +2022-12-15T16:52:53.603000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimePresence.m:201) R:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) sync is in progress, waiting until the presence members is synchronized +2022-12-15T16:52:53.603000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:81) Received requestLocationUpdate +2022-12-15T16:52:53.605000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 14; + channel = "tracking:234"; + msgSerial = 9; + presence = ( + { + action = 4; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"resolution\":{\"desiredInterval\":5000,\"minimumDisplacement\":100,\"accuracy\":\"BALANCED\"},\"rawLocations\":false}"; + } + ); +}'; got: {length = 218, bytes = 0x84a96d73 67536572 69616c09 a8707265 ... a6616374 696f6e0e } +2022-12-15T16:52:53.605000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 14 - Presence +2022-12-15 16:52:53.614500-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238063426798849ns <= 1671133973427976960ns. No status will be produced. +2022-12-15T16:52:53.615000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:52:53.615000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:52:53.615000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:52:53.616000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:234"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.03941089,37.33448791,0]},\"properties\":{\"bearing\":267.8900146484375,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":29.239999771118164,\"time\":1671133973.4279768,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 10; +}'; got: {length = 423, bytes = 0x84a96d73 67536572 69616c0a a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:52:53.616000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:52:53.675000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 239, bytes = 0x84a66163 74696f6e 10a76368 616e6e65 ... a6616374 696f6e01 }'; got: { + action = 16; + channel = "tracking:234"; + channelSerial = "e7dwChmfwBJBBp82787442:"; + presence = ( + { + action = 1; + clientId = "Asset Tracking Publisher Example"; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + id = "3kD7nUjLkt:8:0"; + timestamp = 1671133973508; + } + ); +} +2022-12-15T16:52:53.675000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) received channel message 16 - Sync +2022-12-15T16:52:53.675000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:886) RT:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) PresenceMap sync is in progress +2022-12-15T16:52:53.676000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:91) Presence member "3kD7nUjLkt:Asset Tracking Publisher Example" with action Present has been ignored +2022-12-15T16:52:53.676000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:132) 0x600001392350 cleaning up absent members (syncSessionId=1) +2022-12-15T16:52:53.676000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:142) 0x600001392350 leaving members not present in sync (syncSessionId=1) +2022-12-15T16:52:53.676000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:154) 0x600001392350 reentering local members missed from sync (syncSessionId=1) +2022-12-15T16:52:53.676000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:132) 0x600001392350 cleaning up absent members (syncSessionId=1) +2022-12-15T16:52:53.676000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:184) 0x600001392350 PresenceMap sync ended +2022-12-15T16:52:53.676000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:899) RT:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) PresenceMap sync ended +2022-12-15T16:52:53.693000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:239) Get presence update from channel +2022-12-15T16:52:53.693000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:932) publisherService.didReceivePresenceUpdate. Presence: Presence(action: AblyAssetTrackingInternal.PresenceAction.present, type: AblyAssetTrackingInternal.PresenceType.publisher), Trackable: AblyAssetTrackingCore.Trackable +2022-12-15T16:52:53.724000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 403, bytes = 0x88a66163 74696f6e 0ea26964 ac336b44 ... a6616374 696f6e04 }'; got: { + action = 14; + channel = "tracking:234"; + channelSerial = "e7dCEbzgQBJB9k43077660:1"; + connectionId = 3kD7nUjLkt; + connectionSerial = 3; + id = "3kD7nUjLkt:9"; + presence = ( + { + action = 4; + clientId = "Asset Tracking Publisher Example"; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"resolution\":{\"desiredInterval\":5000,\"minimumDisplacement\":100,\"accuracy\":\"BALANCED\"},\"rawLocations\":false}"; + id = "3kD7nUjLkt:9:0"; + timestamp = 1671133973640; + } + ); + timestamp = 1671133973640; +} +2022-12-15T16:52:53.724000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) received channel message 14 - Presence +2022-12-15T16:52:53.724000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:848) RT:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) handle PRESENCE message +2022-12-15T16:52:53.724000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:106) local member 3kD7nUjLkt:Asset Tracking Publisher Example with action PRESENT has been added +2022-12-15T16:52:53.724000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:250) Received presence update from channel +2022-12-15T16:52:53.724000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:932) publisherService.didReceivePresenceUpdate. Presence: Presence(action: AblyAssetTrackingInternal.PresenceAction.update, type: AblyAssetTrackingInternal.PresenceType.publisher), Trackable: AblyAssetTrackingCore.Trackable +2022-12-15 16:52:53.737912-0300 PublisherExampleSwiftUI[25086:2130122] [connection] nw_connection_add_timestamp_locked_on_nw_queue [C3] Hit maximum timestamp count, will start dropping events +2022-12-15 16:52:53.739471-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15 16:52:53.739959-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:52:53.862693-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:52:53.864246-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:52:53.989906-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:52:53.990084-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15T16:52:54.092000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7402 ... 67536572 69616c09 }'; got: { + action = 1; + count = 2; + msgSerial = 9; +} +2022-12-15T16:52:54.093000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 234 +2022-12-15 16:52:54.344778-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15 16:52:57.426570-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238059434558721ns <= 1671133977420217088ns. No status will be produced. +2022-12-15T16:52:57.429000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:52:57.429000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:52:57.429000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:52:57.429000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:234"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04077830999999,37.334458400000003,0]},\"properties\":{\"bearing\":268.58999633789062,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":31.670000076293945,\"time\":1671133977.420217,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 11; +}'; got: {length = 436, bytes = 0x84a96d73 67536572 69616c0b a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:52:57.429000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:52:57.433000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.03941089,37.33448791,0]},\"properties\":{\"bearing\":267.8900146484375,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":29.239999771118164,\"time\":1671133973.4279768,\"accuracySpeed\":0}}],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04077830999999,37.334458400000003,0]},\"properties\":{\"bearing\":268.58999633789062,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":31.670000076293945,\"time\":1671133977.420217,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 12; +}'; got: {length = 683, bytes = 0x84a96d73 67536572 69616c0c a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:52:57.434000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:52:57.554000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c0b }'; got: { + action = 1; + count = 1; + msgSerial = 11; +} +2022-12-15T16:52:57.555000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 234 +2022-12-15 16:52:57.556653-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:52:57.571162-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15 16:52:57.684346-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:52:57.812698-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:52:57.922390-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:52:57.936347-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:52:58.049388-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15T16:52:58.052000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c0c }'; got: { + action = 1; + count = 1; + msgSerial = 12; +} +2022-12-15T16:52:58.053000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15 16:53:01.430351-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238055428056833ns <= 1671133981426718976ns. No status will be produced. +2022-12-15T16:53:01.433000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:53:01.433000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:53:01.433000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:53:01.434000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:234"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04226334000001,37.334448430000002,0]},\"properties\":{\"bearing\":270,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":33.610000610351562,\"time\":1671133981.426719,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 13; +}'; got: {length = 421, bytes = 0x84a96d73 67536572 69616c0d a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:01.434000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:01.434000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04226334000001,37.334448430000002,0]},\"properties\":{\"bearing\":270,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":33.610000610351562,\"time\":1671133981.426719,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 14; +}'; got: {length = 421, bytes = 0x84a96d73 67536572 69616c0e a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:01.435000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15 16:53:01.554090-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15T16:53:01.556000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c0d }'; got: { + action = 1; + count = 1; + msgSerial = 13; +} +2022-12-15T16:53:01.557000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 234 +2022-12-15 16:53:01.558655-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:53:01.731158-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:53:01.901961-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15T16:53:01.915000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 9, bytes = 0x81a6616374696f6e00}'; got: { + action = 0; +} +2022-12-15T16:53:02.061000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c0e }'; got: { + action = 1; + count = 1; + msgSerial = 14; +} +2022-12-15T16:53:02.063000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15 16:53:02.084364-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:53:02.238598-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15 16:53:02.248248-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:53:04.439497-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238052426173953ns <= 1671133984428601856ns. No status will be produced. +2022-12-15T16:53:04.445000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:53:04.445000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:53:04.445000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:53:04.445000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:234"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04342255,37.334459449999997,0]},\"properties\":{\"bearing\":270,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":34.509998321533203,\"time\":1671133984.4286017,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 15; +}'; got: {length = 416, bytes = 0x84a96d73 67536572 69616c0f a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:04.453000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:04.453000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04342255,37.334459449999997,0]},\"properties\":{\"bearing\":270,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":34.509998321533203,\"time\":1671133984.4286017,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 16; +}'; got: {length = 416, bytes = 0x84a96d73 67536572 69616c10 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:04.453000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:04.572000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c0f }'; got: { + action = 1; + count = 1; + msgSerial = 15; +} +2022-12-15T16:53:04.573000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 234 +2022-12-15 16:53:04.574819-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15 16:53:04.707771-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:53:04.792380-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:53:04.841916-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:53:04.920099-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:53:04.968197-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:53:05.046385-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15T16:53:05.076000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c10 }'; got: { + action = 1; + count = 1; + msgSerial = 16; +} +2022-12-15T16:53:05.076000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15 16:53:07.442577-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238049420856833ns <= 1671133987433918976ns. No status will be produced. +2022-12-15T16:53:07.447000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:53:07.447000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:53:07.447000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:53:07.448000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:234"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04458579,37.33445442,0]},\"properties\":{\"bearing\":269.64999389648438,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":34.060001373291016,\"time\":1671133987.433919,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 17; +}'; got: {length = 423, bytes = 0x84a96d73 67536572 69616c11 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:07.448000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:07.448000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04458579,37.33445442,0]},\"properties\":{\"bearing\":269.64999389648438,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":34.060001373291016,\"time\":1671133987.433919,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 18; +}'; got: {length = 423, bytes = 0x84a96d73 67536572 69616c12 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:07.448000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15 16:53:07.575737-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:53:07.576294-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15T16:53:07.586000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c11 }'; got: { + action = 1; + count = 1; + msgSerial = 17; +} +2022-12-15T16:53:07.586000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 234 +2022-12-15 16:53:07.712174-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:53:07.713567-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:53:07.847059-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:53:07.975921-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15 16:53:08.065284-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15T16:53:08.082000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c12 }'; got: { + action = 1; + count = 1; + msgSerial = 18; +} +2022-12-15T16:53:08.083000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15 16:53:10.438092-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238046422109953ns <= 1671133990432665856ns. No status will be produced. +2022-12-15T16:53:10.443000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:53:10.443000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:53:10.443000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:53:10.443000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:234"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04571727,37.334436570000001,0]},\"properties\":{\"bearing\":267.54000854492188,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":33.009998321533203,\"time\":1671133990.4326658,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 19; +}'; got: {length = 431, bytes = 0x84a96d73 67536572 69616c13 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:10.444000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:10.445000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04571727,37.334436570000001,0]},\"properties\":{\"bearing\":267.54000854492188,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":33.009998321533203,\"time\":1671133990.4326658,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 20; +}'; got: {length = 431, bytes = 0x84a96d73 67536572 69616c14 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:10.447000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:10.563000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c13 }'; got: { + action = 1; + count = 1; + msgSerial = 19; +} +2022-12-15T16:53:10.563000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 234 +2022-12-15 16:53:10.570486-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15 16:53:10.699561-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:53:10.791404-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:53:10.826685-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:53:10.920821-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:53:10.949621-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:53:11.047334-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15T16:53:11.065000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c14 }'; got: { + action = 1; + count = 1; + msgSerial = 20; +} +2022-12-15T16:53:11.066000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15T16:53:11.674000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRestChannel.m:126) RS:0x600001705ce0 instantiating under 'tracking:345' +2022-12-15T16:53:11.674000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:590) RT:0x600000c8d3b0 C:0x600000a27020 (tracking:345) channel state transitions from 0 - Initialized to 1 - Attaching +2022-12-15T16:53:11.674000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 10; + channel = "tracking:345"; + flags = 720896; +}'; got: {length = 41, bytes = 0x83a76368 616e6e65 6cac7472 61636b69 ... 616773ce 000b0000 } +2022-12-15T16:53:11.674000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 10 - Attach +2022-12-15T16:53:11.803000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 81, bytes = 0x84a66163 74696f6e 0ba5666c 616773ce ... 36333332 313a2d31 }'; got: { + action = 11; + channel = "tracking:345"; + channelSerial = "e7dXYO_QQBJB0866163321:-1"; + flags = 720897; +} +2022-12-15T16:53:11.803000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a27020 (tracking:345) received channel message 11 - Attached +2022-12-15T16:53:11.803000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:666) R:0x600000c8d3b0 C:0x600000a27020 (tracking:345) { + count: 0, + id: (null), + action: 11 (Attached), + channel: tracking:345, + channelSerial: e7dXYO_QQBJB0866163321:-1, + connectionId: (null), + connectionKey: (null), + connectionSerial: 0, + msgSerial: (null), + timestamp: (null), + flags: 720897, + flags.hasPresence: YES, + flags.hasBacklog: NO, + flags.resumed: NO, + messages: (null) + params: (null) +} +2022-12-15T16:53:11.803000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:170) 0x6000013af570 PresenceMap sync started +2022-12-15T16:53:11.803000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:590) RT:0x600000c8d3b0 C:0x600000a27020 (tracking:345) channel state transitions from 1 - Attaching to 2 - Attached +2022-12-15T16:53:11.803000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 14; + channel = "tracking:345"; + msgSerial = 21; + presence = ( + { + action = 2; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + } + ); +}'; got: {length = 132, bytes = 0x84a96d73 67536572 69616c15 a8707265 ... a6616374 696f6e0e } +2022-12-15T16:53:11.803000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 14 - Presence +2022-12-15T16:53:11.923000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c15 }'; got: { + action = 1; + count = 1; + msgSerial = 21; +} +2022-12-15T16:53:11.923000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:102) Entered a channel [id: 345] presence successfully +2022-12-15T16:53:11.923000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimePresence.m:201) R:0x600000c8d3b0 C:0x600000a27020 (tracking:345) sync is in progress, waiting until the presence members is synchronized +2022-12-15T16:53:11.923000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:81) Received requestLocationUpdate +2022-12-15T16:53:11.924000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 14; + channel = "tracking:345"; + msgSerial = 22; + presence = ( + { + action = 4; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"resolution\":{\"desiredInterval\":5000,\"minimumDisplacement\":100,\"accuracy\":\"BALANCED\"},\"rawLocations\":false}"; + } + ); +}'; got: {length = 218, bytes = 0x84a96d73 67536572 69616c16 a8707265 ... a6616374 696f6e0e } +2022-12-15T16:53:11.924000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 14 - Presence +2022-12-15T16:53:11.924000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 319, bytes = 0x88a66163 74696f6e 0ea26964 ad336b44 ... a6616374 696f6e02 }'; got: { + action = 14; + channel = "tracking:345"; + channelSerial = "e7dXYO_QQBJB0866163321:0"; + connectionId = 3kD7nUjLkt; + connectionSerial = 4; + id = "3kD7nUjLkt:21"; + presence = ( + { + action = 2; + clientId = "Asset Tracking Publisher Example"; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + id = "3kD7nUjLkt:21:0"; + timestamp = 1671133991840; + } + ); + timestamp = 1671133991840; +} +2022-12-15T16:53:11.925000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a27020 (tracking:345) received channel message 14 - Presence +2022-12-15T16:53:11.925000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:848) RT:0x600000c8d3b0 C:0x600000a27020 (tracking:345) handle PRESENCE message +2022-12-15T16:53:11.925000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:106) local member 3kD7nUjLkt:Asset Tracking Publisher Example with action PRESENT has been added +2022-12-15T16:53:11.928000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:53:11.928000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:53:11.928000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15 16:53:11.927761-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238045430835969ns <= 1671133991423939840ns. No status will be produced. +2022-12-15T16:53:11.928000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:345"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04607568,37.334417080000001,0]},\"properties\":{\"bearing\":265.42999267578125,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":32.659999847412109,\"time\":1671133991.4239399,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 23; +}'; got: {length = 431, bytes = 0x84a96d73 67536572 69616c17 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:11.928000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:11.929000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:250) Received presence update from channel +2022-12-15T16:53:11.929000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:932) publisherService.didReceivePresenceUpdate. Presence: Presence(action: AblyAssetTrackingInternal.PresenceAction.enter, type: AblyAssetTrackingInternal.PresenceType.publisher), Trackable: AblyAssetTrackingCore.Trackable +2022-12-15T16:53:12.017000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 240, bytes = 0x84a66163 74696f6e 10a76368 616e6e65 ... a6616374 696f6e01 }'; got: { + action = 16; + channel = "tracking:345"; + channelSerial = "e7dwChmfwBJBBp75625610:"; + presence = ( + { + action = 1; + clientId = "Asset Tracking Publisher Example"; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + id = "3kD7nUjLkt:21:0"; + timestamp = 1671133991840; + } + ); +} +2022-12-15T16:53:12.017000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a27020 (tracking:345) received channel message 16 - Sync +2022-12-15T16:53:12.017000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:886) RT:0x600000c8d3b0 C:0x600000a27020 (tracking:345) PresenceMap sync is in progress +2022-12-15T16:53:12.021000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:91) Presence member "3kD7nUjLkt:Asset Tracking Publisher Example" with action Present has been ignored +2022-12-15T16:53:12.021000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:132) 0x6000013af570 cleaning up absent members (syncSessionId=1) +2022-12-15T16:53:12.021000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:142) 0x6000013af570 leaving members not present in sync (syncSessionId=1) +2022-12-15T16:53:12.021000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:154) 0x6000013af570 reentering local members missed from sync (syncSessionId=1) +2022-12-15T16:53:12.021000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:132) 0x6000013af570 cleaning up absent members (syncSessionId=1) +2022-12-15T16:53:12.021000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:184) 0x6000013af570 PresenceMap sync ended +2022-12-15T16:53:12.021000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:239) Get presence update from channel +2022-12-15T16:53:12.025000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:899) RT:0x600000c8d3b0 C:0x600000a27020 (tracking:345) PresenceMap sync ended +2022-12-15T16:53:12.026000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:932) publisherService.didReceivePresenceUpdate. Presence: Presence(action: AblyAssetTrackingInternal.PresenceAction.present, type: AblyAssetTrackingInternal.PresenceType.publisher), Trackable: AblyAssetTrackingCore.Trackable +2022-12-15T16:53:12.048000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 405, bytes = 0x88a66163 74696f6e 0ea26964 ad336b44 ... a6616374 696f6e04 }'; got: { + action = 14; + channel = "tracking:345"; + channelSerial = "e7dXYO_QQBJB0866163321:1"; + connectionId = 3kD7nUjLkt; + connectionSerial = 5; + id = "3kD7nUjLkt:22"; + presence = ( + { + action = 4; + clientId = "Asset Tracking Publisher Example"; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"resolution\":{\"desiredInterval\":5000,\"minimumDisplacement\":100,\"accuracy\":\"BALANCED\"},\"rawLocations\":false}"; + id = "3kD7nUjLkt:22:0"; + timestamp = 1671133991961; + } + ); + timestamp = 1671133991961; +} +2022-12-15T16:53:12.048000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a27020 (tracking:345) received channel message 14 - Presence +2022-12-15T16:53:12.048000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:848) RT:0x600000c8d3b0 C:0x600000a27020 (tracking:345) handle PRESENCE message +2022-12-15T16:53:12.048000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTPresenceMap.m:106) local member 3kD7nUjLkt:Asset Tracking Publisher Example with action PRESENT has been added +2022-12-15T16:53:12.048000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:250) Received presence update from channel +2022-12-15T16:53:12.048000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:932) publisherService.didReceivePresenceUpdate. Presence: Presence(action: AblyAssetTrackingInternal.PresenceAction.update, type: AblyAssetTrackingInternal.PresenceType.publisher), Trackable: AblyAssetTrackingCore.Trackable +2022-12-15 16:53:12.049428-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:53:12.052414-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15 16:53:12.174455-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:53:12.300944-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:53:12.403446-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:53:12.422813-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15T16:53:12.424000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7402 ... 67536572 69616c16 }'; got: { + action = 1; + count = 2; + msgSerial = 22; +} +2022-12-15T16:53:12.424000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 345 +2022-12-15 16:53:12.525832-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15 16:53:15.427651-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238041436836865ns <= 1671133995417938944ns. No status will be produced. +2022-12-15T16:53:15.433000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:53:15.433000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:53:15.434000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:53:15.434000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:345"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04751057999999,37.334269849999998,0]},\"properties\":{\"bearing\":259.10000610351562,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":30.940000534057617,\"time\":1671133995.4179389,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 24; +}'; got: {length = 437, bytes = 0x84a96d73 67536572 69616c18 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:15.442000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:15.443000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:234"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04607568,37.334417080000001,0]},\"properties\":{\"bearing\":265.42999267578125,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":32.659999847412109,\"time\":1671133991.4239399,\"accuracySpeed\":0}}],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04751057999999,37.334269849999998,0]},\"properties\":{\"bearing\":259.10000610351562,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":30.940000534057617,\"time\":1671133995.4179389,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 25; +}'; got: {length = 692, bytes = 0x84a96d73 67536572 69616c19 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:15.443000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:15.443000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04607568,37.334417080000001,0]},\"properties\":{\"bearing\":265.42999267578125,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":32.659999847412109,\"time\":1671133991.4239399,\"accuracySpeed\":0}}],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04751057999999,37.334269849999998,0]},\"properties\":{\"bearing\":259.10000610351562,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":30.940000534057617,\"time\":1671133995.4179389,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 26; +}'; got: {length = 692, bytes = 0x84a96d73 67536572 69616c1a a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:15.444000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:15.561000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c18 }'; got: { + action = 1; + count = 1; + msgSerial = 24; +} +2022-12-15T16:53:15.562000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 345 +2022-12-15 16:53:15.563915-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15 16:53:15.565230-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:53:15.697411-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:53:15.698334-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:53:15.824044-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:53:15.827473-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:53:15.952374-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15T16:53:16.062000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7402 ... 67536572 69616c19 }'; got: { + action = 1; + count = 2; + msgSerial = 25; +} +2022-12-15T16:53:16.062000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 234 +2022-12-15T16:53:16.062000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15T16:53:16.920000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 9, bytes = 0x81a6616374696f6e00}'; got: { + action = 0; +} +2022-12-15 16:53:19.433578-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238037431190785ns <= 1671133999423585024ns. No status will be produced. +2022-12-15T16:53:19.439000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:53:19.439000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:53:19.440000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:53:19.440000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:345"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04886543000001,37.333987759999999,0]},\"properties\":{\"bearing\":254.17999267578125,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":31.600000381469727,\"time\":1671133999.4235849,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 27; +}'; got: {length = 437, bytes = 0x84a96d73 67536572 69616c1b a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:19.440000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:19.448000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:234"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04886543000001,37.333987759999999,0]},\"properties\":{\"bearing\":254.17999267578125,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":31.600000381469727,\"time\":1671133999.4235849,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 28; +}'; got: {length = 437, bytes = 0x84a96d73 67536572 69616c1c a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:19.448000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:19.449000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.04886543000001,37.333987759999999,0]},\"properties\":{\"bearing\":254.17999267578125,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":31.600000381469727,\"time\":1671133999.4235849,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 29; +}'; got: {length = 437, bytes = 0x84a96d73 67536572 69616c1d a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:19.449000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:19.566000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c1b }'; got: { + action = 1; + count = 1; + msgSerial = 27; +} +2022-12-15T16:53:19.567000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 345 +2022-12-15 16:53:19.568591-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:53:19.593131-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15 16:53:19.723373-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:53:19.853297-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:53:19.922718-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:53:19.981508-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:53:20.052595-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15T16:53:20.068000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7402 ... 67536572 69616c1c }'; got: { + action = 1; + count = 2; + msgSerial = 28; +} +2022-12-15T16:53:20.068000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 234 +2022-12-15T16:53:20.069000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15 16:53:23.442225-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238033421356801ns <= 1671134003433419008ns. No status will be produced. +2022-12-15T16:53:23.448000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:53:23.448000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:53:23.448000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:53:23.449000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:345"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.05028306,37.333679979999999,0]},\"properties\":{\"bearing\":255.58999633789062,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":32.979999542236328,\"time\":1671134003.433419,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 30; +}'; got: {length = 430, bytes = 0x84a96d73 67536572 69616c1e a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:23.449000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:23.458000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:234"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.05028306,37.333679979999999,0]},\"properties\":{\"bearing\":255.58999633789062,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":32.979999542236328,\"time\":1671134003.433419,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 31; +}'; got: {length = 430, bytes = 0x84a96d73 67536572 69616c1f a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:23.458000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:23.460000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.05028306,37.333679979999999,0]},\"properties\":{\"bearing\":255.58999633789062,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":32.979999542236328,\"time\":1671134003.433419,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 32; +}'; got: {length = 430, bytes = 0x84a96d73 67536572 69616c20 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:23.460000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:23.576000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c1e }'; got: { + action = 1; + count = 1; + msgSerial = 30; +} +2022-12-15 16:53:23.576145-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15T16:53:23.576000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 345 +2022-12-15 16:53:23.577482-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15 16:53:23.701858-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:53:23.703887-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:53:23.830418-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:53:23.955786-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15 16:53:24.059545-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15T16:53:24.078000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7402 ... 67536572 69616c1f }'; got: { + action = 1; + count = 2; + msgSerial = 31; +} +2022-12-15T16:53:24.078000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 234 +2022-12-15T16:53:24.079000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15 16:53:26.430210-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238030434414849ns <= 1671134006420360960ns. No status will be produced. +2022-12-15T16:53:26.436000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:53:26.436000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:53:26.436000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:53:26.437000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:345"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.05137547,37.33344889,0]},\"properties\":{\"bearing\":255.58999633789062,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":33.729999542236328,\"time\":1671134006.420361,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 33; +}'; got: {length = 423, bytes = 0x84a96d73 67536572 69616c21 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:26.437000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:26.446000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:234"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.05137547,37.33344889,0]},\"properties\":{\"bearing\":255.58999633789062,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":33.729999542236328,\"time\":1671134006.420361,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 34; +}'; got: {length = 423, bytes = 0x84a96d73 67536572 69616c22 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:26.447000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:26.447000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.05137547,37.33344889,0]},\"properties\":{\"bearing\":255.58999633789062,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":33.729999542236328,\"time\":1671134006.420361,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 35; +}'; got: {length = 423, bytes = 0x84a96d73 67536572 69616c23 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:26.447000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15 16:53:26.560184-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15T16:53:26.566000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c21 }'; got: { + action = 1; + count = 1; + msgSerial = 33; +} +2022-12-15T16:53:26.566000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 345 +2022-12-15 16:53:26.686468-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:53:26.802642-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:53:26.934993-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:53:27.044456-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15T16:53:27.071000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7402 ... 67536572 69616c22 }'; got: { + action = 1; + count = 2; + msgSerial = 34; +} +2022-12-15T16:53:27.072000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 234 +2022-12-15T16:53:27.072000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15 16:53:27.178113-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15 16:53:27.288279-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:53:29.439693-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238027425431553ns <= 1671134009429344256ns. No status will be produced. +2022-12-15T16:53:29.445000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:53:29.445000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:53:29.445000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:53:29.445000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:345"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.05246948,37.333211009999999,0]},\"properties\":{\"bearing\":254.8800048828125,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":33.490001678466797,\"time\":1671134009.4293442,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 36; +}'; got: {length = 430, bytes = 0x84a96d73 67536572 69616c24 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:29.445000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:29.454000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:234"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.05246948,37.333211009999999,0]},\"properties\":{\"bearing\":254.8800048828125,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":33.490001678466797,\"time\":1671134009.4293442,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 37; +}'; got: {length = 430, bytes = 0x84a96d73 67536572 69616c25 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:29.454000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:29.454000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.05246948,37.333211009999999,0]},\"properties\":{\"bearing\":254.8800048828125,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":33.490001678466797,\"time\":1671134009.4293442,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 38; +}'; got: {length = 430, bytes = 0x84a96d73 67536572 69616c26 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:29.455000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15 16:53:29.571029-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:53:29.572225-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15T16:53:29.575000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c24 }'; got: { + action = 1; + count = 1; + msgSerial = 36; +} +2022-12-15T16:53:29.575000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 345 +2022-12-15 16:53:29.701401-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:53:29.702367-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:53:29.832330-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:53:29.832724-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15 16:53:29.961390-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15T16:53:30.076000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7402 ... 67536572 69616c25 }'; got: { + action = 1; + count = 2; + msgSerial = 37; +} +2022-12-15T16:53:30.076000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 234 +2022-12-15T16:53:30.077000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15T16:53:31.914000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 9, bytes = 0x81a6616374696f6e00}'; got: { + action = 0; +} +2022-12-15 16:53:33.438071-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Warning, nav-native]: Got location timestamp from the past: -7552238023425520897ns <= 1671134013429254912ns. No status will be produced. +2022-12-15T16:53:33.443000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService]@(DefaultLocationService.swift:179) passiveLocationManager.didUpdateLocation +2022-12-15T16:53:33.443000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:898) locationService.didUpdateRawLocation. +2022-12-15T16:53:33.443000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:903) locationService.didUpdateEnhancedLocation. +2022-12-15T16:53:33.444000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:345"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.05391527,37.332904059999997,0]},\"properties\":{\"bearing\":255.22999572753906,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":33.419998168945312,\"time\":1671134013.429255,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 39; +}'; got: {length = 430, bytes = 0x84a96d73 67536572 69616c27 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:33.444000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:33.444000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:234"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.05391527,37.332904059999997,0]},\"properties\":{\"bearing\":255.22999572753906,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":33.419998168945312,\"time\":1671134013.429255,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 40; +}'; got: {length = 430, bytes = 0x84a96d73 67536572 69616c28 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:33.454000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:33.455000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 15; + channel = "tracking:123"; + messages = ( + { + connectionId = 3kD7nUjLkt; + data = "{\"skippedLocations\":[],\"type\":\"ACTUAL\",\"intermediateLocations\":[],\"location\":{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.05391527,37.332904059999997,0]},\"properties\":{\"bearing\":255.22999572753906,\"accuracyBearing\":0,\"accuracyHorizontal\":5,\"speed\":33.419998168945312,\"time\":1671134013.429255,\"accuracySpeed\":0}}}"; + name = enhanced; + } + ); + msgSerial = 41; +}'; got: {length = 430, bytes = 0x84a96d73 67536572 69616c29 a86d6573 ... a6616374 696f6e0f } +2022-12-15T16:53:33.455000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 15 - Message +2022-12-15T16:53:33.568000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c27 }'; got: { + action = 1; + count = 1; + msgSerial = 39; +} +2022-12-15T16:53:33.568000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 345 +2022-12-15 16:53:33.575766-0300 PublisherExampleSwiftUI[25086:2130100] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733191/0 status = Unauthorized +2022-12-15 16:53:33.823024-0300 PublisherExampleSwiftUI[25086:2130102] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/733192/0 status = Unauthorized +2022-12-15 16:53:33.925878-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731751/0 status = Unauthorized +2022-12-15 16:53:34.056453-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45777/0 status = Unauthorized +2022-12-15T16:53:34.064000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7402 ... 67536572 69616c28 }'; got: { + action = 1; + count = 2; + msgSerial = 40; +} +2022-12-15T16:53:34.065000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 234 +2022-12-15T16:53:34.065000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: online for trackable: 123 +2022-12-15 16:53:34.173684-0300 PublisherExampleSwiftUI[25086:2130101] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 2/731752/0 status = Unauthorized +2022-12-15 16:53:34.178658-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 1/45778/0 status = Unauthorized +2022-12-15 16:53:34.301432-0300 PublisherExampleSwiftUI[25086:2130099] [Mapbox] [Error, nav-native]: Failed tile response: dataset mapbox/driving-traffic version 2022_12_11-03_00_05 tile = 0/2804/0 status = Unauthorized +2022-12-15T16:53:35.021000-03:00 debug: Received location history data: {"version":"2.0.0","agents":"ably-asset-tracking-swift\/1.0.0-rc.1 ably-cocoa\/1.2.19 iOS\/16.2.0","events":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.0325498,37.335195720000002,0]},"properties":{"bearing":179.64999389648438,"accuracyBearing":0,"accuracyHorizontal":5,"speed":1.940000057220459,"time":1671133939.4211159,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.03369603,37.334779769999997,0]},"properties":{"bearing":255.58999633789062,"accuracyBearing":0,"accuracyHorizontal":5,"speed":17.209999084472656,"time":1671133952.4285378,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.0350347,37.33460316,0]},"properties":{"bearing":265.07998657226562,"accuracyBearing":0,"accuracyHorizontal":5,"speed":22.450000762939453,"time":1671133958.4328961,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.03638578,37.33454218,0]},"properties":{"bearing":268.95001220703125,"accuracyBearing":0,"accuracyHorizontal":5,"speed":25.100000381469727,"time":1671133963.423203,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.03753997,37.33453652,0]},"properties":{"bearing":268.95001220703125,"accuracyBearing":0,"accuracyHorizontal":5,"speed":26.120000839233398,"time":1671133967.418988,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.03875936999999,37.334503789999999,0]},"properties":{"bearing":267.8900146484375,"accuracyBearing":0,"accuracyHorizontal":5,"speed":27.979999542236328,"time":1671133971.421314,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.03941089,37.33448791,0]},"properties":{"bearing":267.8900146484375,"accuracyBearing":0,"accuracyHorizontal":5,"speed":29.239999771118164,"time":1671133973.4279768,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.04077830999999,37.334458400000003,0]},"properties":{"bearing":268.58999633789062,"accuracyBearing":0,"accuracyHorizontal":5,"speed":31.670000076293945,"time":1671133977.420217,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.04226334000001,37.334448430000002,0]},"properties":{"bearing":270,"accuracyBearing":0,"accuracyHorizontal":5,"speed":33.610000610351562,"time":1671133981.426719,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.04342255,37.334459449999997,0]},"properties":{"bearing":270,"accuracyBearing":0,"accuracyHorizontal":5,"speed":34.509998321533203,"time":1671133984.4286017,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.04458579,37.33445442,0]},"properties":{"bearing":269.64999389648438,"accuracyBearing":0,"accuracyHorizontal":5,"speed":34.060001373291016,"time":1671133987.433919,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.04571727,37.334436570000001,0]},"properties":{"bearing":267.54000854492188,"accuracyBearing":0,"accuracyHorizontal":5,"speed":33.009998321533203,"time":1671133990.4326658,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.04607568,37.334417080000001,0]},"properties":{"bearing":265.42999267578125,"accuracyBearing":0,"accuracyHorizontal":5,"speed":32.659999847412109,"time":1671133991.4239399,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.04751057999999,37.334269849999998,0]},"properties":{"bearing":259.10000610351562,"accuracyBearing":0,"accuracyHorizontal":5,"speed":30.940000534057617,"time":1671133995.4179389,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.04886543000001,37.333987759999999,0]},"properties":{"bearing":254.17999267578125,"accuracyBearing":0,"accuracyHorizontal":5,"speed":31.600000381469727,"time":1671133999.4235849,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.05028306,37.333679979999999,0]},"properties":{"bearing":255.58999633789062,"accuracyBearing":0,"accuracyHorizontal":5,"speed":32.979999542236328,"time":1671134003.433419,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.05137547,37.33344889,0]},"properties":{"bearing":255.58999633789062,"accuracyBearing":0,"accuracyHorizontal":5,"speed":33.729999542236328,"time":1671134006.420361,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.05246948,37.333211009999999,0]},"properties":{"bearing":254.8800048828125,"accuracyBearing":0,"accuracyHorizontal":5,"speed":33.490001678466797,"time":1671134009.4293442,"accuracySpeed":0}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-122.05391527,37.332904059999997,0]},"properties":{"bearing":255.22999572753906,"accuracyBearing":0,"accuracyHorizontal":5,"speed":33.419998168945312,"time":1671134013.429255,"accuracySpeed":0}}]} +2022-12-15T16:53:35.021000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 14; + channel = "tracking:234"; + msgSerial = 42; + presence = ( + { + action = 3; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + } + ); +}'; got: {length = 132, bytes = 0x84a96d73 67536572 69616c2a a8707265 ... a6616374 696f6e0e } +2022-12-15T16:53:35.021000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 14 - Presence +2022-12-15T16:53:35.021000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 14; + channel = "tracking:345"; + msgSerial = 43; + presence = ( + { + action = 3; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + } + ); +}'; got: {length = 132, bytes = 0x84a96d73 67536572 69616c2b a8707265 ... a6616374 696f6e0e } +2022-12-15T16:53:35.021000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 14 - Presence +2022-12-15T16:53:35.021000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 14; + channel = "tracking:123"; + msgSerial = 44; + presence = ( + { + action = 3; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + } + ); +}'; got: {length = 132, bytes = 0x84a96d73 67536572 69616c2c a8707265 ... a6616374 696f6e0e } +2022-12-15T16:53:35.023000-03:00 debug: Wrote location history data to file: /Users/lawrence/Library/Developer/CoreSimulator/Devices/4EDF4713-21D4-4BF1-920A-38999893F359/data/Containers/Data/Application/950A8DFF-EB4D-4A39-AE7F-08F52329F481/Library/Application Support/com.ably.tracking.example.publisher/uploads/8A03A966-ABBF-4A04-93D1-BAF61DED6B2B/data +2022-12-15T16:53:35.026000-03:00 info: Starting upload 8A03A966-ABBF-4A04-93D1-BAF61DED6B2B of location history data +2022-12-15T16:53:35.026000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 14 - Presence +2022-12-15T16:53:35.042000-03:00 debug: Copied Mapbox raw history file to file: /Users/lawrence/Library/Developer/CoreSimulator/Devices/4EDF4713-21D4-4BF1-920A-38999893F359/data/Containers/Data/Application/950A8DFF-EB4D-4A39-AE7F-08F52329F481/Library/Application Support/com.ably.tracking.example.publisher/uploads/7956D9BA-6AF6-497E-ADC8-029E5EA660C5/data +2022-12-15T16:53:35.042000-03:00 info: Starting upload 7956D9BA-6AF6-497E-ADC8-029E5EA660C5 of raw Mapbox data +2022-12-15T16:53:35.045000-03:00 debug: [noError] [assetTracking.publisher.DefaultLocationService.TemporaryFile]@(TemporaryFile.swift:29) Removed file at file:///Users/lawrence/Library/Developer/CoreSimulator/Devices/4EDF4713-21D4-4BF1-920A-38999893F359/data/Containers/Data/Application/950A8DFF-EB4D-4A39-AE7F-08F52329F481/Library/Caches/com.ably.AblyAssetTracking.publisher/2022-12-15T19-52-19Z_66fdd51b-a2cf-4707-92f0-d41ef40aa5a0.pbf.gz +2022-12-15T16:53:35.058000-03:00 info: Upload 8A03A966-ABBF-4A04-93D1-BAF61DED6B2B succeeded. +2022-12-15T16:53:35.071000-03:00 info: Upload 7956D9BA-6AF6-497E-ADC8-029E5EA660C5 succeeded. +2022-12-15T16:53:35.144000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7401 ... 67536572 69616c2a }'; got: { + action = 1; + count = 1; + msgSerial = 42; +} +2022-12-15T16:53:35.144000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:169) Left channel [id: 234] presence successfully +2022-12-15T16:53:35.144000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 320, bytes = 0x88a66163 74696f6e 0ea26964 ad336b44 ... a6616374 696f6e03 }'; got: { + action = 14; + channel = "tracking:234"; + channelSerial = "e7dCEbzgQBJB9k43077660:14"; + connectionId = 3kD7nUjLkt; + connectionSerial = 6; + id = "3kD7nUjLkt:42"; + presence = ( + { + action = 3; + clientId = "Asset Tracking Publisher Example"; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + id = "3kD7nUjLkt:42:0"; + timestamp = 1671134015058; + } + ); + timestamp = 1671134015058; +} +2022-12-15T16:53:35.144000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) received channel message 14 - Presence +2022-12-15T16:53:35.144000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:848) RT:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) handle PRESENCE message +2022-12-15T16:53:35.146000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 319, bytes = 0x88a66163 74696f6e 0ea26964 ad336b44 ... a6616374 696f6e03 }'; got: { + action = 14; + channel = "tracking:345"; + channelSerial = "e7dXYO_QQBJB0866163321:9"; + connectionId = 3kD7nUjLkt; + connectionSerial = 7; + id = "3kD7nUjLkt:43"; + presence = ( + { + action = 3; + clientId = "Asset Tracking Publisher Example"; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + id = "3kD7nUjLkt:43:0"; + timestamp = 1671134015061; + } + ); + timestamp = 1671134015061; +} +2022-12-15T16:53:35.146000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a27020 (tracking:345) received channel message 14 - Presence +2022-12-15T16:53:35.146000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:848) RT:0x600000c8d3b0 C:0x600000a27020 (tracking:345) handle PRESENCE message +2022-12-15T16:53:35.146000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:590) RT:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) channel state transitions from 2 - Attached to 3 - Detaching +2022-12-15T16:53:35.146000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 12; + channel = "tracking:234"; +}'; got: {length = 30, bytes = 0x82a76368 616e6e65 6cac7472 61636b69 ... a6616374 696f6e0c } +2022-12-15T16:53:35.146000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 12 - Detach +2022-12-15T16:53:35.146000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:250) Received presence update from channel +2022-12-15T16:53:35.146000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:932) publisherService.didReceivePresenceUpdate. Presence: Presence(action: AblyAssetTrackingInternal.PresenceAction.leave, type: AblyAssetTrackingInternal.PresenceType.publisher), Trackable: AblyAssetTrackingCore.Trackable +2022-12-15T16:53:35.146000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:250) Received presence update from channel +2022-12-15T16:53:35.146000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:932) publisherService.didReceivePresenceUpdate. Presence: Presence(action: AblyAssetTrackingInternal.PresenceAction.leave, type: AblyAssetTrackingInternal.PresenceType.publisher), Trackable: AblyAssetTrackingCore.Trackable +2022-12-15T16:53:35.146000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:297) Channel state for trackable 234 changed. New state: ConnectionState.offline +2022-12-15T16:53:35.146000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: offline for trackable: 234 +2022-12-15T16:53:35.148000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 320, bytes = 0x88a66163 74696f6e 0ea26964 ad336b44 ... a6616374 696f6e03 }'; got: { + action = 14; + channel = "tracking:123"; + channelSerial = "e7dXYO_QQBJB0841992737:19"; + connectionId = 3kD7nUjLkt; + connectionSerial = 8; + id = "3kD7nUjLkt:44"; + presence = ( + { + action = 3; + clientId = "Asset Tracking Publisher Example"; + connectionId = 3kD7nUjLkt; + data = "{\"type\":\"PUBLISHER\",\"rawLocations\":false}"; + id = "3kD7nUjLkt:44:0"; + timestamp = 1671134015064; + } + ); + timestamp = 1671134015064; +} +2022-12-15T16:53:35.148000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a86140 (tracking:123) received channel message 14 - Presence +2022-12-15T16:53:35.148000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:848) RT:0x600000c8d3b0 C:0x600000a86140 (tracking:123) handle PRESENCE message +2022-12-15T16:53:35.148000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:250) Received presence update from channel +2022-12-15T16:53:35.148000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:932) publisherService.didReceivePresenceUpdate. Presence: Presence(action: AblyAssetTrackingInternal.PresenceAction.leave, type: AblyAssetTrackingInternal.PresenceType.publisher), Trackable: AblyAssetTrackingCore.Trackable +2022-12-15T16:53:35.150000-03:00 error: [error(len:86): The operation couldn’t be completed. (AblyAssetTrackingCore.ErrorInformation error 1.)] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:788) +2022-12-15T16:53:35.150000-03:00 error: [error(len:86): The operation couldn’t be completed. (AblyAssetTrackingCore.ErrorInformation error 1.)] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:788) +2022-12-15T16:53:35.150000-03:00 error: [error(len:86): The operation couldn’t be completed. (AblyAssetTrackingCore.ErrorInformation error 1.)] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:788) +2022-12-15T16:53:35.265000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 30, bytes = 0x82a66163 74696f6e 0da76368 616e6e65 ... 6b696e67 3a323334 }'; got: { + action = 13; + channel = "tracking:234"; +} +2022-12-15T16:53:35.265000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) received channel message 13 - Detached +2022-12-15T16:53:35.265000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:590) RT:0x600000c8d3b0 C:0x600000a26f40 (tracking:234) channel state transitions from 3 - Detaching to 4 - Detached +2022-12-15T16:53:35.265000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:297) Channel state for trackable 234 changed. New state: ConnectionState.offline +2022-12-15T16:53:35.265000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: offline for trackable: 234 +2022-12-15T16:53:35.265000-03:00 info: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:199) Trackable 234 removed successfully. Was present true +2022-12-15T16:53:35.643000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 27, bytes = 0x83a66163 74696f6e 01a5636f 756e7402 ... 67536572 69616c2b }'; got: { + action = 1; + count = 2; + msgSerial = 43; +} +2022-12-15T16:53:35.644000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:169) Left channel [id: 345] presence successfully +2022-12-15T16:53:35.644000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:590) RT:0x600000c8d3b0 C:0x600000a27020 (tracking:345) channel state transitions from 2 - Attached to 3 - Detaching +2022-12-15T16:53:35.644000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 12; + channel = "tracking:345"; +}'; got: {length = 30, bytes = 0x82a76368 616e6e65 6cac7472 61636b69 ... a6616374 696f6e0c } +2022-12-15T16:53:35.644000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 12 - Detach +2022-12-15T16:53:35.645000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:169) Left channel [id: 123] presence successfully +2022-12-15T16:53:35.645000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:590) RT:0x600000c8d3b0 C:0x600000a86140 (tracking:123) channel state transitions from 2 - Attached to 3 - Detaching +2022-12-15T16:53:35.645000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 12; + channel = "tracking:123"; +}'; got: {length = 30, bytes = 0x82a76368 616e6e65 6cac7472 61636b69 ... a6616374 696f6e0c } +2022-12-15T16:53:35.645000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtime.m:1169) RT:0x600000c8d3b0 sending action 12 - Detach +2022-12-15T16:53:35.645000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:297) Channel state for trackable 345 changed. New state: ConnectionState.offline +2022-12-15T16:53:35.645000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: offline for trackable: 345 +2022-12-15T16:53:35.645000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:297) Channel state for trackable 123 changed. New state: ConnectionState.offline +2022-12-15T16:53:35.646000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: offline for trackable: 123 +2022-12-15T16:53:35.764000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 30, bytes = 0x82a66163 74696f6e 0da76368 616e6e65 ... 6b696e67 3a333435 }'; got: { + action = 13; + channel = "tracking:345"; +} +2022-12-15T16:53:35.765000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a27020 (tracking:345) received channel message 13 - Detached +2022-12-15T16:53:35.765000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:590) RT:0x600000c8d3b0 C:0x600000a27020 (tracking:345) channel state transitions from 3 - Detaching to 4 - Detached +2022-12-15T16:53:35.765000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:297) Channel state for trackable 345 changed. New state: ConnectionState.offline +2022-12-15T16:53:35.765000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: offline for trackable: 345 +2022-12-15T16:53:35.765000-03:00 info: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:199) Trackable 345 removed successfully. Was present true +2022-12-15T16:53:35.769000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 30, bytes = 0x82a66163 74696f6e 0da76368 616e6e65 ... 6b696e67 3a313233 }'; got: { + action = 13; + channel = "tracking:123"; +} +2022-12-15T16:53:35.769000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:663) R:0x600000c8d3b0 C:0x600000a86140 (tracking:123) received channel message 13 - Detached +2022-12-15T16:53:35.769000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTRealtimeChannel.m:590) RT:0x600000c8d3b0 C:0x600000a86140 (tracking:123) channel state transitions from 3 - Detaching to 4 - Detached +2022-12-15T16:53:35.770000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:297) Channel state for trackable 123 changed. New state: ConnectionState.offline +2022-12-15T16:53:35.770000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:912) ablyPublisher.didChangeChannelConnectionState. State: offline for trackable: 123 +2022-12-15T16:53:35.770000-03:00 info: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:199) Trackable 123 removed successfully. Was present true +2022-12-15T16:53:35.771000-03:00 info: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:208) All trackables removed. +2022-12-15T16:53:35.771000-03:00 info: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] Reachability: stopped listening for host realtime.ably.io +2022-12-15T16:53:35.771000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RT:0x600000c8d3b0 realtime is transitioning from 2 - Connected to 5 - Closing +2022-12-15T16:53:35.771000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTWebSocketTransport.m:102) R:0x600000c8d3b0 WS:0x6000017bb120 websocket sending action 7 - Close +2022-12-15T16:53:35.771000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder encoding '{ + action = 7; +}'; got: {length = 9, bytes = 0x81a6616374696f6e07} +2022-12-15T16:53:35.771000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:220) Connection to Ably changed. New state: ConnectionState.offline +2022-12-15T16:53:35.771000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:922) ablyPublisher.didChangeConnectionState. State: ConnectionState.offline +2022-12-15T16:53:35.888000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RS:0x600000292b20 ARTJsonLikeEncoder decoding '{length = 9, bytes = 0x81a6616374696f6e08}'; got: { + action = 8; +} +2022-12-15T16:53:35.889000-03:00 info: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] R:0x600000c8d3b0 Realtime closed +2022-12-15T16:53:35.889000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] RT:0x600000c8d3b0 realtime is transitioning from 5 - Closing to 6 - Closed +2022-12-15T16:53:35.889000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly.ablySDK] (ARTAuth.m:643) RS:0x600000292b20 authorization cancelled with (null) +2022-12-15T16:53:35.889000-03:00 debug: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:220) Connection to Ably changed. New state: ConnectionState.offline +2022-12-15T16:53:35.889000-03:00 debug: [noError] [assetTracking.publisher.DefaultPublisher]@(DefaultPublisher.swift:922) ablyPublisher.didChangeConnectionState. State: ConnectionState.offline +2022-12-15T16:53:35.891000-03:00 info: [noError] [assetTracking.publisher.DefaultAbly]@(DefaultAbly.swift:320) Ably connection closed successfully. diff --git a/Tools/README.md b/Tools/README.md index 807a8b81..37a6dc62 100644 --- a/Tools/README.md +++ b/Tools/README.md @@ -2,4 +2,7 @@ This directory contains tooling intended to be used by developers working on the Ably Asset Tracking Swift SDKs. -It currently just contains the [`Library`](Library) directory, which contains the [`LogParser` library](Library/LogParser) for parsing logs emitted by these SDKs, as well as [an example app for the `LogParser` library](Library/LogParserExample). +It currently contains the following directories: + +- [`Library`](Library) - Contains the [`LogParser` library](Library/LogParser) for parsing logs emitted by these SDKs, as well as [an example app for the `LogParser` library](Library/LogParserExample). +- [`Analysis`](Analysis) – Contains tools for analysing the behaviour of these SDKs.