diff --git a/CHANGELOG.md b/CHANGELOG.md index 78cf83b0..38d55148 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Airship DotNet Changelog +## Version 19.5.0 - Feb 7, 2025 +Minor release that updates the Android SDK to 18.7.0, including AndroidX library updates. + +### Changes +- Updated Android SDK to 18.7.0 + ## Version 19.4.1 - Dec 12, 2024 Minor release that updates the Airship.Net package to no longer depend on MAUI and adds methods to fetch channel and contact subscription lists to the cross-platform library. diff --git a/Directory.Build.props b/Directory.Build.props index ffee4e55..8fd53cca 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -5,15 +5,15 @@ - 17.8.1 - 17.8.1.1 + 18.7.0 + 18.7.0 17.10.1 - 17.10.1.1 + 17.10.1.2 - 19.4.1 - 19.4.1 + 19.5.0 + 19.5.0 diff --git a/airship.properties b/airship.properties index 562e0d07..2ebf3bad 100644 --- a/airship.properties +++ b/airship.properties @@ -1,9 +1,9 @@ # Airship native SDK versions iosVersion = 17.10.1 -androidVersion = 17.8.1 +androidVersion = 18.7.0 # Airship.Net cross-platform version -crossPlatformVersion = 19.4.1 +crossPlatformVersion = 19.5.0 # Filename of the iOS SDK zip file iosFrameworkZip = Airship-Xcode15.zip @@ -12,7 +12,7 @@ iosFrameworkZip = Airship-Xcode15.zip # If > 0, the revision number will be added to the versions # defined above as a 4th segment (i.e., MAJOR.MINOR.PATCH.REVISION). # If = 0, NuGet packages will be versioned using standard 3-segment semver. -androidRevision = 1 -iosRevision = 1 +androidRevision = 0 +iosRevision = 2 crossPlatformRevision = 0 diff --git a/binderator/config.json b/binderator/config.json index 0baf5c32..03cfb23f 100644 --- a/binderator/config.json +++ b/binderator/config.json @@ -17,96 +17,96 @@ { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-adm", - "version": "17.8.1", - "nugetVersion": "17.8.1", + "version": "18.7.0", + "nugetVersion": "18.7.0", "nugetId": "Airship.Net.Android.Adm", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-automation", - "version": "17.8.1", - "nugetVersion": "17.8.1", + "version": "18.7.0", + "nugetVersion": "18.7.0", "nugetId": "Airship.Net.Android.Automation", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-core", - "version": "17.8.1", - "nugetVersion": "17.8.1", + "version": "18.7.0", + "nugetVersion": "18.7.0", "nugetId": "Airship.Net.Android.Core", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-fcm", - "version": "17.8.1", - "nugetVersion": "17.8.1", + "version": "18.7.0", + "nugetVersion": "18.7.0", "nugetId": "Airship.Net.Android.Fcm", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-feature-flag", - "version": "17.8.1", - "nugetVersion": "17.8.1", + "version": "18.7.0", + "nugetVersion": "18.7.0", "nugetId": "Airship.Net.Android.FeatureFlag", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-layout", - "version": "17.8.1", - "nugetVersion": "17.8.1", + "version": "18.7.0", + "nugetVersion": "18.7.0", "nugetId": "Airship.Net.Android.Layout", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-live-update", - "version": "17.8.1", - "nugetVersion": "17.8.1", + "version": "18.7.0", + "nugetVersion": "18.7.0", "nugetId": "Airship.Net.Android.LiveUpdate", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-message-center", - "version": "17.8.1", - "nugetVersion": "17.8.1", + "version": "18.7.0", + "nugetVersion": "18.7.0", "nugetId": "Airship.Net.Android.MessageCenter", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-preference-center", - "version": "17.8.1", - "nugetVersion": "17.8.1", + "version": "18.7.0", + "nugetVersion": "18.7.0", "nugetId": "Airship.Net.Android.PreferenceCenter", "dependencyOnly": false }, { "groupId": "androidx.annotation", "artifactId": "annotation", - "version": "1.5.0", - "nugetVersion": "1.5.0.2", + "version": "1.9.1", + "nugetVersion": "1.9.1.1", "nugetId": "Xamarin.AndroidX.Annotation", "dependencyOnly": true }, { "groupId": "androidx.appcompat", "artifactId": "appcompat", - "version": "1.6.1", - "nugetVersion": "1.6.0.1", + "version": "1.7.0", + "nugetVersion": "1.7.0.3", "nugetId": "Xamarin.AndroidX.AppCompat", "dependencyOnly": true }, { "groupId": "androidx.concurrent", "artifactId": "concurrent-futures", - "version": "1.1.0", - "nugetVersion": "1.1.0.11", + "version": "1.2.0", + "nugetVersion": "1.2.0.4", "nugetId": "Xamarin.AndroidX.Concurrent.Futures", "dependencyOnly": true }, @@ -114,15 +114,15 @@ "groupId": "androidx.constraintlayout", "artifactId": "constraintlayout", "version": "2.1.4", - "nugetVersion": "2.1.4.3", + "nugetVersion": "2.1.4.16", "nugetId": "Xamarin.AndroidX.ConstraintLayout", "dependencyOnly": true }, { "groupId": "androidx.core", "artifactId": "core", - "version": "1.9.0", - "nugetVersion": "1.9.0.2", + "version": "1.15.0", + "nugetVersion": "1.15.0.1", "nugetId": "Xamarin.AndroidX.Core", "dependencyOnly": true }, @@ -130,79 +130,87 @@ "groupId": "androidx.customview", "artifactId": "customview", "version": "1.1.0", - "nugetVersion": "1.1.0.15", + "nugetVersion": "1.1.0.29", "nugetId": "Xamarin.AndroidX.CustomView", "dependencyOnly": true }, { "groupId": "androidx.fragment", "artifactId": "fragment", - "version": "1.5.5", - "nugetVersion": "1.5.5.1", + "version": "1.8.3", + "nugetVersion": "1.8.5.1", "nugetId": "Xamarin.AndroidX.Fragment", "dependencyOnly": true }, + { + "groupId": "androidx.fragment", + "artifactId": "fragment-ktx", + "version": "1.8.3", + "nugetVersion": "1.8.5.1", + "nugetId": "Xamarin.AndroidX.Fragment.Ktx", + "dependencyOnly": true + }, { "groupId": "androidx.lifecycle", "artifactId": "lifecycle-common", - "version": "2.5.1", - "nugetVersion": "2.5.1.1", + "version": "2.8.7", + "nugetVersion": "2.8.7.1", "nugetId": "Xamarin.AndroidX.Lifecycle.Common", "dependencyOnly": true }, { "groupId": "androidx.lifecycle", "artifactId": "lifecycle-common-java8", - "version": "2.5.1", - "nugetVersion": "2.5.1.1", + "version": "2.8.7", + "nugetVersion": "2.8.7.1", "nugetId": "Xamarin.AndroidX.Lifecycle.Common.Java8", "dependencyOnly": true }, { "groupId": "androidx.lifecycle", "artifactId": "lifecycle-runtime-ktx", - "version": "2.5.1", - "nugetVersion": "2.5.1.1", + "version": "2.8.7", + "nugetVersion": "2.8.7.1", "nugetId": "Xamarin.AndroidX.Lifecycle.Runtime.Ktx", "dependencyOnly": true }, { "groupId": "androidx.lifecycle", "artifactId": "lifecycle-viewmodel-ktx", - "version": "2.5.1", - "nugetVersion": "2.5.1.1", + "version": "2.8.7", + "nugetVersion": "2.8.7.1", "nugetId": "Xamarin.AndroidX.Lifecycle.ViewModel.Ktx", "dependencyOnly": true }, { "groupId": "androidx.recyclerview", "artifactId": "recyclerview", - "version": "1.2.1", - "nugetVersion": "1.2.1.9", + "version": "1.3.2", + "nugetVersion": "1.3.2.8", "nugetId": "Xamarin.AndroidX.RecyclerView", "dependencyOnly": true }, { "groupId": "androidx.room", "artifactId": "room-ktx", - "version": "2.5.1", - "nugetVersion": "2.5.0", + "version": "2.6.1", + "nugetVersion": "2.6.1.8", "nugetId": "Xamarin.AndroidX.Room.Room.Ktx", "dependencyOnly": true }, { "groupId": "androidx.room", "artifactId": "room-runtime", - "version": "2.5.1", - "nugetVersion": "2.5.0", + "version": "2.6.1", + "nugetVersion": "2.6.1.8", "nugetId": "Xamarin.AndroidX.Room.Runtime", "dependencyOnly": true }, { "groupId": "androidx.startup", "artifactId": "startup-runtime", - "version": "1.1.1", - "nugetVersion": "1.1.1.4", + "version": "1.2.0", + "nugetVersion": "1.2.0.1", "nugetId": "Xamarin.AndroidX.Startup.StartupRuntime", "dependencyOnly": true }, @@ -210,79 +218,87 @@ "groupId": "androidx.swiperefreshlayout", "artifactId": "swiperefreshlayout", "version": "1.1.0", - "nugetVersion": "1.1.0.10", + "nugetVersion": "1.1.0.24", "nugetId": "Xamarin.AndroidX.SwipeRefreshLayout", "dependencyOnly": true }, { "groupId": "androidx.webkit", "artifactId": "webkit", - "version": "1.6.0", - "nugetVersion": "1.6.0", + "version": "1.12.1", + "nugetVersion": "1.12.1.1", "nugetId": "Xamarin.AndroidX.WebKit", "dependencyOnly": true }, { "groupId": "androidx.work", "artifactId": "work-runtime", - "version": "2.8.0", - "nugetVersion": "2.7.1.5", + "version": "2.10.0", + "nugetVersion": "2.10.0.1", "nugetId": "Xamarin.AndroidX.Work.Runtime", "dependencyOnly": true }, + { + "groupId": "com.github.bumptech.glide", + "artifactId": "glide", + "version": "4.16.0", + "nugetVersion": "4.16.0.6", + "nugetId": "Xamarin.Android.Glide", + "dependencyOnly": true + }, { "groupId": "com.google.android.gms", "artifactId": "play-services-base", - "version": "18.1.0", - "nugetVersion": "118.1.0.1", + "version": "18.5.0", + "nugetVersion": "118.5.0.3", "nugetId": "Xamarin.GooglePlayServices.Base", "dependencyOnly": true }, { "groupId": "com.google.android.material", "artifactId": "material", - "version": "1.6.1", - "nugetVersion": "1.6.1.1", + "version": "1.11.0", + "nugetVersion": "1.11.0.3", "nugetId": "Xamarin.Google.Android.Material", "dependencyOnly": true }, { "groupId": "com.google.firebase", "artifactId": "firebase-messaging", - "version": "23.1.1", - "nugetVersion": "123.1.1.1", + "version": "24.1.0", + "nugetVersion": "124.1.0", "nugetId": "Xamarin.Firebase.Messaging", "dependencyOnly": true }, { "groupId": "org.jetbrains.kotlin", "artifactId": "kotlin-stdlib", - "version": "1.7.10", - "nugetVersion": "1.8.0.1", + "version": "2.0.21", + "nugetVersion": "2.0.21.2", "nugetId": "Xamarin.Kotlin.StdLib", "dependencyOnly": true }, { "groupId": "org.jetbrains.kotlin", "artifactId": "kotlin-stdlib-jdk8", - "version": "1.7.10", - "nugetVersion": "1.8.0.1", + "version": "2.0.21", + "nugetVersion": "2.0.21.2", "nugetId": "Xamarin.Kotlin.StdLib.Jdk8", "dependencyOnly": true }, { "groupId": "org.jetbrains.kotlinx", "artifactId": "kotlinx-coroutines-android", - "version": "1.6.4", - "nugetVersion": "1.6.4.2", + "version": "1.9.0", + "nugetVersion": "1.9.0.2", "nugetId": "Xamarin.KotlinX.Coroutines.Android", "dependencyOnly": true }, { "groupId": "org.jetbrains.kotlinx", "artifactId": "kotlinx-coroutines-core", - "version": "1.6.4", - "nugetVersion": "1.6.4.2", + "version": "1.9.0", + "nugetVersion": "1.9.0.2", "nugetId": "Xamarin.KotlinX.Coroutines.Core", "dependencyOnly": true } diff --git a/binderator/source/com.urbanairship.android/urbanairship-automation/Transforms/Metadata.xml b/binderator/source/com.urbanairship.android/urbanairship-automation/Transforms/Metadata.xml index c8fb9ec3..a1346102 100644 --- a/binderator/source/com.urbanairship.android/urbanairship-automation/Transforms/Metadata.xml +++ b/binderator/source/com.urbanairship.android/urbanairship-automation/Transforms/Metadata.xml @@ -19,5 +19,8 @@ + + + diff --git a/binderator/source/com.urbanairship.android/urbanairship-core/Additions/UAirship.cs b/binderator/source/com.urbanairship.android/urbanairship-core/Additions/UAirship.cs index 22a06a22..bc7f8d46 100644 --- a/binderator/source/com.urbanairship.android/urbanairship-core/Additions/UAirship.cs +++ b/binderator/source/com.urbanairship.android/urbanairship-core/Additions/UAirship.cs @@ -30,7 +30,7 @@ static UAirship() if (crossPlatformVersions.Length >= 1) { var version = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(UACrossPlatformVersionAttribute), false)[0] as UACrossPlatformVersionAttribute; - airship.Analytics.RegisterSDKExtension(AnalyticsClass.ExtensionXamarin, version!.Version.ToString()); + airship.Analytics.RegisterSDKExtension(Extension.DotNet!, version!.Version.ToString()); } })); } diff --git a/binderator/source/com.urbanairship.android/urbanairship-message-center/Additions/Message.cs b/binderator/source/com.urbanairship.android/urbanairship-message-center/Additions/Message.cs index 7c37c181..529da189 100644 --- a/binderator/source/com.urbanairship.android/urbanairship-message-center/Additions/Message.cs +++ b/binderator/source/com.urbanairship.android/urbanairship-message-center/Additions/Message.cs @@ -8,7 +8,7 @@ public partial class Message { int Java.Lang.IComparable.CompareTo(Java.Lang.Object obj) { - return CompareTo ((Message) obj); + return CompareTo((Message) obj); } } } diff --git a/binderator/source/com.urbanairship.android/urbanairship-preference-center/Transforms/Metadata.xml b/binderator/source/com.urbanairship.android/urbanairship-preference-center/Transforms/Metadata.xml index 802b43c9..073e07ea 100644 --- a/binderator/source/com.urbanairship.android/urbanairship-preference-center/Transforms/Metadata.xml +++ b/binderator/source/com.urbanairship.android/urbanairship-preference-center/Transforms/Metadata.xml @@ -1,4 +1,10 @@  UrbanAirship.PreferenceCenter + + Java.Lang.Object + Java.Lang.Object[] + + Java.Lang.Object + Java.Lang.Object[] diff --git a/src/Airship.Net/Platforms/Android/Airship.cs b/src/Airship.Net/Platforms/Android/Airship.cs index b452c01e..dcd29812 100644 --- a/src/Airship.Net/Platforms/Android/Airship.cs +++ b/src/Airship.Net/Platforms/Android/Airship.cs @@ -111,7 +111,7 @@ public bool UserNotificationsEnabled public Features EnabledFeatures { - get => FeaturesFromUAFeatures(UAirship.Shared().PrivacyManager.EnabledFeatures); + get => FeaturesFromUAFeatures(UAirship.Shared().PrivacyManager.EnabledFeatures.ToArray()!); set => UAirship.Shared().PrivacyManager.SetEnabledFeatures(UaFeaturesFromFeatures(value)); } @@ -123,68 +123,68 @@ public Features EnabledFeatures public bool IsAnyFeatureEnabled() => EnabledFeatures != Features.None; - private static int[] UaFeaturesFromFeatures(Features features) + private static PrivacyManager.Feature[] UaFeaturesFromFeatures(Features features) { - List uAFeatures = new(); + List uAFeatures = new(); if (features.HasFlag(Features.InAppAutomation)) { - uAFeatures.Add(PrivacyManager.FeatureInAppAutomation); + uAFeatures.Add(PrivacyManager.Feature.InAppAutomation); } if (features.HasFlag(Features.MessageCenter)) { - uAFeatures.Add(PrivacyManager.FeatureMessageCenter); + uAFeatures.Add(PrivacyManager.Feature.MessageCenter); } if (features.HasFlag(Features.Push)) { - uAFeatures.Add(PrivacyManager.FeaturePush); + uAFeatures.Add(PrivacyManager.Feature.Push); } if (features.HasFlag(Features.Analytics)) { - uAFeatures.Add(PrivacyManager.FeatureAnalytics); + uAFeatures.Add(PrivacyManager.Feature.Analytics); } if (features.HasFlag(Features.TagsAndAttributes)) { - uAFeatures.Add(PrivacyManager.FeatureTagsAndAttributes); + uAFeatures.Add(PrivacyManager.Feature.TagsAndAttributes); } if (features.HasFlag(Features.Contacts)) { - uAFeatures.Add(PrivacyManager.FeatureContacts); + uAFeatures.Add(PrivacyManager.Feature.Contacts); } return uAFeatures.ToArray(); } - private static Features FeaturesFromUAFeatures(int uAFeatures) + private static Features FeaturesFromUAFeatures(PrivacyManager.Feature[] uAFeatures) { Features features = Features.None; - if ((uAFeatures & PrivacyManager.FeatureInAppAutomation) == PrivacyManager.FeatureInAppAutomation) + if (uAFeatures.Contains(PrivacyManager.Feature.InAppAutomation)) { features |= Features.InAppAutomation; } - if ((uAFeatures & PrivacyManager.FeatureMessageCenter) == PrivacyManager.FeatureMessageCenter) + if (uAFeatures.Contains(PrivacyManager.Feature.MessageCenter)) { features |= Features.MessageCenter; } - if ((uAFeatures & PrivacyManager.FeaturePush) == PrivacyManager.FeaturePush) + if (uAFeatures.Contains(PrivacyManager.Feature.Push)) { features |= Features.Push; } - if ((uAFeatures & PrivacyManager.FeatureAnalytics) == PrivacyManager.FeatureAnalytics) + if (uAFeatures.Contains(PrivacyManager.Feature.Analytics)) { features |= Features.Analytics; } - if ((uAFeatures & PrivacyManager.FeatureTagsAndAttributes) == PrivacyManager.FeatureTagsAndAttributes) + if (uAFeatures.Contains(PrivacyManager.Feature.TagsAndAttributes)) { features |= Features.TagsAndAttributes; } - if ((uAFeatures & PrivacyManager.FeatureContacts) == PrivacyManager.FeatureContacts) + if (uAFeatures.Contains(PrivacyManager.Feature.Contacts)) { features |= Features.Contacts; } @@ -607,8 +607,18 @@ private void ApplyContactSubscriptionListHelper(List InAppAutomation.Shared().Enabled; - set => InAppAutomation.Shared().Enabled = value; + get => IsFeatureEnabled(Features.InAppAutomation); + set + { + if (value) + { + EnableFeatures(Features.InAppAutomation); + } + else + { + DisableFeatures(Features.InAppAutomation); + } + } } public bool InAppAutomationPaused @@ -619,8 +629,8 @@ public bool InAppAutomationPaused public TimeSpan InAppAutomationDisplayInterval { - get => TimeSpan.FromMilliseconds(InAppAutomation.Shared().InAppMessageManager!.DisplayInterval); - set => InAppAutomation.Shared().InAppMessageManager!.SetDisplayInterval((long)value.TotalMilliseconds, TimeUnit.Milliseconds!); + get => TimeSpan.FromMilliseconds(InAppAutomation.Shared().InAppMessaging!.DisplayInterval); + set => InAppAutomation.Shared().InAppMessaging!.DisplayInterval = (long)value.TotalMilliseconds; } public bool OnDeepLink(string deepLink) diff --git a/src/SharedAssemblyInfo.Common.cs b/src/SharedAssemblyInfo.Common.cs index 3b09aca7..8308a196 100644 --- a/src/SharedAssemblyInfo.Common.cs +++ b/src/SharedAssemblyInfo.Common.cs @@ -6,4 +6,4 @@ // Change them to the values specific to your project. // Cross-platform version of the plugin -[assembly: UACrossPlatformVersion ("19.4.1")] +[assembly: UACrossPlatformVersion ("19.5.0")] diff --git a/src/SharedAssemblyInfo.CrossPlatform.cs b/src/SharedAssemblyInfo.CrossPlatform.cs index 8f46f2b1..61381d29 100644 --- a/src/SharedAssemblyInfo.CrossPlatform.cs +++ b/src/SharedAssemblyInfo.CrossPlatform.cs @@ -12,5 +12,5 @@ // The form "{Major}.{Minor}.*" will automatically update the build and revision, // and "{Major}.{Minor}.{Build}.*" will update just the revision. -[assembly: AssemblyVersion ("19.4.1")] +[assembly: AssemblyVersion ("19.5.0")] diff --git a/src/SharedAssemblyInfo.iOS.cs b/src/SharedAssemblyInfo.iOS.cs index df8aa93a..0cf49b40 100644 --- a/src/SharedAssemblyInfo.iOS.cs +++ b/src/SharedAssemblyInfo.iOS.cs @@ -17,4 +17,4 @@ // The form "{Major}.{Minor}.*" will automatically update the build and revision, // and "{Major}.{Minor}.{Build}.*" will update just the revision. -[assembly: AssemblyVersion ("19.4.1")] +[assembly: AssemblyVersion ("19.5.0")]