During my migration from Native Android and iOS to Xamarin.Forms, I had decided to use AppCenter Push for my notification, since it is free and easy to use (of course I spent a good amount of time to make it works since it's relatively new thing with less guidance online). You can find my original sharing at How to implement AppCenter Push API?.
I was happy with it until Microsoft announced that it is retiring AppCenter Push (https://devblogs.microsoft.com/appcenter/app-center-mbaas-retirement/) and encouraged user to move over to Azure (which is a paid service). I decided to move back to use the native FCM and APN for my push notification.
The problem is there is no direct tutorials on how to do the entire thing. There are problems & solutions here and there such as iOS .P8 only works on HTTP/2 while my project is running on .Net Framework which is not supported. Only .Net Core could HTTP/2 protocol.