Universal Links

RSS for tag

Allow your users to intelligently follow links to content in your app or to your website using universal links.

Posts under Universal Links tag

200 Posts

Post

Replies

Boosts

Views

Activity

Your browser preventing this app to open “URL”
Hi Apple developers, I am very new to XCode and Swift, I am planning to build an app for iOS from a web. I tried to use WKWebView to handle the web , I managed to redirect some of the links to Safari, however some button/links didn't trigger .linkActivated function and encounter the error as "Your browser preventing this app to open “URL”. If I copy the URL to Safari is able to open, I trying to research on web but can't find any related solution for my case. Here is the code in my app: import UIKit import WebKit import SafariServices class ViewController: UIViewController, WKNavigationDelegate { var webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() // Initialize WKWebView let webConfiguration = WKWebViewConfiguration() //enable javascript webConfiguration.preferences.javaScriptEnabled = true webView = WKWebView(frame: self.view.frame, configuration: webConfiguration) webView.navigationDelegate = self self.view.addSubview(webView) // Load a web page as webview if let url = URL(string: "https://myurl") { let request = URLRequest(url: url) webView.load(request) } //console log webView.evaluateJavaScript("console.log('Button clicked!')") { result, error in if let error = error { print("Error executing JavaScript: \(error.localizedDescription)") } else { print("JavaScript result: \(String(describing: result))") } } } func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if let url = navigationAction.request.url, navigationAction.navigationType == .linkActivated { // Check if URL is external and open it in Safari if UIApplication.shared.canOpenURL(url) { UIApplication.shared.open(url, options: [:], completionHandler: nil) decisionHandler(.cancel) // Prevent loading the link in the WebView } else { decisionHandler(.allow) // Allow loading if URL cannot be opened in Safari } } else { decisionHandler(.allow) // Allow the WebView to load the URL normally } } }
1
0
949
Jan ’25
Conditions and Specifications When Seamless App Launch via Universal Links Fails
**Description: ** We have implemented a process to launch a native app from a browser (Safari) via universal links. However, under certain conditions, the app does not launch seamlessly, and an error page is displayed in the browser. In such cases, a button to open the app appears at the top of the error page, and pressing this button successfully opens the app. The error page is a blank white page with only the following error message displayed: "NoSuchKeyThe specified key does not exist." We want to confirm the detailed specifications and conditions of the behavior where seamless transition via universal links fails. If there are means to suppress or control the occurrence of this issue, please let us know. Configuration: OS: iOS 18.1 Device: iPad 9th generation, 10th generation **Reproduction Steps: ** When attempting to launch the app via a universal link, a pop-up appears asking "Do you want to allow this page to open ?" If 'Cancel' is pressed in this pop-up, the issue occurs the next time the app is launched via a universal link. However, we have also confirmed that this issue can occur due to operations other than this one, and we have not been able to pinpoint the conditions under which it occurs. Therefore, we would like to confirm the detailed specifications and conditions leading to the occurrence of this issue.
1
0
803
Jan ’25
The build is missing information from the .entitlements file.
I’m trying to fix an issue with a pipeline that automatically distributes an app to the App Store (TestFlight). Unfortunately, universal links don’t work because the .entitlements file in the build doesn’t include the specified associated domains, even though they are defined. I’ve double-checked the certificates, provisioning profiles, and Xcode settings — everything seems correct. Therefore, I assume the issue lies in the build commands, which are as follows: Create Archive xcodebuild -workspace ios/ClientDomain.xcworkspace -scheme ClientDomain archive -sdk iphoneos -configuration ClientDomain -archivePath ios/ClientDomain.xcarchive CODE_SIGN_STYLE=Manual CODE_SIGN_IDENTITY="Apple Distribution: Company Name (XXXXXXXXXX)" PROVISIONING_PROFILE=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx CODE_SIGNING_ALLOWED=No Export Archive xcodebuild -exportArchive -archivePath ios/ClientDomain.xcarchive -exportPath ios -exportOptionsPlist ios/exportOptions.plist I also want to provide files I use, in order to make sure I don't have any mistakes: ClientDomain.entitlements <?xml version="1.0" encoding="UTF-8"?> <!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:www.site.com</string> <string>webcredentials:www.site.com</string> </array> </dict> </plist> exportOptions.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>destination</key> <string>export</string> <key>generateAppStoreInformation</key> <false/> <key>manageAppVersionAndBuildNumber</key> <true/> <key>method</key> <string>app-store-connect</string> <key>provisioningProfiles</key> <dict> <key>com.bundle.app</key> <string>xxxxx-xxxxx-xxxxx-xxxxx-xxxxx</string> </dict> <key>signingCertificate</key> <string>Apple Distribution: Company Name (XXXXXXXXXX)</string> <key>signingStyle</key> <string>manual</string> <key>stripSwiftSymbols</key> <true/> <key>teamID</key> <string>XXXXXXXXXX</string> <key>testFlightInternalTestingOnly</key> <false/> <key>uploadSymbols</key> <true/> </dict> </plist> I'm curious, how people usually distribute their apps to App Store. What if I do something wrong?
1
0
1.4k
Jan ’25
Universal Link failures in Safari with EventListener
Hi everyone! We encountered an issue with universal links where the link failed to open the iOS application from Safari when triggered by an event listener. However, when we modified the code to open the link directly via a user click, the application launched as expected. Based on our testing, this issue seems to occur only when there is information for the application cached in Safari. Our previous flow that resulted in the broken universal link included: Data is loaded and a screen with a button to open the universal link is available for the user When the data is loaded it sets a state variable to true for DataLoaded The user clicks on the button to open the universal link When the user clicks the button to open the link it sets a variable to true for ButtonClicked When DataLoaded and ButtonClicked are true then the universal link is opened Our new flow that results in the successful universal link includes: Data is loaded and the user is hit with a loading screen until it is finished The user clicks on the button to open the universal link and the universal link is opened directly Does anyone have insights into why universal links must be triggered by direct user action, and in what scenarios this behavior is enforced?
1
0
1.2k
Jan ’25
Universal Link Failures in Safari
We encountered an issue with universal links where the link failed to open the iOS application from Safari when triggered by an javascript outside a click event. However, when we modified the code to open the link directly via a user click, the application launched as expected. Based on our testing, this issue seems to occur only when there is information for the application cached in Safari (i.e. IDP page cached, redirects to our app, javascript based universal link navigation fails). Here is a code example of what caused the universal link failure: const openUniversalLink = () => { buttonClicked = True } useEffect(()=> { if (buttonClicked) { window.location.href = universal_link } } <Button onClick={openUniversalLink} /> Here is a code example of what caused our universal links to open successfully: const openUniversalLink = () => { window.location.href = universal_link } <Button onClick={openUniversalLink} /> Are there defined practices of when we are able to open universal links triggered by javascript vs when they must be opened directly through user action?
1
1
1.8k
Jan ’25
Deep link
Hi, I have a work task that I need to do that I struggle with... We would like to sent an email to our clients where in that email there will be a link that will redirect to App Store to our app to be downloaded. After the app is downloaded when the user opens the app he will automatically have a promocode pasted in our registration flow promocode text field. Has anyone had similar task ? Is it even possible ? I did some research on this but I didn't find anyone in situation that I have now... I now that deeplinks are widely used to parse data like this, but I'm not sure if this works even when the app is not downloaded yet. Maybe that the solution will be having a two links, but that would not be very user friendly... Do you have any advice how to do something like this or some alternatives please ? Thank you soo much for you time and respond.
1
0
2.1k
Jan ’25
Universal Links not working on an iOS 14 device with the associated website behind a VPN
Prior to iOS 14 our Dev server was routing universal links to our test devices just fine from both Xcode and TestFlight builds. But now that we've started testing on iOS 14 devices the links aren't being handled any more. After doing some research we noticed the new configuration regarding Associated Domains for web servers that aren't reachable from the public internet. https://developer.apple.com/documentation/safariservices/supporting_associated_domains Starting with macOS 11 and iOS 14, apps no longer send requests for apple-app-site-association files directly to your web server. Instead, they send these requests to an Apple-managed content delivery network (CDN) dedicated to associated domains. While you’re developing your app, if your web server is unreachable from the public internet, you can use the alternate mode feature to bypass the CDN and connect directly to your private domain.You enable an alternate mode by adding a query string to your associated domain’s entitlement as follows: <service>:<fully qualified domain>?mode=<alternate mode> Given our Dev server is only reachable via a VPN we changed our project config to use the alternate mode: <key>com.apple.developer.associated-domains</key> <array> <string>webcredentials:ourDevServerURL?mode=developer</string> <string>applinks:ourDevServerURL?mode=developer</string> </array> But unfortunately that still doesn't work and in the console we can see the following swcd logs being generated after a fresh app install. debug com.apple.swc 11:45:19.016561-0600 swcd entry Skipping domain si….va….com?mode=developer because developer mode is disabled So what else do we need to get developer mode working for these app links?
14
1
26k
Jan ’25
Opening an iOS App using Universal links while the opening app is being updating
Description When you try to open an iOS app using Universal links from another app while the opening app is being updating, Safari will open an error screen(app will not launch). Is this a specification of universal links on iOS? Also is it possible for the Main app to detect that the application trying to open Universal Link is being updating? Devices iPad 9thGen/10thGen
1
0
729
Jan ’25
Apple's CDN has only partially rolled out the changes made to the AASA file two weeks ago
We updated the apple-app-site-association file two weeks ago and we are only seeing the new content from Apple's CDN serving certain regions such as Texas and Canada. Regions such as Colorado intermittently sees the old content and California has been receiving the old content all the time. Is this a known issue? If yes, when can we expect this to be fixed and where to check the status? If not, can someone in charge of CDN please look into this? Let me know if there is a better place to report this issue and get the support ASAP though. Thank you in advance and happy new year!
2
0
785
Jan ’25
Vercel and app-site-association giving a 404
I'm working on setting app-site-association for my site. I've added the app-site-association file to public/.well-known/app-site-association and confirmed that my file made it to apple CDN. I've also checked it on branch.io. The problem is, when I head to my site I get a 404. I checked sysdiagnose logs and can see the same Error Domain=SWCErrorDomain Code=7 "SWCERR00101 Bad HTTP Response: 404 Not Found -- {"status":"404 Not Found"}" UserInfo={Line=275, Function=-[SWCDownloader. URLSession:dataTask:didReceiveResponse:completionHandler:], NSDebugDescription=SWCERR00101 Bad HTTP Response: 404 Not Found -- {"status":"404 Not Found"}, UnderlyingError=Error Domain=HTTP Code=404 "(null)" UserInfo={Line=275, Function=-[SWCDownloader URLSession:dataTask:didReceiveResponse:completionHandler:]}} I'm not really sure where to go from here.
1
0
713
Dec ’24
What security is there for associated domains specified in an app?
Hello, if an associated domain is specified for an app (for example, the url of a server services an app extension text spam filtering) then what is there in place to stop somebody with malicious intentions from obtaining that url from the .plist/.entitlements file of the app and doing something with that url, such as denial of service attack or whatever?
3
0
593
Dec ’24
Universial Links Error - (SWCERR00201)
Hello, I'm currently configuring Universal Links and I'm getting error SWCERR00201 from Apple CDN. $ curl -I -v https://app-site-association.cdn-apple.com/a/v1/pamestoixima.gr ... < Apple-Failure-Details: {"location":"http://www.pamestoixima.gr/.well-known/apple-app-site-association/"} Apple-Failure-Details: {"location":"http://www.pamestoixima.gr/.well-known/apple-app-site-association/"} < Apple-Failure-Reason: SWCERR00201 Insecure (non-https) redirects forbidden Apple-Failure-Reason: SWCERR00201 Insecure (non-https) redirects forbidden < Apple-From: https://pamestoixima.gr/.well-known/apple-app-site-association Apple-From: https://pamestoixima.gr/.well-known/apple-app-site-association ... I cannot understand why it is mentioning http as the AASA is hosted at pamestoixima.gr that uses https, not http. I can get it via accessing https://www.pamestoixima.gr/.well-known/apple-app-site-association/. I would greatly appreciate any help on this. Thank you
2
0
635
Nov ’24
Need help debugging Universal Links
Hi! Instead of using username/password authentication, I wanted to use a magic link to authenticate users of my app to simplify the process. However, on the app review, it got rejected because of the magic link: Guideline 2.1 - Performance - App Completeness Issue Description The app exhibited one or more bugs that would negatively impact App Store users. Bug description: The Magic Link failed to open the installed app. Review device details: - Device type: iPad Air (5th generation) - OS version: iPadOS 18.1 Next Steps Test the app on supported devices to identify and resolve bugs and stability issues before submitting for review. If the bug cannot be reproduced, try the following: - For new apps, uninstall all previous versions of the app from a device, then install and follow the steps to reproduce. - For app updates, install the new version as an update to the previous version, then follow the steps to reproduce. Resources - For information about testing apps and preparing them for review, see Testing a Release Build. - To learn about troubleshooting networking issues, see Networking Overview. I had no luck to reproduce this. The magic links trigger my application on all my testing devices. I also had external testers using TestFlight and it works for all of them as well. The only time where I can see it failing is if I archive the IPA and install it on an external service like AWS Device Farm or BrowserStack App Live. But here it is very hard to debug because I think I cannot get the sysdiagnose file and I don't know if it is even supposed to work in this case because those devices are not associated with my developer account. I read countless links, tutorials and discussions on this topic but it did not really help. https://developer.apple.com/documentation/technotes/tn3155-debugging-universal-links https://developer.apple.com/documentation/xcode/allowing-apps-and-websites-to-link-to-your-content Here is my set-up: I added the Associated Domains capability to my app. There under Domains I put applinks:subdomain.domain.com Under https://subdomain.domain.com/apple-app-site-association and https://subdomain.domain.com/.well-known/apple-app-site-association I host this file with JSON content header: { "applinks": { "apps": [], "details": [ { "appID": "<TEAM>.<TestAppIdentifier>", "paths": [ "/magiclink/*", "/activate/*" ] }, { "appID": "<TEAM>.<Identifier>", "paths": [ "/magiclink/*", "/activate/*" ] } ] } } My main entry point of the app has a .onOpenURL { url in handleOpenURL(url) } on the ContentView() If I go to https://app-site-association.cdn-apple.com/a/v1/subdomain.domain.com, I see the file correctly as I specified it above. If I go on my development phone to Settings > Developers > Universal Links > Diagnostics and I enter one of the "magic links" into the field, it says with a checkmark Opens Installed Application. https://getuniversal.link/ says my AASA file is valid. Any suggestion on what I could do to further debug or resolve this is highly appreciated.
3
0
807
Nov ’24
Install eSIM from an Universal Link
I am working on an app on which I want to develop a feature to install eSIMs. I am trying to follow the approach of installing the eSIM with the Universal Link solution by appending the activation code to the link https://esimsetup.apple.com/eSIM_QRCode_Provisioning?carddata=. I was able to successfully call the link and install the eSIM. But after installation, the user stays on the settings app. Is it possible to bring my app back to foreground after installation? Furthermore, is there a way I can listen to the installation result from my app?
1
0
1.5k
Nov ’24
Universal link opening excluded path on the app instead of browser.
I need my app to open all other links except domain.com. But clicking on domain.com still opens the app though I have added 'excluded': true. Below is my aasa file { "applinks": { "apps": [], "details": [ { "appID": "com.domain", "paths": ["NOT /"], "components": [ { "/": "/", "exclude": true }, { "/": "/biz/*" }, { "/": "/offers/deal-detail*", "?": { "oId": "*" } }, { "/": "/review/*" }, { "/": "/emailActionHandler*" } ] } ] } } I have also tried to verify this with swcutil tool, and it gives the right matches and blocks 'domain.com'. But the actual behavior on an iOS device is not the same.
1
0
787
Oct ’24
iOS universal links: excluded path opens in my app
Hello. Here is my AASA file (my appID changed): { "applinks": { "apps": [], "details": [ { "appIDs": [ "A123B4567C.app.myapp.tool" ], "components": [ { "/": "/en", "exclude": true }, { "/": "/en/*", "exclude": true }, { "/": "/workspace/*", "exclude": true }, { "/": "*" } ], "paths": [ "NOT /en", "NOT /en/*", "NOT /workspace/*", "*" ] } ] } } I need to open all links with my app except those with excluded flag. When I open 'right' links, my app opens them (that's great). When I open excluded link (e.g. https://myapp.app/workspace/personal) Safari opens it (that's great) but then the app is launched (that's what not expected). What I already checked: added the old "paths" property (it wasn't there originally) rebooted my device reinstalled my app from the TestFlight then from the AppStore asked ChatGPT used AASA validator (branch.io one) cleared Safari cache checked my links for redirects What else can I check? Thanks.
2
0
2.0k
Oct ’24
Deep/universal links not working in ios with edge broser
Deeplinks in our Mobile (native) application work fine from email clients such as Gmail and Outlook with a default browser such as Safari. If the app is already installed, clicking the link launches it. However, when we click on the same link from Outlook email with the default browser, Edge, it opens directly in the browser, because any external links in Outlook email route through safe links, which prevents deep linking to the APP. The current behavior is as follows: When Safari is the default browser, the process works seamlessly, and the app opens directly. outlook-&gt;deep link pressed -&gt; redirect to safari -&gt;opens the app if already installed However, when Microsoft Edge is set as the default browser, it opens the App Store link in a popover, with an option to open the app if installed. outlook-&gt;deep link pressed -&gt; redirect to Edge-&gt;opens the app store inside edge even app already installed Note : outlook is enforcing safe link policies and also App protection policies. I would like to achieve the same behavior with Microsoft Edge as with Safari, where the app opens directly rather than redirecting to the App Store. Is there a specific configuration or workaround to ensure that Microsoft Edge, when set as the default browser, opens the app directly instead of redirecting to the App Store? Any insights or suggestions would be greatly appreciated. I am expecting that this safe link works the same as works with a safari in iOS Devices. I have also tried this - https://learn.microsoft.com/en-us/mem/intune/apps/app-protection-policy-settings-ios#exempt-universal-links but not working I'd appreciate it if you could assist me with this matter as soon as possible. How to handle deep links in Outlook when using a default browser like Edge
0
1
1.1k
Oct ’24
Universal link failing to redirect to app in special circumstances
I'm developing two native apps and one is a authentication app and other one is business app. In the main flow if buisness application is on the foreground and did nothing for at least 10 minutes it will automatically time out and redirect to the autentication app for token refresh. In this flow universal link redirect to the authetication app without opening Safari. But if i execute the below flow buissness app redirect to the Safari. Buisness App In Foregorund → Displaying a OS screen while app is in Foreground(Like Push Notification Center) → On this satate leave device for 10 minutes → Buisness app will automatically timeout and rediret to Safari(In safari 「NoSuchKey The specified key does not exist.」message is displaying but authentication app Universal link Start button is showing) → After click the Universal Link start button in Safari Authentication App open. I use the below code to start the Universal Link: if let url = URL(string: path) { UIApplication.shared.open(url) } So i would like to know is there a special reason that when Displaying a OS screen while app is in Foreground(Like Push Notification Center) affect the normal flow of Universal redirection to another app?
0
0
726
Oct ’24
Apple app site association CDN cache does not work with IPv6 only servers.
Hi, We have an IPv6 only server setup, where we have put AASA file as required: https://qa-jen.noknoktest.com/.well-known/apple-app-site-association But Apple CDN does not found it: https://app-site-association.cdn-apple.com/a/v1/qa-jen.noknoktest.com Is there any restriction on IPv6 only servers? Everything works with our other IPv4 servers. Note: With alternate mode configuration in application, the AASA is accessible to devices. There is no any geo restriction or IP filtering for server. What is missing to force CDN cache the file fro mentioned server?
8
0
2.6k
Oct ’24
Your browser preventing this app to open “URL”
Hi Apple developers, I am very new to XCode and Swift, I am planning to build an app for iOS from a web. I tried to use WKWebView to handle the web , I managed to redirect some of the links to Safari, however some button/links didn't trigger .linkActivated function and encounter the error as "Your browser preventing this app to open “URL”. If I copy the URL to Safari is able to open, I trying to research on web but can't find any related solution for my case. Here is the code in my app: import UIKit import WebKit import SafariServices class ViewController: UIViewController, WKNavigationDelegate { var webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() // Initialize WKWebView let webConfiguration = WKWebViewConfiguration() //enable javascript webConfiguration.preferences.javaScriptEnabled = true webView = WKWebView(frame: self.view.frame, configuration: webConfiguration) webView.navigationDelegate = self self.view.addSubview(webView) // Load a web page as webview if let url = URL(string: "https://myurl") { let request = URLRequest(url: url) webView.load(request) } //console log webView.evaluateJavaScript("console.log('Button clicked!')") { result, error in if let error = error { print("Error executing JavaScript: \(error.localizedDescription)") } else { print("JavaScript result: \(String(describing: result))") } } } func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if let url = navigationAction.request.url, navigationAction.navigationType == .linkActivated { // Check if URL is external and open it in Safari if UIApplication.shared.canOpenURL(url) { UIApplication.shared.open(url, options: [:], completionHandler: nil) decisionHandler(.cancel) // Prevent loading the link in the WebView } else { decisionHandler(.allow) // Allow loading if URL cannot be opened in Safari } } else { decisionHandler(.allow) // Allow the WebView to load the URL normally } } }
Replies
1
Boosts
0
Views
949
Activity
Jan ’25
Conditions and Specifications When Seamless App Launch via Universal Links Fails
**Description: ** We have implemented a process to launch a native app from a browser (Safari) via universal links. However, under certain conditions, the app does not launch seamlessly, and an error page is displayed in the browser. In such cases, a button to open the app appears at the top of the error page, and pressing this button successfully opens the app. The error page is a blank white page with only the following error message displayed: "NoSuchKeyThe specified key does not exist." We want to confirm the detailed specifications and conditions of the behavior where seamless transition via universal links fails. If there are means to suppress or control the occurrence of this issue, please let us know. Configuration: OS: iOS 18.1 Device: iPad 9th generation, 10th generation **Reproduction Steps: ** When attempting to launch the app via a universal link, a pop-up appears asking "Do you want to allow this page to open ?" If 'Cancel' is pressed in this pop-up, the issue occurs the next time the app is launched via a universal link. However, we have also confirmed that this issue can occur due to operations other than this one, and we have not been able to pinpoint the conditions under which it occurs. Therefore, we would like to confirm the detailed specifications and conditions leading to the occurrence of this issue.
Replies
1
Boosts
0
Views
803
Activity
Jan ’25
The build is missing information from the .entitlements file.
I’m trying to fix an issue with a pipeline that automatically distributes an app to the App Store (TestFlight). Unfortunately, universal links don’t work because the .entitlements file in the build doesn’t include the specified associated domains, even though they are defined. I’ve double-checked the certificates, provisioning profiles, and Xcode settings — everything seems correct. Therefore, I assume the issue lies in the build commands, which are as follows: Create Archive xcodebuild -workspace ios/ClientDomain.xcworkspace -scheme ClientDomain archive -sdk iphoneos -configuration ClientDomain -archivePath ios/ClientDomain.xcarchive CODE_SIGN_STYLE=Manual CODE_SIGN_IDENTITY="Apple Distribution: Company Name (XXXXXXXXXX)" PROVISIONING_PROFILE=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx CODE_SIGNING_ALLOWED=No Export Archive xcodebuild -exportArchive -archivePath ios/ClientDomain.xcarchive -exportPath ios -exportOptionsPlist ios/exportOptions.plist I also want to provide files I use, in order to make sure I don't have any mistakes: ClientDomain.entitlements &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt; &lt;plist version="1.0"&gt; &lt;dict&gt; &lt;key&gt;com.apple.developer.associated-domains&lt;/key&gt; &lt;array&gt; &lt;string&gt;applinks:www.site.com&lt;/string&gt; &lt;string&gt;webcredentials:www.site.com&lt;/string&gt; &lt;/array&gt; &lt;/dict&gt; &lt;/plist&gt; exportOptions.plist &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt; &lt;plist version="1.0"&gt; &lt;dict&gt; &lt;key&gt;destination&lt;/key&gt; &lt;string&gt;export&lt;/string&gt; &lt;key&gt;generateAppStoreInformation&lt;/key&gt; &lt;false/&gt; &lt;key&gt;manageAppVersionAndBuildNumber&lt;/key&gt; &lt;true/&gt; &lt;key&gt;method&lt;/key&gt; &lt;string&gt;app-store-connect&lt;/string&gt; &lt;key&gt;provisioningProfiles&lt;/key&gt; &lt;dict&gt; &lt;key&gt;com.bundle.app&lt;/key&gt; &lt;string&gt;xxxxx-xxxxx-xxxxx-xxxxx-xxxxx&lt;/string&gt; &lt;/dict&gt; &lt;key&gt;signingCertificate&lt;/key&gt; &lt;string&gt;Apple Distribution: Company Name (XXXXXXXXXX)&lt;/string&gt; &lt;key&gt;signingStyle&lt;/key&gt; &lt;string&gt;manual&lt;/string&gt; &lt;key&gt;stripSwiftSymbols&lt;/key&gt; &lt;true/&gt; &lt;key&gt;teamID&lt;/key&gt; &lt;string&gt;XXXXXXXXXX&lt;/string&gt; &lt;key&gt;testFlightInternalTestingOnly&lt;/key&gt; &lt;false/&gt; &lt;key&gt;uploadSymbols&lt;/key&gt; &lt;true/&gt; &lt;/dict&gt; &lt;/plist&gt; I'm curious, how people usually distribute their apps to App Store. What if I do something wrong?
Replies
1
Boosts
0
Views
1.4k
Activity
Jan ’25
Universal Link failures in Safari with EventListener
Hi everyone! We encountered an issue with universal links where the link failed to open the iOS application from Safari when triggered by an event listener. However, when we modified the code to open the link directly via a user click, the application launched as expected. Based on our testing, this issue seems to occur only when there is information for the application cached in Safari. Our previous flow that resulted in the broken universal link included: Data is loaded and a screen with a button to open the universal link is available for the user When the data is loaded it sets a state variable to true for DataLoaded The user clicks on the button to open the universal link When the user clicks the button to open the link it sets a variable to true for ButtonClicked When DataLoaded and ButtonClicked are true then the universal link is opened Our new flow that results in the successful universal link includes: Data is loaded and the user is hit with a loading screen until it is finished The user clicks on the button to open the universal link and the universal link is opened directly Does anyone have insights into why universal links must be triggered by direct user action, and in what scenarios this behavior is enforced?
Replies
1
Boosts
0
Views
1.2k
Activity
Jan ’25
Universal Link Failures in Safari
We encountered an issue with universal links where the link failed to open the iOS application from Safari when triggered by an javascript outside a click event. However, when we modified the code to open the link directly via a user click, the application launched as expected. Based on our testing, this issue seems to occur only when there is information for the application cached in Safari (i.e. IDP page cached, redirects to our app, javascript based universal link navigation fails). Here is a code example of what caused the universal link failure: const openUniversalLink = () => { buttonClicked = True } useEffect(()=> { if (buttonClicked) { window.location.href = universal_link } } <Button onClick={openUniversalLink} /> Here is a code example of what caused our universal links to open successfully: const openUniversalLink = () => { window.location.href = universal_link } <Button onClick={openUniversalLink} /> Are there defined practices of when we are able to open universal links triggered by javascript vs when they must be opened directly through user action?
Replies
1
Boosts
1
Views
1.8k
Activity
Jan ’25
Deep link
Hi, I have a work task that I need to do that I struggle with... We would like to sent an email to our clients where in that email there will be a link that will redirect to App Store to our app to be downloaded. After the app is downloaded when the user opens the app he will automatically have a promocode pasted in our registration flow promocode text field. Has anyone had similar task ? Is it even possible ? I did some research on this but I didn't find anyone in situation that I have now... I now that deeplinks are widely used to parse data like this, but I'm not sure if this works even when the app is not downloaded yet. Maybe that the solution will be having a two links, but that would not be very user friendly... Do you have any advice how to do something like this or some alternatives please ? Thank you soo much for you time and respond.
Replies
1
Boosts
0
Views
2.1k
Activity
Jan ’25
Universal Links not working on an iOS 14 device with the associated website behind a VPN
Prior to iOS 14 our Dev server was routing universal links to our test devices just fine from both Xcode and TestFlight builds. But now that we've started testing on iOS 14 devices the links aren't being handled any more. After doing some research we noticed the new configuration regarding Associated Domains for web servers that aren't reachable from the public internet. https://developer.apple.com/documentation/safariservices/supporting_associated_domains Starting with macOS 11 and iOS 14, apps no longer send requests for apple-app-site-association files directly to your web server. Instead, they send these requests to an Apple-managed content delivery network (CDN) dedicated to associated domains. While you’re developing your app, if your web server is unreachable from the public internet, you can use the alternate mode feature to bypass the CDN and connect directly to your private domain.You enable an alternate mode by adding a query string to your associated domain’s entitlement as follows: <service>:<fully qualified domain>?mode=<alternate mode> Given our Dev server is only reachable via a VPN we changed our project config to use the alternate mode: <key>com.apple.developer.associated-domains</key> <array> <string>webcredentials:ourDevServerURL?mode=developer</string> <string>applinks:ourDevServerURL?mode=developer</string> </array> But unfortunately that still doesn't work and in the console we can see the following swcd logs being generated after a fresh app install. debug com.apple.swc 11:45:19.016561-0600 swcd entry Skipping domain si….va….com?mode=developer because developer mode is disabled So what else do we need to get developer mode working for these app links?
Replies
14
Boosts
1
Views
26k
Activity
Jan ’25
Opening an iOS App using Universal links while the opening app is being updating
Description When you try to open an iOS app using Universal links from another app while the opening app is being updating, Safari will open an error screen(app will not launch). Is this a specification of universal links on iOS? Also is it possible for the Main app to detect that the application trying to open Universal Link is being updating? Devices iPad 9thGen/10thGen
Replies
1
Boosts
0
Views
729
Activity
Jan ’25
NSCocoaErrorDomain - code 3072 while launching NSUserActivityTypeBrowsingWeb
On iOS 18 only, I've been getting this error from the didFailToContinueUserActivityWithType in AppDelegate, the activity needed for universal links. It didn't happen on previous versions of it. Has anyone encountered this ?
Replies
2
Boosts
0
Views
661
Activity
Jan ’25
Apple's CDN has only partially rolled out the changes made to the AASA file two weeks ago
We updated the apple-app-site-association file two weeks ago and we are only seeing the new content from Apple's CDN serving certain regions such as Texas and Canada. Regions such as Colorado intermittently sees the old content and California has been receiving the old content all the time. Is this a known issue? If yes, when can we expect this to be fixed and where to check the status? If not, can someone in charge of CDN please look into this? Let me know if there is a better place to report this issue and get the support ASAP though. Thank you in advance and happy new year!
Replies
2
Boosts
0
Views
785
Activity
Jan ’25
Vercel and app-site-association giving a 404
I'm working on setting app-site-association for my site. I've added the app-site-association file to public/.well-known/app-site-association and confirmed that my file made it to apple CDN. I've also checked it on branch.io. The problem is, when I head to my site I get a 404. I checked sysdiagnose logs and can see the same Error Domain=SWCErrorDomain Code=7 "SWCERR00101 Bad HTTP Response: 404 Not Found -- {"status":"404 Not Found"}" UserInfo={Line=275, Function=-[SWCDownloader. URLSession:dataTask:didReceiveResponse:completionHandler:], NSDebugDescription=SWCERR00101 Bad HTTP Response: 404 Not Found -- {"status":"404 Not Found"}, UnderlyingError=Error Domain=HTTP Code=404 "(null)" UserInfo={Line=275, Function=-[SWCDownloader URLSession:dataTask:didReceiveResponse:completionHandler:]}} I'm not really sure where to go from here.
Replies
1
Boosts
0
Views
713
Activity
Dec ’24
What security is there for associated domains specified in an app?
Hello, if an associated domain is specified for an app (for example, the url of a server services an app extension text spam filtering) then what is there in place to stop somebody with malicious intentions from obtaining that url from the .plist/.entitlements file of the app and doing something with that url, such as denial of service attack or whatever?
Replies
3
Boosts
0
Views
593
Activity
Dec ’24
Universial Links Error - (SWCERR00201)
Hello, I'm currently configuring Universal Links and I'm getting error SWCERR00201 from Apple CDN. $ curl -I -v https://app-site-association.cdn-apple.com/a/v1/pamestoixima.gr ... < Apple-Failure-Details: {"location":"http://www.pamestoixima.gr/.well-known/apple-app-site-association/"} Apple-Failure-Details: {"location":"http://www.pamestoixima.gr/.well-known/apple-app-site-association/"} < Apple-Failure-Reason: SWCERR00201 Insecure (non-https) redirects forbidden Apple-Failure-Reason: SWCERR00201 Insecure (non-https) redirects forbidden < Apple-From: https://pamestoixima.gr/.well-known/apple-app-site-association Apple-From: https://pamestoixima.gr/.well-known/apple-app-site-association ... I cannot understand why it is mentioning http as the AASA is hosted at pamestoixima.gr that uses https, not http. I can get it via accessing https://www.pamestoixima.gr/.well-known/apple-app-site-association/. I would greatly appreciate any help on this. Thank you
Replies
2
Boosts
0
Views
635
Activity
Nov ’24
Need help debugging Universal Links
Hi! Instead of using username/password authentication, I wanted to use a magic link to authenticate users of my app to simplify the process. However, on the app review, it got rejected because of the magic link: Guideline 2.1 - Performance - App Completeness Issue Description The app exhibited one or more bugs that would negatively impact App Store users. Bug description: The Magic Link failed to open the installed app. Review device details: - Device type: iPad Air (5th generation) - OS version: iPadOS 18.1 Next Steps Test the app on supported devices to identify and resolve bugs and stability issues before submitting for review. If the bug cannot be reproduced, try the following: - For new apps, uninstall all previous versions of the app from a device, then install and follow the steps to reproduce. - For app updates, install the new version as an update to the previous version, then follow the steps to reproduce. Resources - For information about testing apps and preparing them for review, see Testing a Release Build. - To learn about troubleshooting networking issues, see Networking Overview. I had no luck to reproduce this. The magic links trigger my application on all my testing devices. I also had external testers using TestFlight and it works for all of them as well. The only time where I can see it failing is if I archive the IPA and install it on an external service like AWS Device Farm or BrowserStack App Live. But here it is very hard to debug because I think I cannot get the sysdiagnose file and I don't know if it is even supposed to work in this case because those devices are not associated with my developer account. I read countless links, tutorials and discussions on this topic but it did not really help. https://developer.apple.com/documentation/technotes/tn3155-debugging-universal-links https://developer.apple.com/documentation/xcode/allowing-apps-and-websites-to-link-to-your-content Here is my set-up: I added the Associated Domains capability to my app. There under Domains I put applinks:subdomain.domain.com Under https://subdomain.domain.com/apple-app-site-association and https://subdomain.domain.com/.well-known/apple-app-site-association I host this file with JSON content header: { "applinks": { "apps": [], "details": [ { "appID": "<TEAM>.<TestAppIdentifier>", "paths": [ "/magiclink/*", "/activate/*" ] }, { "appID": "<TEAM>.<Identifier>", "paths": [ "/magiclink/*", "/activate/*" ] } ] } } My main entry point of the app has a .onOpenURL { url in handleOpenURL(url) } on the ContentView() If I go to https://app-site-association.cdn-apple.com/a/v1/subdomain.domain.com, I see the file correctly as I specified it above. If I go on my development phone to Settings > Developers > Universal Links > Diagnostics and I enter one of the "magic links" into the field, it says with a checkmark Opens Installed Application. https://getuniversal.link/ says my AASA file is valid. Any suggestion on what I could do to further debug or resolve this is highly appreciated.
Replies
3
Boosts
0
Views
807
Activity
Nov ’24
Install eSIM from an Universal Link
I am working on an app on which I want to develop a feature to install eSIMs. I am trying to follow the approach of installing the eSIM with the Universal Link solution by appending the activation code to the link https://esimsetup.apple.com/eSIM_QRCode_Provisioning?carddata=. I was able to successfully call the link and install the eSIM. But after installation, the user stays on the settings app. Is it possible to bring my app back to foreground after installation? Furthermore, is there a way I can listen to the installation result from my app?
Replies
1
Boosts
0
Views
1.5k
Activity
Nov ’24
Universal link opening excluded path on the app instead of browser.
I need my app to open all other links except domain.com. But clicking on domain.com still opens the app though I have added 'excluded': true. Below is my aasa file { "applinks": { "apps": [], "details": [ { "appID": "com.domain", "paths": ["NOT /"], "components": [ { "/": "/", "exclude": true }, { "/": "/biz/*" }, { "/": "/offers/deal-detail*", "?": { "oId": "*" } }, { "/": "/review/*" }, { "/": "/emailActionHandler*" } ] } ] } } I have also tried to verify this with swcutil tool, and it gives the right matches and blocks 'domain.com'. But the actual behavior on an iOS device is not the same.
Replies
1
Boosts
0
Views
787
Activity
Oct ’24
iOS universal links: excluded path opens in my app
Hello. Here is my AASA file (my appID changed): { "applinks": { "apps": [], "details": [ { "appIDs": [ "A123B4567C.app.myapp.tool" ], "components": [ { "/": "/en", "exclude": true }, { "/": "/en/*", "exclude": true }, { "/": "/workspace/*", "exclude": true }, { "/": "*" } ], "paths": [ "NOT /en", "NOT /en/*", "NOT /workspace/*", "*" ] } ] } } I need to open all links with my app except those with excluded flag. When I open 'right' links, my app opens them (that's great). When I open excluded link (e.g. https://myapp.app/workspace/personal) Safari opens it (that's great) but then the app is launched (that's what not expected). What I already checked: added the old "paths" property (it wasn't there originally) rebooted my device reinstalled my app from the TestFlight then from the AppStore asked ChatGPT used AASA validator (branch.io one) cleared Safari cache checked my links for redirects What else can I check? Thanks.
Replies
2
Boosts
0
Views
2.0k
Activity
Oct ’24
Deep/universal links not working in ios with edge broser
Deeplinks in our Mobile (native) application work fine from email clients such as Gmail and Outlook with a default browser such as Safari. If the app is already installed, clicking the link launches it. However, when we click on the same link from Outlook email with the default browser, Edge, it opens directly in the browser, because any external links in Outlook email route through safe links, which prevents deep linking to the APP. The current behavior is as follows: When Safari is the default browser, the process works seamlessly, and the app opens directly. outlook-&gt;deep link pressed -&gt; redirect to safari -&gt;opens the app if already installed However, when Microsoft Edge is set as the default browser, it opens the App Store link in a popover, with an option to open the app if installed. outlook-&gt;deep link pressed -&gt; redirect to Edge-&gt;opens the app store inside edge even app already installed Note : outlook is enforcing safe link policies and also App protection policies. I would like to achieve the same behavior with Microsoft Edge as with Safari, where the app opens directly rather than redirecting to the App Store. Is there a specific configuration or workaround to ensure that Microsoft Edge, when set as the default browser, opens the app directly instead of redirecting to the App Store? Any insights or suggestions would be greatly appreciated. I am expecting that this safe link works the same as works with a safari in iOS Devices. I have also tried this - https://learn.microsoft.com/en-us/mem/intune/apps/app-protection-policy-settings-ios#exempt-universal-links but not working I'd appreciate it if you could assist me with this matter as soon as possible. How to handle deep links in Outlook when using a default browser like Edge
Replies
0
Boosts
1
Views
1.1k
Activity
Oct ’24
Universal link failing to redirect to app in special circumstances
I'm developing two native apps and one is a authentication app and other one is business app. In the main flow if buisness application is on the foreground and did nothing for at least 10 minutes it will automatically time out and redirect to the autentication app for token refresh. In this flow universal link redirect to the authetication app without opening Safari. But if i execute the below flow buissness app redirect to the Safari. Buisness App In Foregorund → Displaying a OS screen while app is in Foreground(Like Push Notification Center) → On this satate leave device for 10 minutes → Buisness app will automatically timeout and rediret to Safari(In safari 「NoSuchKey The specified key does not exist.」message is displaying but authentication app Universal link Start button is showing) → After click the Universal Link start button in Safari Authentication App open. I use the below code to start the Universal Link: if let url = URL(string: path) { UIApplication.shared.open(url) } So i would like to know is there a special reason that when Displaying a OS screen while app is in Foreground(Like Push Notification Center) affect the normal flow of Universal redirection to another app?
Replies
0
Boosts
0
Views
726
Activity
Oct ’24
Apple app site association CDN cache does not work with IPv6 only servers.
Hi, We have an IPv6 only server setup, where we have put AASA file as required: https://qa-jen.noknoktest.com/.well-known/apple-app-site-association But Apple CDN does not found it: https://app-site-association.cdn-apple.com/a/v1/qa-jen.noknoktest.com Is there any restriction on IPv6 only servers? Everything works with our other IPv4 servers. Note: With alternate mode configuration in application, the AASA is accessible to devices. There is no any geo restriction or IP filtering for server. What is missing to force CDN cache the file fro mentioned server?
Replies
8
Boosts
0
Views
2.6k
Activity
Oct ’24