I love messing with remote control of things. I found a website called RemoteXY that allows one to create a customized app for an IOS or Android device. This allows one to use their phone or tablet as a remote to control a variety of devices. As an example, I wanted to be able to use my phone as a remote to control the large door on my farm shop.
The procedure is as follows: I go online to the RemoteXY app. I use their editor to create what I want my app to look like. I have a variety of "elements" to choose from. I decided I wanted 3 momentary buttons to work with the door opener and another to toggle the lights. Once I have the colors, sizes, decorations etc. exactly the way I want them to look on the phone, I ask for a download. This gives me a skeleton sketch with the framework of the screen and the buttons I have chosen. I load this into the Ardunio IDE. I then add the logic as far as what to do with the button presses etc. I then compile and load the sketch into my Arduino which has an attached BLE module or an ESP-32 which has built in BLE and/or WiFi.
The phone has a base app on it which is installed from the app store. To use the phone for the door, I launch the app and it attempts to connect with the controller. If successful (range is somewhat limited) the screen layout which has been stored in the microcontroller is transmitted to the phone and appears there.
I can then push the various buttons to control the door opener and toggle the lights. The first picture is how the screen on the phone or tablet looks.
Here's another that I made to be able to cycle the boom sections on my farm sprayer.
Everything is free for a simple situation with only a few elements. The second layout exceeds their free 5 element limit. The app will work for 30 seconds for testing and then purposely freeze. To use these more complex setups, they require a subscription. These two setups can be used by my iPhone, iPad and Android tablet but each must have an active subscription.