Closed mh05 closed 11 months ago
Xamarin.Forms too. Latest Version of all SDKs and Frameworks. Calendar Access is very important
I wanted to reach out to let you know that I'm still encountering the same challenge with the iOS 17 Calendar permissions. Despite ensuring the necessary configurations and code adjustments as discussed previously, the permission prompts for Calendar.Write or Calendar.Read are still not displaying as expected
Xamarin form App, just upgraded to iOS 17, Calendar permission no longer working, but other permission such as contact write still working, can any one have a clue and please advise, thanks lot
@john26l In dotnet 8 you can use the solution of Plugin.Maui.CaledarStore https://github.com/jfversluis/Plugin.Maui.CalendarStore/pull/46/files#
Is there no solution for Xamarin.Forms with .Net Standard 2.0 ??
The solution could be along the same lines as the link posted above. I'll see what I can do to also add that to Xamarin.Essentials.
Hi Gerald, good news, and better, if you (or someone else) could it ASAP, or a workaround with Dependency injection? I need this very urgent. Thanks
Since the PR above is somehow stuck, I did try to resolve this for myself and was able to do so with a bit of effort.
The main issue is, that the iOS-SDK bundled with Xamarin only supports the iOS 16 bindings and does not contain the ones from 17. Unfortunately, Apple decided to deprecaterequestAccessToEntityType
of EKEventStore
permission requests and make them fail at the same time, instead of adding a fallback implementation, that would use requestFullAccessToEventsWithCompletion
under the hood.
Anyway, first approach was to simply call the new requestFullAccessToEventsWithCompletion
with Obj-c message send via Selector
directly from C#, but that failed, because I was not able to provide the parameter for the callback correctly.
But, creating a small static (obj-c) lib, which wraps the missing calls to EKEventStore
+ creating the bindings for C#, just works fine. Remember to build a fat lib, in order to also support iOS simulator.
here you go → https://github.com/gering/EventKitPermissionsWrapper
Use make
to build the static lib
Thank you @gering! Yeah I was wondering about that. I do see the bindings come up on my machine, but I guess that might be some weird mixup between the .NET MAUI and Xamarin bits, because indeed there is Xcode 15 support but no new APIs so I guess we won't be able to implement this in Xamarin.Essentials anymore.
Thank you for this workaround!
Closing this one as we can't make this work on the Xamarin side because while Xcode 15 is supported for Xamarin, no new APIs have been added. Only the ability to build against Xcode 15 and prolong the Xamarin lifespan a little.
If you really need this, use the workaround above or migrate to .NET MAUI.
Description
iOS 17 and higher doesn't show any permission popup when requesting Calendar.Write or Calendar.Read for the first time both on (Mai)Permission and via EventStore (Eventstore throwns an error ->
-requestAccessToEntityType:completion: has been deprecated-calling this method is no longer allowed. Instead, use -requestFullAccessToEventsWithCompletion:, -requestWriteOnlyAccessToEventsWithCompletion:, or -requestFullAccessToRemindersWithCompletion: )
Steps to Reproduce
note: When the user declines the permission
Example code: With (maui)permission
Example code without (maui)Permission
Expected Behavior
1: Permission popup for with "name app" Would like to Access Your Calander description from info.plist
2: Settings -> Privancy & Security -> Calendars -> "App name" toggle switch on (at least when you accept it)
3: Settings -> "App name" -> Allow "app name" To Acces -> Calendars.
Actual Behavior
Apps doesn't show any popup
Basic Information