From 15d8d94a62a8c82a165383a93229b74ac821041a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matu=CC=81s=CC=8C=20Tomlein?= Date: Mon, 10 Jul 2023 10:40:29 +0200 Subject: [PATCH] Upgrade underlying iOS and Android trackers to version 5 (close #36) --- .github/workflows/build.yml | 2 +- .vscode/launch.json | 2 +- android/build.gradle | 6 +++--- example/android/app/build.gradle | 2 +- example/android/build.gradle | 2 +- example/ios/Podfile.lock | 12 +++++------ example/ios/Runner.xcodeproj/project.pbxproj | 5 ++++- example/ios/Runner/Info.plist | 2 ++ ios/Classes/SnowplowTrackerController.swift | 2 +- .../TrackerConfigurationReader.swift | 21 ++++++++++++++++++- .../readers/events/ConsentGrantedReader.swift | 2 +- .../events/ConsentWithdrawnReader.swift | 2 +- ios/Classes/readers/events/TimingReader.swift | 2 +- .../readers/messages/EventMessageReader.swift | 4 ++-- ios/snowplow_tracker.podspec | 4 ++-- 15 files changed, 47 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 04a7b3b..43515dc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -66,7 +66,7 @@ jobs: - name: Run Flutter Driver tests uses: reactivecircus/android-emulator-runner@v2 with: - api-level: 30 + api-level: 31 target: default arch: x86_64 profile: Nexus 6 diff --git a/.vscode/launch.json b/.vscode/launch.json index 44713e7..947b326 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -7,7 +7,7 @@ "request": "launch", "type": "dart", "args":[ - "--dart-define=ENDPOINT=http://192.168.100.127:9090" + "--dart-define=ENDPOINT=http://192.168.100.2:9090" ] } ] diff --git a/android/build.gradle b/android/build.gradle index f219312..1daf64c 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -2,7 +2,7 @@ group 'com.snowplowanalytics.snowplow_tracker' version '1.0-SNAPSHOT' buildscript { - ext.kotlin_version = '1.7.10' + ext.kotlin_version = '1.8.0' repositories { google() mavenCentral() @@ -25,7 +25,7 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' android { - compileSdkVersion 31 + compileSdkVersion 33 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -47,5 +47,5 @@ android { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation "com.snowplowanalytics:snowplow-android-tracker:4.+" + implementation "com.snowplowanalytics:snowplow-android-tracker:5.+" } diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 132ca8a..1a4d9a9 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion flutter.compileSdkVersion + compileSdkVersion 33 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 diff --git a/example/android/build.gradle b/example/android/build.gradle index 06fd60d..c9cd053 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.7.10' + ext.kotlin_version = '1.8.0' repositories { google() mavenCentral() diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 304aaca..7f7135a 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -7,8 +7,8 @@ PODS: - Flutter - snowplow_tracker (0.3.0): - Flutter - - SnowplowTracker (~> 4.0) - - SnowplowTracker (4.0.0): + - SnowplowTracker (~> 5.4) + - SnowplowTracker (5.4.0): - FMDB (~> 2.7) DEPENDENCIES: @@ -32,10 +32,10 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a - integration_test: a1e7d09bd98eca2fc37aefd79d4f41ad37bdbbe5 - snowplow_tracker: 7e24aa9029c152d9e97f76578c83d3704c1f103b - SnowplowTracker: 2ddc6db70af5415a87ac279f044d27d140b3a2b8 + integration_test: 13825b8a9334a850581300559b8839134b124670 + snowplow_tracker: f3d9416ea1d05205fc242d4786b98d207337a6dc + SnowplowTracker: a7fa5ae461955637f773a51c941635f39a5b0747 PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3 -COCOAPODS: 1.11.3 +COCOAPODS: 1.12.0 diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 3fb93fc..e37467d 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -199,10 +199,12 @@ /* Begin PBXShellScriptBuildPhase section */ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( @@ -230,6 +232,7 @@ }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist index 73ecc60..a5107a1 100644 --- a/example/ios/Runner/Info.plist +++ b/example/ios/Runner/Info.plist @@ -45,5 +45,7 @@ CADisableMinimumFrameDurationOnPhone + UIApplicationSupportsIndirectInputEvents + diff --git a/ios/Classes/SnowplowTrackerController.swift b/ios/Classes/SnowplowTrackerController.swift index eb47e96..dfb919a 100644 --- a/ios/Classes/SnowplowTrackerController.swift +++ b/ios/Classes/SnowplowTrackerController.swift @@ -14,7 +14,7 @@ import SnowplowTracker class SnowplowTrackerController { static func createTracker(_ message: CreateTrackerMessageReader, arguments: [String: Any]) { - var controllers: [Configuration] = [] + var controllers: [ConfigurationProtocol] = [] if let trackerConfig = message.trackerConfig { controllers.append(trackerConfig.toConfiguration()) diff --git a/ios/Classes/readers/configurations/TrackerConfigurationReader.swift b/ios/Classes/readers/configurations/TrackerConfigurationReader.swift index 4ab8156..be40eba 100644 --- a/ios/Classes/readers/configurations/TrackerConfigurationReader.swift +++ b/ios/Classes/readers/configurations/TrackerConfigurationReader.swift @@ -24,7 +24,26 @@ struct TrackerConfigurationReader: Decodable { let applicationContext: Bool? var devicePlatformType: DevicePlatform? { - if let devicePlatform = self.devicePlatform { return SPStringToDevicePlatform(devicePlatform) } + if let devicePlatform = self.devicePlatform { + switch devicePlatform { + case "web": + return DevicePlatform.web + case "srv": + return DevicePlatform.serverSideApp + case "pc": + return DevicePlatform.desktop + case "app": + return DevicePlatform.general + case "tv": + return DevicePlatform.connectedTV + case "cnsl": + return DevicePlatform.gameConsole + case "iot": + return DevicePlatform.internetOfThings + default: + return DevicePlatform.mobile + } + } return nil } } diff --git a/ios/Classes/readers/events/ConsentGrantedReader.swift b/ios/Classes/readers/events/ConsentGrantedReader.swift index 79a273d..3e6e62b 100644 --- a/ios/Classes/readers/events/ConsentGrantedReader.swift +++ b/ios/Classes/readers/events/ConsentGrantedReader.swift @@ -27,7 +27,7 @@ extension ConsentGrantedReader { if let name = self.name { event.name(name) } if let description = self.documentDescription { event.documentDescription(description) } if let documents = self.consentDocuments { - let jsons = documents.map { $0.toConsentDocument().getPayload() } + let jsons = documents.map { $0.toConsentDocument().payload } event.documents(jsons) } return event diff --git a/ios/Classes/readers/events/ConsentWithdrawnReader.swift b/ios/Classes/readers/events/ConsentWithdrawnReader.swift index 1bca0ec..b8ff3ce 100644 --- a/ios/Classes/readers/events/ConsentWithdrawnReader.swift +++ b/ios/Classes/readers/events/ConsentWithdrawnReader.swift @@ -30,7 +30,7 @@ extension ConsentWithdrawnReader { if let name = self.name { event.name(name) } if let description = self.documentDescription { event.documentDescription(description) } if let documents = self.consentDocuments { - let jsons = documents.map { $0.toConsentDocument().getPayload() } + let jsons = documents.map { $0.toConsentDocument().payload } event.documents(jsons) } return event diff --git a/ios/Classes/readers/events/TimingReader.swift b/ios/Classes/readers/events/TimingReader.swift index ea2222c..411e1fd 100644 --- a/ios/Classes/readers/events/TimingReader.swift +++ b/ios/Classes/readers/events/TimingReader.swift @@ -21,7 +21,7 @@ struct TimingReader: Decodable { extension TimingReader { func toTiming() -> Timing { - let event = Timing(category: category, variable: variable, timing: NSNumber(value: timing)) + let event = Timing(category: category, variable: variable, timing: timing) if let label = self.label { event.label(label) } return event } diff --git a/ios/Classes/readers/messages/EventMessageReader.swift b/ios/Classes/readers/messages/EventMessageReader.swift index 7e48454..274886a 100644 --- a/ios/Classes/readers/messages/EventMessageReader.swift +++ b/ios/Classes/readers/messages/EventMessageReader.swift @@ -21,10 +21,10 @@ extension EventMessageReader { func addContextsToEvent(_ event: Event, arguments: [String: Any]) { if let readers = self.contexts, let readersArgs = arguments["contexts"] as? [[String: Any]] { - let contexts = zip(readers, readersArgs).map { (reader, readerArgs) in + let entities = zip(readers, readersArgs).map { (reader, readerArgs) in reader.toSelfDescribingJson(arguments: readerArgs) }.compactMap { $0 } - event.contexts(NSMutableArray(array: contexts)) + event.entities(entities) } } } diff --git a/ios/snowplow_tracker.podspec b/ios/snowplow_tracker.podspec index 4acd96a..37e822b 100644 --- a/ios/snowplow_tracker.podspec +++ b/ios/snowplow_tracker.podspec @@ -15,8 +15,8 @@ A package for tracking Snowplow events in Flutter apps. s.source = { :path => '.' } s.source_files = 'Classes/**/*' s.dependency 'Flutter' - s.dependency 'SnowplowTracker', '~> 4.0' - s.platform = :ios, '9.0' + s.dependency 'SnowplowTracker', '~> 5.4' + s.platform = :ios, '11.0' # Flutter.framework does not contain a i386 slice. s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }