The simulator doesn't have a camera. The android emulator allows to configure the camera and use a picture, it's very handy to test your qr/barcode reader without needing to use a physical device. Maybe this also allows to use an image as camera?
It’s been years but I ran into a problem with a notification extension years ago. Worked fine on simulator, not on device. Turned out it was because I was using a HEIF image and (I think) the on-device extension was trying to use hardware decoding and didn’t have access to it. Meanwhile the simulator had no such sandboxing restrictions.
The difference doesn’t matter until it does, and then it’s infuriating to work out what’s going on.
It would also make testing far easier. I got bit with something that failed on real life iPhones with language set to es_US that worked fine on the simulator.
Comments
That explains the difference, but what's the purpose?
The simulator doesn't have a camera. The android emulator allows to configure the camera and use a picture, it's very handy to test your qr/barcode reader without needing to use a physical device. Maybe this also allows to use an image as camera?
It's useful for security research since you can do kernel debugging and inspection of the device not possible in the simulator.
As others pointed out it's also useful for e.g. click/spam farms which need a "real" iPhone.
You can test your application, game, website without a physical phone?
Can do that with the simulator too
Running on ported userspace components, with a shim, isn't the same as running on the OS in itself.
That really matters, sometimes.
But not the vast majority of the time.
(source: been coding iOS since pre-SDK iPhone OS 1.0)
Can you give some examples of where it matters? I'm genuinely curious.
Testing AR apps, or any app that relies on hardware you can't simulate easily.
https://www.youtube.com/watch?v=T43b5ywnYpo
It’s been years but I ran into a problem with a notification extension years ago. Worked fine on simulator, not on device. Turned out it was because I was using a HEIF image and (I think) the on-device extension was trying to use hardware decoding and didn’t have access to it. Meanwhile the simulator had no such sandboxing restrictions.
The difference doesn’t matter until it does, and then it’s infuriating to work out what’s going on.
I love this quote, reminds me how annoying it can be when something isn’t reproducible locally… only in production…
Last I checked, VPN network extensions wouldn't run in the simulator.
Is the simulator faster than this? I would suspect so.
I have had instances where the app runs fine on the simulator but crashes on the device. This might solve that.
You cannot run Network Extensions on the simulator
If functional, you can download apps from the App Store, sign in to iCloud.. probably do a bunch of agentic stuff as if you had a real device
Looks like apple services compatibility is not currently supported for this [0]
[0] https://github.com/Lakr233/vphone-cli/discussions/175
If you read a bit further, there's a jailbroken variant that has Sileo and Trollstore installed, so you can run whatever IPAs
Where?
Edit: ah now I see, in the main readme under heading Firmware Variants. https://github.com/Lakr233/vphone-cli#firmware-variants
Exactly. It means it cannot download apps from the App Store or use Apple services and Apple knows this deliberate limitation.
Spam. Click farms. Etc.
It would also make testing far easier. I got bit with something that failed on real life iPhones with language set to es_US that worked fine on the simulator.
oh. is this why icloud spam texts are running wild now
No, it’s just trivial to generate iCloud email addresses that won’t get picked up by spam filter.