I have learned how to develop apps for mobile platform since 2013. It was a very different area for a back-end engineer start working on client.
Almost all projects I worked need cross platform, at least iOS + Android.

After trying 5 different cross platform solutions, I decided to use native platform for my new project now.
The shortage of these solutions are more than the convenience it brings.

Apache Cordova
Details feel not like real native app. Feature pass.

C++ Manually build library use ObjC link and JNI load it.
It works perfect, but it’s too complex to keep C++ and ObjC and JNI at the same time.

Xamarin Forms
Good for CMS like app, if you don’t care the details for different platforms. Cross platform interface design is a wrong direction for most of my projects.

Xamarin Native
For now, I think this is the best cross platform solution. C# is also better language than Java.

Native for each platform, use OpenAPI generate server stub.
The most shared logic I wrote with other 4 solutions are client/server RPC. OpenAPI/Swagger solved this natively.

Resetting the Push Notifications Permissions Alert on iOS

The first time a push-enabled app registers for push notifications, iOS asks the user if they wish to receive notifications for that app. Once the user has responded to this alert it is not presented again unless the device is restored or the app has been uninstalled for at least a day.

If you want to simulate a first-time run of your app, you can leave the app uninstalled for a day. You can achieve the latter without actually waiting a day by following these steps:

Delete your app from the device.

Turn the device off completely and turn it back on.

Go to Settings > General > Date & Time and set the date ahead a day or more.