However, there are many threads on here showing how App Clip development is broken and there is no way to test the end to end experience.
App Clip Development and Testing seems to have been broken since iOS 14 Beta 5
What is going?
The activation and display (invocation) of the App Clip Card
End-to-End Testing Experience for the App Clip itself.
In iOS 14 Beta 5, there was finally a method to make the App Clip Card show. That method was to goto the developer settings in iOS and setup the "Local Experiences". After you set this up, it still required you to use Safari to navigate to a webpage that had the Smart Banner setup. From there the Smart Banner would appear at the top of the Safari browser and clicking it would make the App Clip Card that was defined in Local Experiences display. This stopped working after iOS 14 Beta 5
After it stopped working, I have not found any other way to get the App Clip Card to show. I've tried QR Codes, going to an enabled URL in Safari, and Sending the URL via iMessage.
Even when I could get the App Clip to show back in iOS 14 Beta 5, there was no way to click the Call to Action button to get into the App Clip itself. You were only able to test that the App Clip card would display. The button was grayed out and not clickable.
This leaves us with no way to test the end to end experience like a user would get in production.
We would have to test the invocation of the card and what it displays as one experience.
We would have to then test the entry into the App Clip as a separate experience (via Test Flight).
Configure the Fruta sample project according to the instructions in the README.
Build and run the App Clip scheme on your test device once, so the App Clip is deployed to the device.
On your test device in the the Developer app, define a Local Experience:
URL Prefix: https://fruta.example.com. In theory, this can be any URL that makes sense for your app.
Bundle ID: The App Clip target's bundle ID.
Title: Something that makes sense, i.e. "Order a smoothie."
Subtitle: "It's yummy!"
Action: Open
Don't forget to save the Local Experience.
Create a regular QR code or NFC tag with the same URL: https://fruta.example.com.
Add the QR Code Reader button to Control Center on your test device.
Use the QR Code Reader to read the QR code, or touch the NFC tag. I do not have one, so I can't test NFC tags.
How are you invoking the App Clip? Local Experience? TestFlight?
What is the URL?
If TestFlight, is it possible that in App Store Connect the App Clip is restricted to a region, and your device is set to a different region?
Use the QR code scanning app via Control center.
The camera app in iOS 14 Beat 8 no longer reacts to a QR code. It no longer prompts to open a URL. (The camera app still prompts to open Safari when it sees a QR code in iOS 13).
Installing the app clip via Xcode first will allow the App Clip Card's Call to Action button to take you into the App Clip.
When the Safari Smart App Banner worked in iOS 14 Beta 5, clicking it would show the App Clip Card.
If you had the App Clip installed (via TestFlight), the Safari Smart App Banner would take you directly to the App Clip, bypassing the Card. This is why I didn't install the App Clip via Xcode. I was able to reproduce this behavior by uninstalling the App Clip and going to saferhood.org in Safari.
Going to a website with Safari Smart App Banner enabled still doesn't work.
My site association file is here: saferhood.org/.well-known/apple-app-site-association
And I have the Meta tag as <meta name="apple-itunes-app" content="app-clip-bundle-id=com.bumbleparrot.saferhood.Clip, app-id=1498248101, affiliate-data=myAffiliateData, app-argument=myAppArgument" "="">
Direct from Xcode by running the App Clip target.
Local Experience. This is still an important testing scenario for apps under development, that have not yet been uploaded to App Store Connect. (cc. creatingrev)
TestFlight.
Code Block html <meta data-react-helmet="true" name="apple-itunes-app" content="app-id=123456789, affiliate-data=2002I6Tq, app-clip-bundle-id=com.Company.AppName.Clip">
(I assume the content order is not important here as long as it's true, just to make sure, eh?)