Skip to content

Airship.Net v20.x incompatible with iOS bindings for .NET 10 MAUI / Xcode 26.2 #32

@ngpp564

Description

@ngpp564

Issue:

Description

The latest Airship.Net package (v20.2.0) is incompatible with the current iOS bindings available for .NET 10 with Xcode 26.2, causing linking errors when building iOS apps.

Environment

  • Airship.Net Version: 20.2.0
  • .NET Version: .NET 10.0
  • iOS SDK Version: 26.2 (iOS 18.2)
  • Xcode Version: 26.2
  • Available iOS Bindings:
    • Airship.Net.iOS: 17.10.1.2 (latest available)
    • Airship.Net.iOS.MessageCenter: 17.10.1.2 (latest available)
    • Airship.Net.iOS.PreferenceCenter: 17.10.1.2 (latest available)
  • Platform: macOS
  • IDE: JetBrains Rider 2025.3.1

Problem

When upgrading to Airship.Net v20.2.0, the build fails with undefined symbol errors for PreferenceCenter classes during the iOS linking phase:

Finished external tool execution #12 in 00:00:00.5456727 and with exit code 1.
0>Xamarin.Shared.Sdk.targets(1864,3): Error  : clang++ exited with code 1:
Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_UAPreferenceCenter", referenced from:
       in registrar.o
  "_OBJC_CLASS_$_UAPreferenceCenterConfig", referenced from:
       in registrar.o
  "_OBJC_CLASS_$_UAPreferenceCenterConfigAlert", referenced from:
       in registrar.o
  "_OBJC_CLASS_$_UAPreferenceCenterConfigAlertButton", referenced from:
       in registrar.o
  "_OBJC_CLASS_$_UAPreferenceCenterConfigChannelSubscription", referenced from:
       in registrar.o
  "_OBJC_CLASS_$_UAPreferenceCenterConfigCommonSection", referenced from:
       in registrar.o
  "_OBJC_CLASS_$_UAPreferenceCenterConfigContactSubscription", referenced from:
       in registrar.o
  "_OBJC_CLASS_$_UAPreferenceCenterConfigContactSubscriptionGroup", referenced from:
       in registrar.o
  "_OBJC_CLASS_$_UAPreferenceCenterConfigNotificationOptInCondition", referenced from:
       in registrar.o
  "_OBJC_CLASS_$_UAPreferenceCenterConfigOptions", referenced from:
       in registrar.o
  "_OBJC_CLASS_$_UAPreferenceCenterViewControllerFactory", referenced from:
       in registrar.o
  "_OBJC_CLASS_$_UAPreferenceConfigAlertDisplay", referenced from:
       in registrar.o
0>------- Finished building

Root Cause

Airship.Net v20.2.0 appears to require iOS bindings from the 19.x version family, but the latest available iOS bindings on NuGet are:

  • Airship.Net.iOS v17.10.1.2
  • Airship.Net.iOS.MessageCenter v17.10.1.2
  • Airship.Net.iOS.PreferenceCenter v17.10.1.2

This version mismatch causes the .NET registrar to generate references to Objective-C classes that don't exist in the v17.x bindings, resulting in linking failures.

Expected Behavior

Airship.Net v20.2.0 should either:

  1. Work with the currently available iOS bindings (v17.x), OR
  2. Have corresponding iOS bindings v19.x or v20.x published to NuGet

Actual Behavior

The build fails with undefined symbol errors because the managed wrapper expects native iOS bindings that aren't available.

Workaround

Currently forced to downgrade to Airship.Net v17.10.1 to match the available iOS bindings:

<PackageReference Include="Airship.Net" Version="17.10.1" />
<PackageReference Include="Airship.Net.iOS" Version="17.10.1.2" />
<PackageReference Include="Airship.Net.iOS.MessageCenter" Version="17.10.1.2" />

Reproduction Steps

  1. Create a new .NET MAUI project targeting net10.0-ios
  2. Add NuGet packages:
    <PackageReference Include="Airship.Net" Version="20.2.0" />
    <PackageReference Include="Airship.Net.iOS" Version="17.10.1.2" />
    <PackageReference Include="Airship.Net.iOS.MessageCenter" Version="17.10.1.2" />
  3. Build for iOS (Debug or Release)
  4. Observe linking errors for UAPreferenceCenter symbols

Questions

  1. Are iOS bindings v19.x or v20.x planned for release?
  2. If so, what is the expected timeline?
  3. Is v20.2.0 compatible with .NET 10 and the latest Xcode (26.2)?
  4. Should we expect PreferenceCenter to be included by default, or is there a way to exclude it if not needed?

Additional Context

  • This issue affects all iOS builds (Debug, Release, and Production configurations)
  • Android builds work fine with the current versions
  • The issue persists even when using the dynamic registrar (--registrar:dynamic)
  • This blocks upgrading to the latest Airship.Net features for iOS apps

Package Versions

<!-- Current working configuration -->
<PackageReference Include="Airship.Net" Version="17.10.1" />
<PackageReference Include="Airship.Net.iOS" Version="17.10.1.2" />
<PackageReference Include="Airship.Net.iOS.MessageCenter" Version="17.10.1.2" />

<!-- Desired configuration (currently broken) -->
<PackageReference Include="Airship.Net" Version="20.2.0" />
<PackageReference Include="Airship.Net.iOS" Version="19.x.x or 20.x.x" /> <!-- Missing -->
<PackageReference Include="Airship.Net.iOS.MessageCenter" Version="19.x.x or 20.x.x" /> <!-- Missing -->

Request

Please either:

  1. Publish iOS bindings v19.x/v20.x that are compatible with .NET 10 and Xcode 26.2
  2. Update the dependency requirements for Airship.Net v20.2.0 to work with existing v17.x iOS bindings
  3. Provide guidance on the correct version combinations for .NET 10 projects

Thank you for your support!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions