PhoneThing is a two-part prototype:
PhoneThing.PC: a Windows desktop receiver app with a local HTTP endpoint and a live command logPhoneThingRemote: a native SwiftUI iPhone app that sends media-control commands over your local network
For this first version, the iPhone app only sends commands and the PC app only displays what it received. Nothing on the PC actually controls media yet.
- Previous track command
- Play / pause command
- Next track command
- Volume command with a percentage value
- Simple local-network communication between phone and PC
- A Windows UI that clearly shows the last received command and keeps a command history
- Open
PhoneThing.slnin Visual Studio 2022 or newer. - Run the
PhoneThing.PCproject. - The app will show the exact
http://<your-ip>:5050/api/commandsaddresses that the phone can use.
- Open PowerShell in the repo root.
- Run:
.\scripts\publish-pc.ps1- After publishing, use:
dist\pc\PhoneThing.PC.exe
That publish step creates a self-contained Windows executable, so it can run even on a PC without the .NET runtime installed.
You will need a Mac with Xcode to install the iPhone app on your device.
- Copy this repo to your Mac.
- Open
PhoneThingRemote/PhoneThingRemote.xcodeprojin Xcode. - Select the
PhoneThingRemotetarget. - In
Signing & Capabilities, choose your Apple ID team. - Plug in your iPhone or select it from Xcode's device list.
- Build and run the app.
- If iOS warns that the developer is untrusted, go to:
Settings > General > VPN & Device Management
- Trust your Apple ID's developer profile, then open the app again.
- Launch the Windows app first.
- Make sure the phone and PC are on the same Wi-Fi network.
- In the iPhone app, enter the PC's IP address exactly as shown in the Windows app.
- Tap the media buttons or send the volume value.
- The Windows app should immediately show the received command.
When you're ready, the next logical steps are:
- Replace the PC log-only behavior with real media control handlers.
- Add pairing and auto-discovery so you don't have to type the IP manually.
- Add app-specific routes, including Spotify-specific volume if we decide to integrate that separately.