We have EXACTLY the same user case with one of our clients.
In our particular case, since the client doesn't have a user registration flow in the same site (they use a third party vendor), we created an automation with a WP plugin that sends information to a Google Sheet. Then we pull the field from the sheet and send it to Mailchimp using Zapier. This is added to a list of pending users (they must send a photo). Once the user sends the photo, we delete it from the spreadsheet (manually) and the Mailchimp list is automatically updated. It's a very simple approach and the client is comfortable with it.
Keep in mind that you could do everything I mentioned completely automated with Zapier, but this particular project requires that manual intervention.
If you can get the user into your system, I think the less cumbersome way is the third option, "on app launch". Pushes are easily dismissed and the user must approve them. Many users reject push messages on desktop by default, though it's not as common on mobile devices. Therefore, it also depends on your target device.
On the other hand, a Toast Notification when launching an app (web or mobile) briefly interrupts the flow, is easy to dismiss, yet informative, and lets the user know that the system is expecting something from them. The downside is that the user must first be identified as a user (logged in or with cookies).
- if it's a true mobile app (not a responsive website), choose either option 2 or 3 (or a combination of both).
- If it's a responsive website, then a combination of 1 and 3 is just fine.