Please jump to the right section for your issue
On Safari with iOS < 13
iOS has a somewhat heavy-handed implementation of user permissions for camera access in the Safari browser. The permissions are not persistent, and re-requested with every page load.
If you have a single-page app, you should expect to grant camera access once per application load.
However, if you're loading the page each time you need to scan, you will see the camera permission dialog. Whenever possible, we recommend implementing your workflow without reloading the page.
However, this issue has been resolved by iOS 13 as written here (Per-site settings): https://www.apple.com/au/ios/ios-13-preview/features/. Please find here how to grant camera access to your website: https://stackoverflow.com/questions/48847388/how-to-permanently-allow-usage-of-camera-on-trusted-websites-with-ios-safari/57368061#57368061.
Unfortunately, PWAs are revoking camera access privileges whenever the hash changes. If you would like to add your voice for this issue to be solved, you can post on this ticket.