From 4e3fe07e7803b33f04ac429f9f31daea7435937c Mon Sep 17 00:00:00 2001 From: Josh Yaganeh <319444+jyaganeh@users.noreply.github.com> Date: Tue, 23 Jan 2024 14:14:16 -0800 Subject: [PATCH 01/10] Fix iOS custom event property reporting --- src/Airship.Net/Platforms/iOS/Airship.cs | 25 ++++++++++++------------ 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/Airship.Net/Platforms/iOS/Airship.cs b/src/Airship.Net/Platforms/iOS/Airship.cs index cbc4019..b8bf0bd 100644 --- a/src/Airship.Net/Platforms/iOS/Airship.cs +++ b/src/Airship.Net/Platforms/iOS/Airship.cs @@ -262,13 +262,13 @@ public void AddCustomEvent(CustomEvent customEvent) NSMutableDictionary propertyDictionary = new(); foreach (dynamic property in customEvent.PropertyList) { - if (string.IsNullOrEmpty(property.name)) + if (string.IsNullOrEmpty(property.Name)) { continue; } - NSString key = (NSString)property.name; - NSObject value = NSObject.FromObject(property.value); + NSString key = (NSString)property.Name; + NSObject value = NSObject.FromObject(property.Value); if (property is CustomEvent.Property stringArrayProperty) { @@ -283,8 +283,7 @@ public void AddCustomEvent(CustomEvent customEvent) } if (propertyDictionary.Count > 0) { - //TODO: - //uaEvent.Properties = new NSDictionary(propertyDictionary.Keys, propertyDictionary.Values); + uaEvent.Properties = new NSDictionary(propertyDictionary.Keys, propertyDictionary.Values); } } @@ -391,7 +390,7 @@ public void InboxMessages(Action> listMessages) public Channel.TagGroupsEditor EditChannelTagGroups() { - return new((List payload) => + return new(payload => { ChannelTagGroupHelper(payload, () => { @@ -402,7 +401,7 @@ public Channel.TagGroupsEditor EditChannelTagGroups() public Channel.TagGroupsEditor EditContactTagGroups() { - return new((List payload) => + return new(payload => { ContactTagGroupHelper(payload); }); @@ -413,7 +412,7 @@ public Channel.TagGroupsEditor EditContactTagGroups() public AttributeEditor EditChannelAttributes() { - return new((List operations) => + return new(operations => { ApplyChannelAttributesOperations(operations); }); @@ -421,7 +420,7 @@ public AttributeEditor EditChannelAttributes() public AttributeEditor EditContactAttributes() { - return new((List operations) => + return new(operations => { ApplyContactAttributesOperations(operations); }); @@ -430,7 +429,7 @@ public AttributeEditor EditContactAttributes() public Channel.SubscriptionListEditor EditChannelSubscriptionLists() { - return new Channel.SubscriptionListEditor((List payload) => + return new Channel.SubscriptionListEditor(payload => { ApplyChannelSubscriptionListHelper(payload); }); @@ -438,7 +437,7 @@ public Channel.SubscriptionListEditor EditChannelSubscriptionLists() public Contact.SubscriptionListEditor EditContactSubscriptionLists() { - return new Contact.SubscriptionListEditor((List payload) => + return new Contact.SubscriptionListEditor(payload => { ApplyContactSubscriptionListHelper(payload); }); @@ -597,7 +596,7 @@ private void ApplyChannelSubscriptionListHelper(List { - foreach (Channel.SubscriptionListEditor.SubscriptionListOperation operation in operations) + foreach (var operation in operations) { if (!Enum.IsDefined(typeof(Channel.SubscriptionListEditor.OperationType), operation.OperationType)) { @@ -624,7 +623,7 @@ private void ApplyContactSubscriptionListHelper(List { - foreach (Contact.SubscriptionListEditor.SubscriptionListOperation operation in operations) + foreach (var operation in operations) { if (!Enum.IsDefined(typeof(Contact.SubscriptionListEditor.OperationType), operation.OperationType)) { From 4cbe0a9fad03c5affc53e0d57df0d1ac576b303c Mon Sep 17 00:00:00 2001 From: Josh Yaganeh <319444+jyaganeh@users.noreply.github.com> Date: Tue, 23 Jan 2024 14:14:49 -0800 Subject: [PATCH 02/10] Fix Android EditContactSubscriptionLists --- src/Airship.Net/Platforms/Android/Airship.cs | 129 +++++++++---------- 1 file changed, 58 insertions(+), 71 deletions(-) diff --git a/src/Airship.Net/Platforms/Android/Airship.cs b/src/Airship.Net/Platforms/Android/Airship.cs index 9367511..161b344 100644 --- a/src/Airship.Net/Platforms/Android/Airship.cs +++ b/src/Airship.Net/Platforms/Android/Airship.cs @@ -1,12 +1,12 @@ /* Copyright Airship and Contributors */ +using Com.Urbanairship.Contacts; using Java.Util; using Java.Util.Concurrent; using UrbanAirship; using UrbanAirship.Automation; using UrbanAirship.Actions; using UrbanAirship.Channel; -//using Urbanairship.Contacts; using UrbanAirship.MessageCenter; using UrbanAirship.Push; using AttributeEditor = AirshipDotNet.Attributes.AttributeEditor; @@ -254,12 +254,12 @@ public void AddCustomEvent(Analytics.CustomEvent customEvent) { foreach (dynamic property in customEvent.PropertyList) { - if (string.IsNullOrEmpty(property.name)) + if (string.IsNullOrEmpty(property.Name)) { continue; } - builder.AddProperty(property.name, property.value); + builder.AddProperty(property.Name, property.Value); } } @@ -322,7 +322,7 @@ public void InboxMessages(Action> listMessages) listMessages(messagesList); } - private Date FromDateTime(DateTime dateTime) + private Date FromDateTime(DateTime? dateTime) { if (dateTime == null) { @@ -332,7 +332,7 @@ private Date FromDateTime(DateTime dateTime) return new Date(epochSeconds * 1000); } - private static DateTime? FromDate(Date date) + private static DateTime? FromDate(Date? date) { if (date == null) { @@ -344,7 +344,7 @@ private Date FromDateTime(DateTime dateTime) public Channel.TagGroupsEditor EditContactTagGroups() { - return new Channel.TagGroupsEditor((List payload) => + return new Channel.TagGroupsEditor(payload => { var editor = UAirship.Shared().Contact.EditTagGroups(); TagGroupHelper(payload, editor); @@ -354,7 +354,7 @@ public Channel.TagGroupsEditor EditContactTagGroups() public Channel.TagGroupsEditor EditChannelTagGroups() { - return new Channel.TagGroupsEditor((List payload) => + return new Channel.TagGroupsEditor( payload => { var editor = UAirship.Shared().Channel.EditTagGroups(); TagGroupHelper(payload, editor); @@ -365,16 +365,15 @@ public Channel.TagGroupsEditor EditChannelTagGroups() public AttributeEditor EditAttributes() => EditChannelAttributes(); public AttributeEditor EditChannelAttributes() => - new((List operations) => + new(operations => { var editor = UAirship.Shared().Channel.EditAttributes(); ApplyAttributesOperations(editor, operations); editor.Apply(); }); - /// public AttributeEditor EditContactAttributes() => - new((List operations) => + new(operations => { var editor = UAirship.Shared().Contact.EditAttributes(); ApplyAttributesOperations(editor, operations); @@ -383,7 +382,7 @@ public AttributeEditor EditContactAttributes() => public ChannelSubscriptionListEditor EditChannelSubscriptionLists() { - return new Channel.SubscriptionListEditor((List payload) => + return new ChannelSubscriptionListEditor(payload => { var editor = UAirship.Shared().Channel.EditSubscriptionLists(); ApplyChannelSubscriptionListHelper(payload, editor); @@ -393,11 +392,11 @@ public ChannelSubscriptionListEditor EditChannelSubscriptionLists() public ContactSubscriptionListEditor EditContactSubscriptionLists() { - return new Contact.SubscriptionListEditor((List payload) => + return new ContactSubscriptionListEditor(payload => { - //var editor = UAirship.Shared().Contact.EditSubscriptionLists(); - ApplyContactSubscriptionListHelper(payload); - //editor.Apply(); + var editor = UAirship.Shared().Contact.EditSubscriptionLists(); + ApplyContactSubscriptionListHelper(payload, editor); + editor.Apply(); }); } @@ -445,9 +444,8 @@ private void ApplyAttributesOperations(UrbanAirship.Channel.AttributeEditor edit private static void TagGroupHelper(List payload, TagGroupsEditor editor) { - foreach (Channel.TagGroupsEditor.TagOperation tagOperation in payload) + foreach (var tagOperation in payload) { - switch (tagOperation.operationType) { case Channel.TagGroupsEditor.OperationType.ADD: @@ -459,91 +457,80 @@ private static void TagGroupHelper(List pa case Channel.TagGroupsEditor.OperationType.SET: editor.SetTags(tagOperation.group, tagOperation.tags); break; - default: - break; } } } - private void ApplyChannelSubscriptionListHelper(List operations, UrbanAirship.Channel.SubscriptionListEditor editor) + private void ApplyChannelSubscriptionListHelper(List operations, UrbanAirship.Channel.SubscriptionListEditor editor) { - foreach (Channel.SubscriptionListEditor.SubscriptionListOperation operation in operations) + foreach (var operation in operations) { - if (!Enum.IsDefined(typeof(Channel.SubscriptionListEditor.OperationType), operation.OperationType)) + if (!Enum.IsDefined(typeof(ChannelSubscriptionListEditor.OperationType), operation.OperationType)) { continue; } switch (operation.OperationType) { - case Channel.SubscriptionListEditor.OperationType.SUBSCRIBE: + case ChannelSubscriptionListEditor.OperationType.SUBSCRIBE: editor.Subscribe(operation.List); break; - case Channel.SubscriptionListEditor.OperationType.UNSUBSCRIBE: + case ChannelSubscriptionListEditor.OperationType.UNSUBSCRIBE: editor.Unsubscribe(operation.List); break; } } } - // FIXME: - //private void ApplyContactSubscriptionListHelper(List operations, ScopedSubscriptionListEditor editor) - private void ApplyContactSubscriptionListHelper(List operations) + private void ApplyContactSubscriptionListHelper(List operations, ScopedSubscriptionListEditor editor) { - - foreach (Contact.SubscriptionListEditor.SubscriptionListOperation operation in operations) + foreach (var operation in operations) { - if (!Enum.IsDefined(typeof(Contact.SubscriptionListEditor.OperationType), operation.OperationType)) + if (!Enum.IsDefined(typeof(ContactSubscriptionListEditor.OperationType), operation.OperationType)) { continue; } - //string scope = operation.scope; - //string[] scopes = { "app", "web", "email", "sms" }; - //if (scopes.Any(scope.Contains)) - //{ - // Scope channelScope = Scope.App; - // if (operation.Scope == "app") - // { - // channelScope = Scope.App; - // } - // else if (operation.scope == "web") - // { - // channelScope = Scope.Web; - // } - // else if (operation.Scope == "email") - // { - // channelScope = Scope.Email; - // } - // else if (operation.Scope == "sms") - // { - // channelScope = Scope.Sms; - // } - - // switch (operation.OperationType) - // { - // case Contact.SubscriptionListEditor.OperationType.SUBSCRIBE: - // editor.Subscribe(operation.List, channelScope); - // break; - // case Contact.SubscriptionListEditor.OperationType.UNSUBSCRIBE: - // editor.Unsubscribe(operation.List, channelScope); - // break; - // } - //} + string scope = operation.Scope; + string[] scopes = { "app", "web", "email", "sms" }; + if (scopes.Contains(scope)) + { + Scope channelScope = Scope.App; + + if (operation.Scope == "app") + { + channelScope = Scope.App; + } + else if (operation.Scope == "web") + { + channelScope = Scope.Web; + } + else if (operation.Scope == "email") + { + channelScope = Scope.Email; + } + else if (operation.Scope == "sms") + { + channelScope = Scope.Sms; + } + + switch (operation.OperationType) + { + case Contact.SubscriptionListEditor.OperationType.SUBSCRIBE: + editor.Subscribe(operation.List, channelScope); + break; + case Contact.SubscriptionListEditor.OperationType.UNSUBSCRIBE: + editor.Unsubscribe(operation.List, channelScope); + break; + } + } } } public bool InAppAutomationEnabled { - get - { - return InAppAutomation.Shared().Enabled; - } - - set - { - InAppAutomation.Shared().Enabled = value; - } + get => InAppAutomation.Shared().Enabled; + set => InAppAutomation.Shared().Enabled = value; } public bool InAppAutomationPaused From 2e0e492410299c934767aed631b28abf3e6359b2 Mon Sep 17 00:00:00 2001 From: Josh Yaganeh <319444+jyaganeh@users.noreply.github.com> Date: Tue, 23 Jan 2024 14:15:23 -0800 Subject: [PATCH 03/10] sample csproj tweak for iOS simulator builds --- MauiSample/MauiSample.csproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MauiSample/MauiSample.csproj b/MauiSample/MauiSample.csproj index 64f3292..4fbfb70 100644 --- a/MauiSample/MauiSample.csproj +++ b/MauiSample/MauiSample.csproj @@ -33,6 +33,8 @@ Platforms\iOS\Entitlements.plist None false + iossimulator-x64 + iossimulator-arm64 From af619d4b8a82f268edfa42fc3df3305c7298c935 Mon Sep 17 00:00:00 2001 From: Josh Yaganeh <319444+jyaganeh@users.noreply.github.com> Date: Tue, 23 Jan 2024 15:00:47 -0800 Subject: [PATCH 04/10] Deprecate iOS Trace log level and introduce Verbose --- MauiSample/Platforms/iOS/AppDelegate.cs | 2 +- src/AirshipBindings.iOS.Core/StructsAndEnums.cs | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/MauiSample/Platforms/iOS/AppDelegate.cs b/MauiSample/Platforms/iOS/AppDelegate.cs index 6d2d4db..7736680 100644 --- a/MauiSample/Platforms/iOS/AppDelegate.cs +++ b/MauiSample/Platforms/iOS/AppDelegate.cs @@ -14,7 +14,7 @@ public override bool FinishedLaunching(UIApplication application, NSDictionary l { // Set log level for debugging config loading (optional) // It will be set to the value in the loaded config upon takeOff - UAirship.LogLevel = UALogLevel.Trace; + UAirship.LogLevel = UALogLevel.Verbose; // Populate AirshipConfig.plist with your app's info from https://go.urbanairship.com // or set runtime properties here. diff --git a/src/AirshipBindings.iOS.Core/StructsAndEnums.cs b/src/AirshipBindings.iOS.Core/StructsAndEnums.cs index 57e6dff..5072d3b 100644 --- a/src/AirshipBindings.iOS.Core/StructsAndEnums.cs +++ b/src/AirshipBindings.iOS.Core/StructsAndEnums.cs @@ -2,6 +2,7 @@ Copyright Airship and Contributors */ +using System; using ObjCRuntime; namespace UrbanAirship @@ -48,7 +49,9 @@ public enum UALogLevel : long Warn = 2, Info = 3, Debug = 4, - Trace = 5 + [Obsolete("Use Verbose instead. Trace will be removed in a future release.")] + Trace = 5, + Verbose = 5 } [Native] From 345097a8d5fa5bdb6f96c3313ab0a3bcbdaddf49 Mon Sep 17 00:00:00 2001 From: Josh Yaganeh <319444+jyaganeh@users.noreply.github.com> Date: Tue, 23 Jan 2024 16:11:58 -0800 Subject: [PATCH 05/10] Bump iOS bindings to target .net8.0 --- .../AirshipBindings.iOS.Automation.csproj | 2 +- .../AirshipBindings.iOS.Basement.csproj | 2 +- src/AirshipBindings.iOS.Core/AirshipBindings.iOS.Core.csproj | 2 +- .../AirshipBindings.iOS.MessageCenter.csproj | 2 +- .../AirshipBindings.iOS.NotificationContentExtension.csproj | 2 +- .../AirshipBindings.iOS.NotificationServiceExtension.csproj | 2 +- .../AirshipBindings.iOS.PreferenceCenter.csproj | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/AirshipBindings.iOS.Automation/AirshipBindings.iOS.Automation.csproj b/src/AirshipBindings.iOS.Automation/AirshipBindings.iOS.Automation.csproj index 73e525a..5cbd1ed 100644 --- a/src/AirshipBindings.iOS.Automation/AirshipBindings.iOS.Automation.csproj +++ b/src/AirshipBindings.iOS.Automation/AirshipBindings.iOS.Automation.csproj @@ -11,7 +11,7 @@ Airship.Net.iOS.Automation Airship iOS SDK - Automation Automation support for Airship SDK - net7.0-ios + net8.0-ios enable true true diff --git a/src/AirshipBindings.iOS.Basement/AirshipBindings.iOS.Basement.csproj b/src/AirshipBindings.iOS.Basement/AirshipBindings.iOS.Basement.csproj index 174a862..19ac884 100644 --- a/src/AirshipBindings.iOS.Basement/AirshipBindings.iOS.Basement.csproj +++ b/src/AirshipBindings.iOS.Basement/AirshipBindings.iOS.Basement.csproj @@ -11,7 +11,7 @@ Airship.Net.iOS.Basement Airship iOS SDK - Basement Basement module for Airship SDK - net7.0-ios + net8.0-ios enable true true diff --git a/src/AirshipBindings.iOS.Core/AirshipBindings.iOS.Core.csproj b/src/AirshipBindings.iOS.Core/AirshipBindings.iOS.Core.csproj index ae1bc3b..a3aae8f 100644 --- a/src/AirshipBindings.iOS.Core/AirshipBindings.iOS.Core.csproj +++ b/src/AirshipBindings.iOS.Core/AirshipBindings.iOS.Core.csproj @@ -9,7 +9,7 @@ Airship.Net.iOS.Core Airship iOS SDK - Core Core of Airship SDK - net7.0-ios + net8.0-ios enable true true diff --git a/src/AirshipBindings.iOS.MessageCenter/AirshipBindings.iOS.MessageCenter.csproj b/src/AirshipBindings.iOS.MessageCenter/AirshipBindings.iOS.MessageCenter.csproj index aac6cea..acd562b 100644 --- a/src/AirshipBindings.iOS.MessageCenter/AirshipBindings.iOS.MessageCenter.csproj +++ b/src/AirshipBindings.iOS.MessageCenter/AirshipBindings.iOS.MessageCenter.csproj @@ -11,7 +11,7 @@ Airship.Net.iOS.MessageCenter Airship iOS SDK - MessageCenter Message Center support for the Airship SDK - net7.0-ios + net8.0-ios enable true true diff --git a/src/AirshipBindings.iOS.NotificationContentExtension/AirshipBindings.iOS.NotificationContentExtension.csproj b/src/AirshipBindings.iOS.NotificationContentExtension/AirshipBindings.iOS.NotificationContentExtension.csproj index a1f66bb..30e4662 100644 --- a/src/AirshipBindings.iOS.NotificationContentExtension/AirshipBindings.iOS.NotificationContentExtension.csproj +++ b/src/AirshipBindings.iOS.NotificationContentExtension/AirshipBindings.iOS.NotificationContentExtension.csproj @@ -9,7 +9,7 @@ Airship.Net.iOS.NotificationContentExtension Airship iOS SDK - Notification Content Extension Notification content extension support for Airship SDK - net7.0-ios + net8.0-ios true enable false diff --git a/src/AirshipBindings.iOS.NotificationServiceExtension/AirshipBindings.iOS.NotificationServiceExtension.csproj b/src/AirshipBindings.iOS.NotificationServiceExtension/AirshipBindings.iOS.NotificationServiceExtension.csproj index 10b6ebd..3952e2b 100644 --- a/src/AirshipBindings.iOS.NotificationServiceExtension/AirshipBindings.iOS.NotificationServiceExtension.csproj +++ b/src/AirshipBindings.iOS.NotificationServiceExtension/AirshipBindings.iOS.NotificationServiceExtension.csproj @@ -9,7 +9,7 @@ Airship.Net.iOS.NotificationServiceExtension Airship iOS SDK - Notification Service Extension Notification service extension support for Airship SDK - net7.0-ios + net8.0-ios enable true true diff --git a/src/AirshipBindings.iOS.PreferenceCenter/AirshipBindings.iOS.PreferenceCenter.csproj b/src/AirshipBindings.iOS.PreferenceCenter/AirshipBindings.iOS.PreferenceCenter.csproj index 7ca1ab8..3ac7831 100644 --- a/src/AirshipBindings.iOS.PreferenceCenter/AirshipBindings.iOS.PreferenceCenter.csproj +++ b/src/AirshipBindings.iOS.PreferenceCenter/AirshipBindings.iOS.PreferenceCenter.csproj @@ -9,7 +9,7 @@ Airship.Net.iOS.PreferenceCenter Airship iOS SDK - Preference Center Preference Center support for Airship SDK - net7.0-ios + net8.0-ios true enable true From c4f6268438371f1e2429651462f77767b66ff721 Mon Sep 17 00:00:00 2001 From: Josh Yaganeh <319444+jyaganeh@users.noreply.github.com> Date: Tue, 23 Jan 2024 16:12:39 -0800 Subject: [PATCH 06/10] Bump Android and iOS SDKs to 17.7.1, cross-platform 19.1.0 --- Cartfile | 2 +- Directory.Build.props | 12 ++++----- airship.properties | 8 +++--- binderator/config.json | 36 ++++++++++++------------- src/SharedAssemblyInfo.Common.cs | 2 +- src/SharedAssemblyInfo.CrossPlatform.cs | 2 +- src/SharedAssemblyInfo.iOS.cs | 2 +- 7 files changed, 32 insertions(+), 32 deletions(-) diff --git a/Cartfile b/Cartfile index 97dbad6..de93d32 100644 --- a/Cartfile +++ b/Cartfile @@ -1 +1 @@ -github "urbanairship/ios-library" == 17.6.1 +github "urbanairship/ios-library" == 17.7.1 diff --git a/Directory.Build.props b/Directory.Build.props index f960f63..053bf6a 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -5,15 +5,15 @@ - 17.5.0 - 17.5.0.1 + 17.7.1 + 17.7.1 - 17.6.1 - 17.6.1 + 17.7.1 + 17.7.1 - 19.0.0 - 19.0.0 + 19.1.0 + 19.1.0 diff --git a/airship.properties b/airship.properties index 1af0784..27cbf44 100644 --- a/airship.properties +++ b/airship.properties @@ -1,9 +1,9 @@ # Airship native SDK versions -iosVersion = 17.6.1 -androidVersion = 17.5.0 +iosVersion = 17.7.1 +androidVersion = 17.7.1 # Airship.Net cross-platform version -crossPlatformVersion = 19.0.0 +crossPlatformVersion = 19.1.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 +androidRevision = 0 iosRevision = 0 crossPlatformRevision = 0 diff --git a/binderator/config.json b/binderator/config.json index 14906f5..d46f6c6 100644 --- a/binderator/config.json +++ b/binderator/config.json @@ -17,72 +17,72 @@ { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-adm", - "version": "17.5.0", - "nugetVersion": "17.5.0", + "version": "17.7.1", + "nugetVersion": "17.7.1", "nugetId": "Airship.Net.Android.Adm", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-automation", - "version": "17.5.0", - "nugetVersion": "17.5.0", + "version": "17.7.1", + "nugetVersion": "17.7.1", "nugetId": "Airship.Net.Android.Automation", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-core", - "version": "17.5.0", - "nugetVersion": "17.5.0", + "version": "17.7.1", + "nugetVersion": "17.7.1", "nugetId": "Airship.Net.Android.Core", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-fcm", - "version": "17.5.0", - "nugetVersion": "17.5.0", + "version": "17.7.1", + "nugetVersion": "17.7.1", "nugetId": "Airship.Net.Android.Fcm", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-feature-flag", - "version": "17.5.0", - "nugetVersion": "17.5.0", + "version": "17.7.1", + "nugetVersion": "17.7.1", "nugetId": "Airship.Net.Android.FeatureFlag", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-layout", - "version": "17.5.0", - "nugetVersion": "17.5.0", + "version": "17.7.1", + "nugetVersion": "17.7.1", "nugetId": "Airship.Net.Android.Layout", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-live-update", - "version": "17.5.0", - "nugetVersion": "17.5.0", + "version": "17.7.1", + "nugetVersion": "17.7.1", "nugetId": "Airship.Net.Android.LiveUpdate", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-message-center", - "version": "17.5.0", - "nugetVersion": "17.5.0", + "version": "17.7.1", + "nugetVersion": "17.7.1", "nugetId": "Airship.Net.Android.MessageCenter", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-preference-center", - "version": "17.5.0", - "nugetVersion": "17.5.0", + "version": "17.7.1", + "nugetVersion": "17.7.1", "nugetId": "Airship.Net.Android.PreferenceCenter", "dependencyOnly": false }, diff --git a/src/SharedAssemblyInfo.Common.cs b/src/SharedAssemblyInfo.Common.cs index 863199e..738615d 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.0.0")] +[assembly: UACrossPlatformVersion ("19.1.0")] diff --git a/src/SharedAssemblyInfo.CrossPlatform.cs b/src/SharedAssemblyInfo.CrossPlatform.cs index e76bf22..1f1e409 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.0.0")] +[assembly: AssemblyVersion ("19.1.0")] diff --git a/src/SharedAssemblyInfo.iOS.cs b/src/SharedAssemblyInfo.iOS.cs index b017d27..7560a64 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.0.0")] +[assembly: AssemblyVersion ("19.1.0")] From a69a3c39b8c59b2f76648b69e1c77742092f4f95 Mon Sep 17 00:00:00 2001 From: Josh Yaganeh <319444+jyaganeh@users.noreply.github.com> Date: Tue, 23 Jan 2024 16:23:46 -0800 Subject: [PATCH 07/10] Update changelog, dev readme, and migration guide --- CHANGELOG.md | 16 +++++++++++++--- DEV_README.md | 4 ++-- MIGRATION.md | 16 +++++++++++++--- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3740e9c..318e327 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,16 +1,26 @@ # Airship DotNet Changelog +## Version 19.1.0 - Jan 24, 2024 +Minor release that updates to Airship SDK 17.7.1, fixes an iOS custom event properties reporting issue, and Android contact subscription list editing. Apps that target iOS and make use of custom events or Android and make use of contact subscription editing should update. + +### Changes +- Updated iOS SDK to 17.7.1 +- Updated Android SDK to 17.7.1 +- Fixed a bug that prevented custom event properties from being reported on iOS +- Fixed contact subscription list updates (`EditContactSubscriptionLists`) on Android +- Deprecated iOS `Trace` log level and add the replacement `Verbose` log level. + ## Version 19.0.0 - Nov 21, 2023 Major release that updates the Airship bindings and cross-platform libraries to target .NET 8.0. The Airship .NET SDK now requires .NET 8.0 (`net8.0-android` and `net8.0-ios`) as the minimum target framework, and iOS 14+ as the minimum deployment version with Xcode 15+. -## Changes +### Changes - Updated iOS SDK to 17.6.1 - Resolved build issues in Windows Visual Studio. Linked Mac builds are now working as expected. ## Version 18.0.0 - Nov 10, 2023 Major release that updates to Airship SDK 17.x. This release adds support for Stories, In-App experiences downstream of a sequence in Journeys, and improves SDK auth. The .NET SDK now requires .NET 7.0 (`net7.0-android` and `net7.0-ios`) as the minimum target framework, and iOS 14+ as the minimum deployment version with Xcode 14.3+. -## Changes +### Changes - Updated iOS SDK to 17.6.0 - Updated Android SDK to 17.5.0 - Added the ability to update Channel and Contact subscriptions to the common .NET library @@ -19,7 +29,7 @@ Major release that updates to Airship SDK 17.x. This release adds support for St See the [Migration Guide](https://github.com/urbanairship/airship-dotnet/tree/main/MIGRATION.md) for further details. -## Known Issues +### Known Issues Build/run via a linked Mac from Visual Studio on Windows is not currently working as expected. This appears to be a known issue and is expected to be fixed in the upcoming .NET 8 release. In our testing, this issue impacts other SDKs that make use of XCFrameworks, and is not limited to Airship SDKs. We will continue monitoring the situation and update with any new workarounds or fixes that become available. Builds and runs performed directly on a Mac are not impacted by this issue. diff --git a/DEV_README.md b/DEV_README.md index 63beb31..8a58dfb 100644 --- a/DEV_README.md +++ b/DEV_README.md @@ -5,12 +5,12 @@ ### Requirements * Visual Studio for Mac ([stable](https://visualstudio.microsoft.com/vs/mac/) or [preview](https://visualstudio.microsoft.com/vs/mac/preview/)) -* A supported Xcode version (at the time of writing, VS 2022 supported Xcode 14.2) +* A supported Xcode version (at the time of writing, VS 2022 recommends Xcode 15.1+) * OpenJDK 11 * Using [Homebrew](https://brew.sh/): `brew install openjdk@11` * Or [SDKMAN!](https://sdkman.io/): `sdk install java 11.0.18-zulu` * Android SDK: API 31+ platform, emulator, build tools, command line tools, etc. -* .NET6 SDK (install via VS) +* .NET8 SDK (install via VS) * .NET Workloads (install via VS): maui, android, ios * Doxygen & Graphviz (`brew install doxygen graphviz`) * Carthage (`brew install carthage`) diff --git a/MIGRATION.md b/MIGRATION.md index c9cd6e2..5816506 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -1,19 +1,29 @@ # Migration Guide -## 17.x to 18.x +## 18.x to 19.x ### .NET Version -This version of the plugin now requires .NET 7.0 (`net7.0-android` and `net7.0-ios`) as the min target framework. +This version of the plugin now requires .NET 8.0 (`net8.0-android` and `net8.0-ios`) as the min target framework. ### Minimum iOS Version -This version of the plugin now requires iOS 14+ as the min deployment target and Xcode 14.3+. +This version of the plugin requires iOS 14+ as the min deployment target and Xcode 15+. ### iOS Log Levels The `TRACE` level has been renamed to `VERBOSE`, for consistency with other platforms/frameworks. +## 17.x to 18.x + +### .NET Version + +This version of the plugin now requires .NET 7.0 (`net7.0-android` and `net7.0-ios`) as the min target framework. + +### Minimum iOS Version + +This version of the plugin now requires iOS 14+ as the min deployment target and Xcode 14.3+. + ### API Changes #### Methods From b14049fbc41f6d15a1cfd94dc71bc02a1fb191be Mon Sep 17 00:00:00 2001 From: Josh Yaganeh <319444+jyaganeh@users.noreply.github.com> Date: Thu, 25 Jan 2024 13:38:00 -0800 Subject: [PATCH 08/10] Bump GHA workflows to Xcode 15.1 --- .github/workflows/ci.yaml | 2 +- .github/workflows/release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 801cb7b..253666f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -3,7 +3,7 @@ name: CI on: [pull_request] env: - DEVELOPER_DIR: /Applications/Xcode_15.0.app + DEVELOPER_DIR: /Applications/Xcode_15.1.app DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 DOTNET_NOLOGO: 1 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 7fc45dc..3d16202 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -6,7 +6,7 @@ on: - "[0-9]+.[0-9]+.[0-9]+*" env: - DEVELOPER_DIR: /Applications/Xcode_15.0.app + DEVELOPER_DIR: /Applications/Xcode_15.1.app DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 DOTNET_NOLOGO: 1 From d06aa6ddf476b30c96801b4ee2875b47823a77f2 Mon Sep 17 00:00:00 2001 From: Josh Yaganeh <319444+jyaganeh@users.noreply.github.com> Date: Thu, 25 Jan 2024 13:38:52 -0800 Subject: [PATCH 09/10] Update 19.1.0 release date --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 318e327..fd0bfb7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Airship DotNet Changelog -## Version 19.1.0 - Jan 24, 2024 +## Version 19.1.0 - Jan 25, 2024 Minor release that updates to Airship SDK 17.7.1, fixes an iOS custom event properties reporting issue, and Android contact subscription list editing. Apps that target iOS and make use of custom events or Android and make use of contact subscription editing should update. ### Changes From 34b61664daff0644aa7f9dae0267ea5688e66a96 Mon Sep 17 00:00:00 2001 From: Josh Yaganeh <319444+jyaganeh@users.noreply.github.com> Date: Tue, 30 Jan 2024 16:09:34 -0800 Subject: [PATCH 10/10] Bump to Android SDK 17.7.2 and iOS SDK 17.7.3; update changelog --- CHANGELOG.md | 6 ++-- Cartfile | 2 +- Directory.Build.props | 8 ++--- airship.properties | 4 +-- binderator/config.json | 36 +++++++++---------- .../Transforms/Metadata.xml | 2 ++ 6 files changed, 30 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd0bfb7..78fef25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,11 @@ # Airship DotNet Changelog ## Version 19.1.0 - Jan 25, 2024 -Minor release that updates to Airship SDK 17.7.1, fixes an iOS custom event properties reporting issue, and Android contact subscription list editing. Apps that target iOS and make use of custom events or Android and make use of contact subscription editing should update. +Minor release that updates to Airship SDK to iOS 17.7.3 and Android 17.7.2, fixes an iOS custom event properties reporting issue, and Android contact subscription list editing. Apps that target iOS and make use of custom events or Android and make use of contact subscription editing should update. ### Changes -- Updated iOS SDK to 17.7.1 -- Updated Android SDK to 17.7.1 +- Updated iOS SDK to 17.7.3 +- Updated Android SDK to 17.7.2 - Fixed a bug that prevented custom event properties from being reported on iOS - Fixed contact subscription list updates (`EditContactSubscriptionLists`) on Android - Deprecated iOS `Trace` log level and add the replacement `Verbose` log level. diff --git a/Cartfile b/Cartfile index de93d32..97145c5 100644 --- a/Cartfile +++ b/Cartfile @@ -1 +1 @@ -github "urbanairship/ios-library" == 17.7.1 +github "urbanairship/ios-library" == 17.7.3 diff --git a/Directory.Build.props b/Directory.Build.props index 053bf6a..977d1ae 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -5,11 +5,11 @@ - 17.7.1 - 17.7.1 + 17.7.2 + 17.7.2 - 17.7.1 - 17.7.1 + 17.7.3 + 17.7.3 19.1.0 diff --git a/airship.properties b/airship.properties index 27cbf44..9c65235 100644 --- a/airship.properties +++ b/airship.properties @@ -1,6 +1,6 @@ # Airship native SDK versions -iosVersion = 17.7.1 -androidVersion = 17.7.1 +iosVersion = 17.7.3 +androidVersion = 17.7.2 # Airship.Net cross-platform version crossPlatformVersion = 19.1.0 diff --git a/binderator/config.json b/binderator/config.json index d46f6c6..ef6d081 100644 --- a/binderator/config.json +++ b/binderator/config.json @@ -17,72 +17,72 @@ { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-adm", - "version": "17.7.1", - "nugetVersion": "17.7.1", + "version": "17.7.2", + "nugetVersion": "17.7.2", "nugetId": "Airship.Net.Android.Adm", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-automation", - "version": "17.7.1", - "nugetVersion": "17.7.1", + "version": "17.7.2", + "nugetVersion": "17.7.2", "nugetId": "Airship.Net.Android.Automation", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-core", - "version": "17.7.1", - "nugetVersion": "17.7.1", + "version": "17.7.2", + "nugetVersion": "17.7.2", "nugetId": "Airship.Net.Android.Core", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-fcm", - "version": "17.7.1", - "nugetVersion": "17.7.1", + "version": "17.7.2", + "nugetVersion": "17.7.2", "nugetId": "Airship.Net.Android.Fcm", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-feature-flag", - "version": "17.7.1", - "nugetVersion": "17.7.1", + "version": "17.7.2", + "nugetVersion": "17.7.2", "nugetId": "Airship.Net.Android.FeatureFlag", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-layout", - "version": "17.7.1", - "nugetVersion": "17.7.1", + "version": "17.7.2", + "nugetVersion": "17.7.2", "nugetId": "Airship.Net.Android.Layout", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-live-update", - "version": "17.7.1", - "nugetVersion": "17.7.1", + "version": "17.7.2", + "nugetVersion": "17.7.2", "nugetId": "Airship.Net.Android.LiveUpdate", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-message-center", - "version": "17.7.1", - "nugetVersion": "17.7.1", + "version": "17.7.2", + "nugetVersion": "17.7.2", "nugetId": "Airship.Net.Android.MessageCenter", "dependencyOnly": false }, { "groupId": "com.urbanairship.android", "artifactId": "urbanairship-preference-center", - "version": "17.7.1", - "nugetVersion": "17.7.1", + "version": "17.7.2", + "nugetVersion": "17.7.2", "nugetId": "Airship.Net.Android.PreferenceCenter", "dependencyOnly": false }, 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 5319c77..c8fb9ec 100644 --- a/binderator/source/com.urbanairship.android/urbanairship-automation/Transforms/Metadata.xml +++ b/binderator/source/com.urbanairship.android/urbanairship-automation/Transforms/Metadata.xml @@ -12,6 +12,8 @@ UrbanAirship.Iam.Tags UrbanAirship.Iam.View + java.lang.Object +