I developed an iOS app (not a web app) that enables my users (ie Shopify users) to see their daily revenue. Users grant access to my iOS app using the Shopify OAuth process, and the iOS app uses the Shopify API to access sales/revenue data for the users.
I am now preparing for Shopify app approval (which I understand is by submitting approval for app listing), but I cannot figure out how to get approval as my iOS app does not fit the standard requirements for the app listing.
1) My iOS app is mobile only, so it does not have any desktop screenshots. The listing submission asks for desktop screenshots.
2) Using the iOS app requires the user/tester to download the iOS app from the Apple App Store. Will the tester be able to download my iOS app from TestFlight?
What is your advice on how to proceed to get approval so I can use the Shopify API in my iOS app? Do I need to create a web app only for the approval process?
Solved! Go to the solution
I don't have good answers for you, but you could try emailing email@example.com with your questions.
The desktop screenshot requirement is frustrating, I think you should be able to just format iOS screenshots in desktop size to meet it - I've similarly had to submit an app before that is POS embedded only and doesn't really have a desktop component.
I've seen testers before use appetize.io as an iOS simulator, so I'm not sure they have access to physical devices.
One question I have for you - how did you successfully get the Shopify OAuth process to work with a native mobile app? Are you just doing everything within a webview of some kind (and using this as your app's URL too)? Or also asked differently, what will happen if/when a user clicks "Add App" from your Shopify App Store listing?
Thank you for the response.
I used a webview to complete the OAuth process.
I ask the user to input the name of the store, then I open the Shopify authentication link in a webview. I obtain the access token in the usual way
I saw on another thread that I likely will need to redirect users to authenticate in Chrome/Safari as Shopify does not support authentication via webview, but it is working for now (though I sometimes get an error about having an outdated browser).
I will try using the appetize.io simulator.
Outside the iOS app (such on Desktop), if the user clicks “Add App”, the user is directed to the static homepage for my company. There is no functionality on the homepage.
Inside the iOS app, I catch the redirect and show the user a revenue screen.
This is an accepted solution.
Thanks for the info, that's very clever. One thing they will expect is that when a merchant clicks Add App it will trigger OAuth for a store that hasn't yet installed your app (you can simulate this from your Partners dashboard by clicking "test on development store" and then selecting one of your stores). This also means you'll have to dynamically generate the permission URL without someone submitting their store name to you - the trick here is that when someone clicks "Add App" Shopify will automatically append a shop parameter to the URL so you can just use url params to grab it.
The app I submitted most recently didn't go through this, but in the past there's been an automated script that runs as soon as you submit your app where a bot will try to install your app using this process, and you'll get an immediate failure before it ever gets to a human tester if it doesn't install in this fashion. But maybe they recently removed this.
One suggestion I have here is that you make sure you at least get the above working, and then you build a bare-bones emptyState page embedded within Shopify Admin that serves as your index.html (instead of your company page) where users will land at after they successfully OAuth and just input text that instructs users on how to install your iOS app. I've seen other apps that are POS embedded apps do the same that essentially just instruct the user to add the app via Shopify POS.
Thank you for the guidance.
I also read some of your other posts. I will follow that guidance too.
@jmcason per email exchange with the reviewer on my latest app, they can potentially make accommodations to make sure your app is tested by a reviewer with a physical iOS device. I would just put that in your instructions.