diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 04a7b3b..4adfc7d 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: 33 target: default arch: x86_64 profile: Nexus 6 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/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..82c81ae 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.3) + - SnowplowTracker (5.3.1): - 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: a98063cb3a509197707c2a02b6487b3e15399331 + SnowplowTracker: 510913b6c2821dde7e16101dc313c2fb47326421 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..5d3f8a7 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..67e1c3c 100644 --- a/ios/Classes/readers/events/ConsentGrantedReader.swift +++ b/ios/Classes/readers/events/ConsentGrantedReader.swift @@ -27,8 +27,8 @@ 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() } - event.documents(jsons) + // 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..e4d14b1 100644 --- a/ios/Classes/readers/events/ConsentWithdrawnReader.swift +++ b/ios/Classes/readers/events/ConsentWithdrawnReader.swift @@ -30,8 +30,8 @@ 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() } - event.documents(jsons) + // 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..64cd488 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.3' + 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' }