diff --git a/Samples/Samples.iOS/Info.plist b/Samples/Samples.iOS/Info.plist
index 879f584ac..eee78b5fc 100644
--- a/Samples/Samples.iOS/Info.plist
+++ b/Samples/Samples.iOS/Info.plist
@@ -22,7 +22,7 @@
UIInterfaceOrientationLandscapeRight
MinimumOSVersion
- 10.0
+ 11.0
CFBundleDisplayName
Xamarin.Essentials
CFBundleIdentifier
@@ -78,5 +78,11 @@
mailto
+ NSCalendarsFullAccessUsageDescription
+ Full access to the Calendar
+ NSCalendarsWriteOnlyAccessUsageDescription
+ Write only access to the Calendar
+ NSRemindersFullAccessUsageDescription
+ Full access to reminders
diff --git a/Xamarin.Essentials/Permissions/Permissions.ios.watchos.cs b/Xamarin.Essentials/Permissions/Permissions.ios.watchos.cs
index 273f60238..67bf8f3a0 100644
--- a/Xamarin.Essentials/Permissions/Permissions.ios.watchos.cs
+++ b/Xamarin.Essentials/Permissions/Permissions.ios.watchos.cs
@@ -28,7 +28,19 @@ internal static async Task RequestPermissionAsync(EKEntityType
{
var eventStore = new EKEventStore();
- var results = await eventStore.RequestAccessAsync(entityType);
+ Tuple results = null;
+
+ if (Platform.HasOSVersion(17, 0))
+ {
+ if (entityType == EKEntityType.Reminder)
+ results = await eventStore.RequestFullAccessToRemindersAsync();
+ if (entityType == EKEntityType.Event)
+ results = await eventStore.RequestFullAccessToEventsAsync();
+ }
+ else
+ {
+ results = await eventStore.RequestAccessAsync(entityType);
+ }
return results.Item1 ? PermissionStatus.Granted : PermissionStatus.Denied;
}
@@ -36,8 +48,20 @@ internal static async Task RequestPermissionAsync(EKEntityType
public partial class CalendarRead : BasePlatformPermission
{
- protected override Func> RequiredInfoPlistKeys =>
- () => new string[] { "NSCalendarsUsageDescription" };
+ protected override Func> RequiredInfoPlistKeys
+ {
+ get
+ {
+ if (Platform.HasOSVersion(17, 0))
+ {
+ return () => new string[] { "NSCalendarsFullAccessUsageDescription" };
+ }
+ else
+ {
+ return () => new string[] { "NSCalendarsUsageDescription" };
+ }
+ }
+ }
public override Task CheckStatusAsync()
{
@@ -60,8 +84,20 @@ public override Task RequestAsync()
public partial class CalendarWrite : BasePlatformPermission
{
- protected override Func> RequiredInfoPlistKeys =>
- () => new string[] { "NSCalendarsUsageDescription" };
+ protected override Func> RequiredInfoPlistKeys
+ {
+ get
+ {
+ if (Platform.HasOSVersion(17, 0))
+ {
+ return () => new string[] { "NSCalendarsWriteOnlyAccessUsageDescription" };
+ }
+ else
+ {
+ return () => new string[] { "NSCalendarsUsageDescription" };
+ }
+ }
+ }
public override Task CheckStatusAsync()
{
@@ -84,8 +120,20 @@ public override Task RequestAsync()
public partial class Reminders : BasePlatformPermission
{
- protected override Func> RequiredInfoPlistKeys =>
- () => new string[] { "NSRemindersUsageDescription" };
+ protected override Func> RequiredInfoPlistKeys
+ {
+ get
+ {
+ if (Platform.HasOSVersion(17, 0))
+ {
+ return () => new string[] { "NSRemindersFullAccessUsageDescription" };
+ }
+ else
+ {
+ return () => new string[] { "NSRemindersUsageDescription" };
+ }
+ }
+ }
public override Task CheckStatusAsync()
{
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 4e3dc40df..16184e7d5 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -8,7 +8,7 @@ pr:
- develop
variables:
- BASE_VERSION: 1.8.0
+ BASE_VERSION: 1.8.1
PREVIEW_LABEL: 'ci'
BUILD_NUMBER: $[counter(format('{0}_{1}_{2}', variables['BASE_VERSION'], variables['PREVIEW_LABEL'], variables['Build.SourceBranch']), 1)]
NUGET_VERSION: $[format('{0}-{1}.{2}', variables['BASE_VERSION'], variables['PREVIEW_LABEL'], variables['BUILD_NUMBER'])]
@@ -47,6 +47,8 @@ stages:
windowsImageOverride: AzurePipelinesWindows2019compliant
${{ if ne(variables['System.TeamProject'], 'devdiv') }}:
windowsImage: windows-2019
+ macosImage: 'macos-13'
+ xcode: '15.0.1'
areaPath: 'DevDiv\Xamarin SDK'
masterBranchName: 'main'
${{ if startsWith(variables['Build.SourceBranch'], 'refs/tags/') }}: #we are shipping our product
@@ -141,7 +143,7 @@ stages:
- template: .ci/build.v1.yml@components
parameters:
- macosImage: 'macos-12'
+ macosImage: 'macos-13'
name: devicetests_ios
runChecks: false
displayName: iOS
@@ -152,7 +154,7 @@ stages:
cakeFile: DeviceTests/build.cake
cakeTarget: test-ios-emu
cake: $(CAKE_VERSION)
- xcode: '14.2'
+ xcode: '15.0.1'
xharness: '1.0.0-prerelease.23212.1'
- template: .ci/build.v1.yml@components