Our app includes showing external web service with WebView or Safari and returning to the app with custom URL scheme or universal link.
When we set "Hide and Require Face ID" feature which was available on iOS 18, neither custom URL scheme nor universal link activated the app.
If we only set "Require Face ID", the deep link worked properly.
Here is what we've tried:
Define custom URL scheme or universal link in the app
https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app
https://developer.apple.com/documentation/xcode/supporting-universal-links-in-your-app
Implement external web service with one of the following frameworks
ASWebAuthenticationSession
https://developer.apple.com/documentation/authenticationservices/aswebauthenticationsession/
SFSafariViewController
https://developer.apple.com/documentation/safariservices/sfsafariviewcontroller
Safari
WKWebView
https://developer.apple.com/documentation/webkit/wkwebview
On iOS 18 device, install the app and set "Hide and Require Face ID"
Access external web page and tap the link which activates custom URL scheme or universal link
We expected the deep link to work, but the results were:
Custom URL scheme & ASWebAuthenticationSession/SFSafariViewController/Safari
The system shows "Cannot open the page because the address is invalid"
Custom URL scheme & WKWebView
Nothing happens when tapping the link
Universal link
Directed to the server with associated domain file, but the system doesn't call the app which is defined in the associated domain file
We tested the feature with the app built with Xcode16 beta 6, and the device with iOS 18 Seed 8(22A5350a).
Does hide app feature support custom URL scheme and universal link?
Universal Links
RSS for tagAllow your users to intelligently follow links to content in your app or to your website using universal links.
Posts under Universal Links tag
86 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
We have universal links which takes user to various journeys in the app when user clicks on the link, however it works only when app is installed. If app is not installed link takes user to the App Store and when the user installs and opens the app, the link does not launch the intended deeplink flow.
Is there any way we can pass context to app store and receive it when user opens the app?
Android provides similar functionality using install referral lib. Checking if similar is possible in iOS.
We need to read the value for userActivity.referrerUrl when the app is accessed through a Universal Link, which when using the UIKit lifecycle we can easily do by implementing the method scene(_: UIScene, continue: NSUserActivity) in SceneDelegate and filtering for activity type of NSUserActivityTypeBrowsingWeb.
When the app uses the SwiftUI lifecycle that method doesn't get called, even though the app is correctly configured to use AppDelegate and SceneDelegate (through the @UIApplicationDelegateAdaptor wrapper). I can confirm that the setup is correct because the method scene(_: UIScene, willConnectTo: UISceneSession, options: UIScene.ConnectionOptions) in SceneDelegate is called on app launch.
The obvious SwiftUI way of achieving the same would be by using the .onContinueUserActivity(NSUserActivityTypeBrowsingWeb) modifier, but that doesn't work. Is this a bug?
We use universal links for an email link sign-in flow. In the last few days, we have received several reports of the links opening the browser instead of the app. Many other new users are able to sign-in with no problem.
Our AASA file has not changed and is hosted via an S3 website, which should have extremely high availability.
Anybody know what might cause this? How can I go about diagnosing it?
Thanks
Jacob
I'm able to deep link to the Automation tab in Shortcuts App using : shortcuts://create-automation.
But I want to preselect a predefined automation (like bluetooth / nfc) and profile some parameters along with it, like
Name of the automation shortcut to select
When / Trigger point for the automation shortcut
Do / what should happen on tuning the shortcut
Thanks !
Hi Team ,
I'm currently working on universal links.
iOS application is build with react-native framework
Steps I did to achieve the universal links
Step 1 :
Created an app-site-association file
My AASA file format :
"applinks": {
"details": [
{
"appIDs": [
"TEAMID.BUNDLEID"
],
"components": [
{
"/": "*",
"?": {
"$web_only": "true"
},
"exclude": true
},
{
"/": "*",
"?": {
"%24web_only": "true"
},
"exclude": true
},
{
"/": "/e/*",
"exclude": true
},
{
"/": "*",
},
{
"/": "/",
}
]
}
]
}
}
Step 2 :
I have hosted the app-site-association file in .well-known path
https://staging.***.com/.well-known/apple-app-site-association
Step 3 :
I have enabled associated domains and added applinks in Entitlements also
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:staging.***.com</string>
</array>
<key>com.apple.developer.networking.multicast</key>
<true/>
<key>com.apple.developer.networking.wifi-info</key>
<true/>
</dict>
</plist>
Step 4 :
https://app-site-association.cdn-apple.com/a/v1/staging.***.com
With the above apple cdn url , I can able to see the app-site-association file which I hosted in https://staging.***.com/.well-known/apple-app-site-association path.
Step 5 :
I have checked the console of phone with Xcode -> Devices -> Console
When my application trying to down the AASA file from my server , I got this below error :
swcd : Error getting enterprise-managed associated domains data. If this device is not enterprise-managed, this is normal: Error Domain=SWCErrorDomain Code=1701 "Failed to get associated domain data from ManagedConfiguration framework." UserInfo={NSDebugDescription=Failed to get associated domain data from ManagedConfiguration framework., Line=298, Function=}
swcd : Developer mode enabled: NO
Kindly help me to resolve this issue
Thanks in advance.
Ive wrestled with this for days now. My first version of the app that included the app clip worked just fine, and then after using my new domains it says "Cannot Reach AASA File" I have refreshed many times, tried re-making the file and nothing works.
When checking my domain, it has the right file and i validated it with branch and json validation.
When clicking the app links for the app or the clip, they all work? This is frustrating because i cant create advanced app clips because it says it can't see my file
Please Help, something is off here
<string>applinks:etherialdimension.pages.dev</string>
<string>appclips:etherialdimension.pages.dev</string>
<string>applinks:etherealdimension.netlify.app</string>
<string>appclips:etherealdimension.netlify.app</string>
<string>applinks:www.etherealdimension.netlify.app</string>
<string>appclips:www.etherealdimension.netlify.app</string>
Hi all,
I wonder if anyone can shed any light or tips on this.
We have our iOS app which is just for iPhone at the moment. I have some universal links that are currently working. I have added another '/mobileAppQuickLink' into the file and updated on our site in the '.well-known' folder location.
The issue I am having is, all of the links before the additional one mentioned above are working.
Steps Checked
Checked https://app-site-association.cdn-apple.com/a/v1/OUR_DOMAIN to make sure the latest AASA file is there, it is.
Checked the sysdiagnosis package logs and can see in the 'swcutil_show.txt' that only the original three are there for the app and not the final one.
Reinstalled the app multiple time to bring down the AASA, no luck.
Wiped a device and reset, downloaded the app again, no luck.
The code below is the AASA file with our app ID redacted. I have triple checked these and they haven't changed from the previous.
"applinks": {
"details": [
{
"appIDs": [
"A646R8---.com.REDACTED.REDACTED"
],
"components": [
{
"#": "no_universal_links",
"exclude": true,
"comment": "Matches any URL with a fragment that equals no_universal_links and instructs the system not to open it as a universal link."
},
{
"/": "/client/*",
"comment": "Matches any URL with a path that starts with /client/."
},
{
"/": "/files/*",
"comment": "Matches any URL with a path that starts with /files/."
},
{
"/": "/signingRequests/*",
"comment": "Matches any URL with a path that starts with /signingRequests/."
},
{
"/": "/mobileAppQuickLink" //MISSING ON DEVICE
}
]
}
]
},
"webcredentials": {
"apps": [
"A646R8----com.REDACTED.REDACTED"
]
}
}
Below is a copy of one of the 'swcutil_show.txt' from a device.
App ID: A646R8----.com.REDACTED.REDACTED
App Version: 1.1.70
App PI: <LSPersistentIdentifier 0x88c027a80> { v = 0, t = 0x8, u = 0x548, db = 514601C3-79C8-47C6-A178-B09AF5C-----, {length = 8, bytes = 0x4805000000000000} }
Domain: *.portal.staging.REDACTED.REDACTED
Patterns: {"#":"no_universal_links","exclude":true}, {"/":"/client/*"}, {"/":"/files/*"}, {"/":"/signingRequests/*"}
User Approval: unspecified
Site/Fmwk Approval: approved
Flags:
Last Checked: 2024-08-04 09:44:07 +0000
Next Check: 2024-08-09 09:39:26 +0000
Does anyone know of any reason this could be? It looks like the devices maybe getting a cached version.
While searching I've seen more than one url form used for launching from an app into the iPhone's App Store app. Both of these work, but is one preferred to the other, if so why, or are they exactly equivalent?
let appStoreLink1 = "https://itunes.apple.com/us/app/apple-store/idNNNNN?mt=8"
let appStoreLink2 = "https://apps.apple.com/us/app/name-of-app/idNNNNN"
if let url = URL(string: appStoreLink1 or appStoreLink2), UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: {(success: Bool) in
...
I have a requirement to launch an app from another app (there is no requirement to launch the app from a website), and if its not installed then for the user to be redirected to the app store to download the app.
The app already has a custom url scheme implemented, however the documentation and tutorials in this area are confusing and unclear.
In order to launch the app, the custom url scheme will provide that, however, in order to get the redirection to the app store then firstly does the custom url scheme have to be replaced with universal links?
Secondly, is it necessary to have a webpage that links to the app store? Is it possible to get this behaviour without having a website?
Is it the case that Apple doesn't provide this functionality and developers have to have the hassle of hosting a website purely just for the sake of redirecting to the App Store?
I'm working on developing an AASA for an app that may be built by multiple teams, and I want to create a universal link that opens the app regardless of which team's app is installed on iOS.
Right now the AASA is
{
"applinks":{"apps":[],"details":
[
{"paths":["/abc/*"],"appID":"TEAM1.BUNDLE_ID"},
{"paths":["/abc/*"],"appID":"TEAM2.BUNDLE_ID"},
]
}
}
The AASA works fine for TEAM1, but when the app is built with TEAM2, it does not work (instead redirects to the appstore). I checked the swcutil.txt and it confirms that the is indeed not linked to any domains when built from TEAM2. Is there a known fix for this, or a potential cause?
App / Universal Linking works fine on the "normal" web browser (applies to chrome and safari) however once the page is accessed via "incognito/private" modes app / universal linking redirects the user to the app store instead of the installed application.
TLDR:
App / Universal Linking doesn't work properly on "Incognito" Mode
We are currently doing our beta testing for our application and we are having some issues with universal links. The issues can be seen below:
we are using auth0 for authentication. In this process, after users verify their email addresses they should be redirected back to the application. For some users, they are directed back to a page that shows error 404. For other users where it works, they are directed back to the application. What could be my issue?
Our app-site- association file is hosted in the link below for reference.
https://yourmomentshub.com/.well-known/apple-app-site-association
Issue:
We are currently experiencing an issue with deep linking in iOS applications when Microsoft Edge is set as the default browser on the device. Users, upon receiving an invitation link in their mail and attempting to open the app (if installed) via the link, encounter a problem where the Edge browser opens the app store as a popover. However, it's important to note that this URL functions correctly with Safari.
Attempts So far:
The integration of deep linking in iOS has been correctly implemented.
I have also verified the Apple App Site Association (AASA), which is deployed on the backend site, facilitating redirection to the application on mobile.
Testing the same scenario with other browsers revealed that this link does not work with Chrome, Brave, and Edge, excluding Safari.
Reviewing the Deep Link URL, it complies with the safe link policy. Removing the safe link policy from the URL and attempting to open it in Edge and other browsers results in seamless functionality.
I have tested the safe link with the Amazon product, It’s not working with the Edge browser.
I have raised the same concern with Microsoft Learn, Microsoft Community, and Stack Overflow.
For reference, I am attaching the safe link (Non-working) and the normal link (Working Link) with this story.
**Non-Working Link: **
https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2F<SITELINK (Eg.***.yyy.com)>.%2FteamDay%3FteamDayId%3DHTWmmt7cmYyd7LawwhMq5%2BMyNt%2Bf8eUCz25pzmsTUMo%3D%26domainUrl%3Dhttps%3A%2F%2Fxxx.dev.com&data=05%7C02%7C%40%7Cb6ffab414d034bbceb0108dbfd382f0c%7C454af8f364734bce8aa5f9403e1d1271%7C0%7C0%7C638382189984623308%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=B5rzVQ0alWjIsT7ycI2oZrNjeVPM%2BeoMk0YDpMZk6q4%3D&reserved=0
Working Link:
https://***.yyysoftware.com/teamDay?teamDayId=p0RQIAsd4vaTk1yHGuTUdBCDmP0ZK1CuR8Q3JfSPJvU=&domainUrl=https://***.dev.com
Hi all,
I recently migrated our app from AppDelegate to SceneDelegate in order to make it available on visionOS.
So far it is working, but I have a problem with Universal links not being invoked.
I implemented:
func scene(_ scene: UIScene, continue userActivity: NSUserActivity)
in my Scene Delegate, but it doesn't get invoked after the system opens the app.
This only happens, if the app is running in the background. If the app is not running and is launched by the OS, I receive the URL as expected in:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)
If I also implement:
func scene(_ scene: UIScene, willContinueUserActivityWithType userActivityType: String)
it will be invoked by the OS, but after willContinueUserActivityWithType was called, neither:
func scene(_ scene: UIScene, didFailToContinueUserActivityWithType userActivityType: String, error: any Error)
nor:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)
are being invoked by the OS.
I made a simple Barebones project with the same Bundle ID and the same Entitlements and there:
func scene(_ scene: UIScene, continue userActivity: NSUserActivity)
is being invoked as expected, upon tapping on the Universal Link in another app.
What might be the difference between the two projects causing this behaviour?
It is a rather big and old app, so it is difficult for me to compare the simple example project to the real project.
Does anybody know, where I could start to debug?
Many thanks in advance!
Hey all,
Is it possible to deep link into another app while that current app is in Guided Access mode?
I implemented a universal link according to this guidance.
https://developer.apple.com/videos/play/wwdc2019/717
However, my universal links seem to never work.
apple-app-site-association
https://hajimenavi.web.app/.well-known/apple-app-site-association
Xcode settings
The link I am trying to open
https://hajimenavi.web.app/familyId/ZBEJSJXyPNT7G
team id
I validated with apple's analyzation that the server has no problem (with Setting app>Developer>Universal Links analysis.
What else should I check??
I am wasting a whole day with this. Please please help.
I have a punycode link of the following type: https://xn--d1aqf.xn--p1ai/.However, clicking on this link, or opening it through the simulator, opens the page in the browser, not in the application. The system does not see that this domain is present in one of the applications, however, any other domain (example.com , for example), is validated by the system. What could this be related to?
Hi guys!
I'm using a universal link to match with iOS and Android. I'm trying to open my app when user clicks in a link like this: https://mywebsite.com/?invite=TI878IU
I've tried many different ways to create the file apple-app-site-association. But any of them I could use this parameter directly.
Do you have any guidance in how I could do that?
This is my file:
{
"applinks": {
"apps": [],
"details": [
{
"appIDs": [
"ABC12345AB.com.example.app"
],
"paths": [
"*"
],
"components": [
{
"/": "/*",
"comment": "Matches any URL with a fragment parameters to open it as universal link"
},
{
"/": "/privacy.html",
"exclude": true,
"comment": "Matches any URL with a path that starts with /help/website/ and instructs the system not to open it as a universal link."
}
]
}
]
}
}
Hi Apple,
We have been using Associated Domains and Universal Linking for years now, without any problem. Recently, users began having problems accessing the app through Universal Links. A quick look in the swcutil_show.txt file (through Analytics gathering in the sysdiagnose) at what the system tried to download revealed that the Apple Server had issues downloading our AASA file:
Error Domain=SWCErrorDomain Code=7 "SWCERR00101 Bad HTTP Response: 502 Bad Gateway -- {"status":"502 Bad Gateway"}" UserInfo={Line=275, Function=-[SWCDownloader URLSession:dataTask:didReceiveResponse:completionHandler:], NSDebugDescription=SWCERR00101 Bad HTTP Response: 502 Bad Gateway -- {"status":"502 Bad Gateway"}, UnderlyingError=Error Domain=HTTP Code=404 "(null)" UserInfo={Line=275, Function=-[SWCDownloader URLSession:dataTask:didReceiveResponse:completionHandler:]}}
I was wondering if there was ANY way of knowing what cause the 404?
Thanks!