Using Different Entitlements for Debug and Release Modes in .NET MAUI – iOS
When developing a mobile app using .NET MAUI, particularly for iOS, it’s essential to configure your application differently for debug and release modes. One of these differences is the APS-environment setting, which dictates how your app communicates with Apple Push Notification services (APNs) during development and production. What is Entitlements.plist? The Entitlements.plist is a property list (plist) file that defines various capabilities or entitlements for your app. Entitlements are special permissions that allow your app to use certain services provided by iOS, such as iCloud, In-App Purchases, or push notifications. For push notifications, the Entitlements.plist file contains the APS-environment key, which indicates to Apple whether your app is in development or production mode. Based on this, the app uses either the sandbox or production APNs. What is APS-environment? The APS-environment (Apple Push Services environment) is an entitlement used to specify the environment for push notifications. This entitlement informs Apple’s servers whether the app is running in a development environment or in production, determining which server to send the notifications through: This configuration helps separate testing from live user interactions and avoids accidental notification delivery to users during testing. Configuring Different APS-environments for Debug and Release To configure different environments for Debug and Release modes in your .NET MAUI project, you can modify your .csproj file as follows: It’s important to ensure that both Entitlements.plist and Entitlements-Production.plist files are not included in the build by accident. This can be achieved by setting their Build Action to None: This step ensures that the files are correctly associated with your app for code-signing purposes but are not compiled into the app bundle…
.NET MAUI iOS – Azure Pipelines error: ‘x’ is not available in iOS 16
This content has 12 months. Some of the information in this post may be out of date or no longer work. Please, read this page keeping its age in your mind.The Error: The error message suggests that the ‘UIKit.UISceneSessionActivationRequest’ type, used as a parameter in ‘UIKit.UIApplication.ActivateSceneSession,’ is not available in iOS 16.2 and was introduced in iOS 17.0. This discrepancy indicates a version misalignment in the development environment, specifically with the iOS SDK and Xcode. Root cause The root cause of this error lies in the version of the macOS image used in the Azure Pipelines configuration. By default, the ‘macOS-latest’ image is pulled, which corresponds to macOS 12 (at the time of the blog post). However, the .NET MAUI app with Azure Pipelines requires macOS v13 to work seamlessly, as it aligns with the necessary dependencies for iOS development. Resolution To resolve this error, developers need to update the macOS image specified in the Azure Pipelines configuration. Instead of using ‘macOS-latest,’ the configuration should be modified to use ‘macOS-13.’ This ensures that the appropriate version of macOS is utilized during the build process, addressing the compatibility issues with iOS 16.2 and the required UIKit types. Step-by-Step -Open your Azure Pipelines configuration file (typically named azure-pipelines.yml).-Locate the section where the macOS image is specified. It might look something like this: -Update the image reference to ‘macOS-13’: -Save the changes to the configuration file.-Commit the updated configuration file to your version control system (e.g., Git).-Trigger a new build in Azure Pipelines,…
Hi, I am András,
I am a seasoned software engineer from Budapest, Hungary with a strong focus on mobile app development using .NET MAUI and Xamarin.Forms. My expertise also extends to website building for my happy customers and other complex system designing. I am passionate about developing well-organized, maintainable software solutions.