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

99 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

AASA Limiting Wildcard to URL part
We've got a AASA file on our site that has a list of URLs that our App can handle. These URLs follow a REST standard, but also have resource identifiers in them, for example /site/:siteId /site/:siteId/service/:serviceId Our service IDs are limited to specific numbers, which we've hardcoded in our AASA file so that only specific service URLs will open. Our AASA file looks like the below { "applinks":{ "apps":[], "details":[ { "appID":"${appIdPrefix}.${bundleIdentifier}", "paths":[ { "/":"site/*/service/1/" }, { "/":"site/*/" } ] } ] }, "webcredentials":{ "apps":[ "${appIdPrefix}.${bundleIdentifier}" ] }, "appclips":{ "apps":[ "${appIdPrefix}.${bundleIdentifier}.clip" ] } In this example, hitting a URL like /site/1/service/1 works correctly - however, hitting a URL like /site/1/service/999 will also open the app, despite it not being a valid URL. I'm assuming that the wildcard on site/*/ is causing the invalid URL to match. How can I set my AASA up so that the site ID can still be any value, but the URL is matched strictly?
0
0
264
Apr ’24
Deep links in AppleWatch
This page describes the procedure to create deep links in iOS. I was able to launch an IOS Companion app (name of the app in my case) using its deep link. But the same is not working in AppleWatch. This is my plist to register a custom scheme - Companion: <?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>CFBundleURLTypes</key> <array> <dict> <!-- <key>CFBundleTypeRole</key> <string>Viewer</string> --> <key>CFBundleURLName</key> <string><some unique ID></string> <key>CFBundleURLSchemes</key> <array> <string>Companion</string> </array> </dict> </array> </dict> </plist> I have implemented onOpenURL(perform:) to handle app launches using a deep link (url). var body: some Scene { WindowGroup { ContentView() .onOpenURL(perform: { (link: URL) in Log(String(format: "Link = %@", link.absoluteString)) // Use then deep link }) } } In iOS, I tested deep links in two ways: Wrote the full deep link in Notes app and tapped it. Created another app called AppLauncher with a Button saying 'Launch using Deep link'.... which when clicked opens the deep link using open(_:options:completionHandler:). Both the approaches work in iOS, but in watchOS, I can only try 2 because Notes app is not available for AppleWatch. So, I created another watchOS app called AppLauncher, which displays a SwiftUI Button saying 'Launch using Deep link', which when tapped, tries to open the link using openSystemURL(_:). But as mentioned in the documentation (linked earlier), Opens the specified system URL. this API only works for links associated with System apps i.e., Apple's call and message apps. So, how else can I use deep link to launch another app? I believe it's possible to launch an app using its deep link because the info.plist keys required to define a deep link scheme association (CFBundleURLTypes, CFBundleURLSchemes etc) is valid for watchOS too.
0
0
440
Mar ’24
How do I get the Universal Link to redirect to my Capacitor iOS app? SWCErrorDomain error 8
I'm running my Capacitor app on my iPad on Developer mode and I haven't been able to get the Universal Link working. https://my-domain.com//.well-known/apple-app-site-association in browser and via curl correctly returns the file. running sudo swcutil dl -d https://my-domain.com --verbose returns SWCErrorDomain 8 { Domain: "<_SWCDomain 0x600002c92d80> https", Line: "532", Function: "-[SWCDownloader(Private) _downloadAASAFileForDomain:applicationIdentifier:downloadRoute:discretionary:completionHandlers:]_block_invoke" } I made my way down through here: <https://developer.apple.com/documentation/technotes/tn3155-debugging-universal-links#Host-and-verify-your-AASA> I continued onto the next section, but swcutil_show.txt file doesn't list my app even after uninstalling and re-deploying the app. Any help is appreciated!
1
0
533
Mar ’24
Supporting same domain across different apps developed by different teams
I have an application which supports universal links. Say it supports the domain www.example.com and thus universal links can be easily opened via this. We will have applinks:www.example.com in associated domains. Now say if I want to release another app and it also supports the same domain. Now how will iOS distinguish which app to open via universal links..?
0
0
308
Mar ’24
Inquiry Regarding Placement of .well-known Folder for Hosting apple-app-site-association File in non-root path
Subject: Inquiry Regarding Placement of .well-known Folder for Hosting apple-app-site-association File I am writing to inquire about the placement of the .well-known folder for hosting the apple-app-site-association file. Currently, we are working on configuring deep linking for our iOS app, and we have encountered a question regarding the appropriate location for hosting the apple-app-site-association file. Our domain, service2-uat.mom.gov.sg, hosts various web assets, and we are considering placing the ".well-known" folder in a non-root directory, specifically at "https://service2-uat.mom.gov.sg/fwmc/api/stg/permanent/.well-known/apple-app-site-association", instead of the root directory. Before proceeding with this configuration, we wanted to confirm whether it is permissible and supported by Apple's specifications and requirements. Our objective is to ensure compliance with Apple's guidelines while optimizing our server structure. Could you please provide guidance or clarification on whether hosting the .well-known folder in a non-root directory is acceptable for serving the apple-app-site-association file? Additionally, if there are any specific considerations or best practices related to this configuration, we would greatly appreciate your insights. Thank you very much for your assistance in this matter. We look forward to hearing back from you soon. Best Regards, Senthil S
0
0
309
Mar ’24
App Clip Unavailable
I have published the app on the App Store along with its corresponding app clip, my app clip is configured with some advanced experiences for each one of my clients, but whenever some users try to scan an NFC or QR Code they see the card rendering correctly with their configured banner image, but with the message "App Clip Unavailable". The weird thing is that both iMessage and the website to which the associated domain is set and the apple-app-site-association is stored, renders the banner or card correctly, and when the users tap the banner or card they open the advanced app clip experience correctly without any issue. I have attempted to troubleshoot the issue by checking the following: if the app clip is below 15MB if we are using a second level domain in my associated domain both for my app clip and app (excluding the www subdomain). checking if the AASA is correctly stored inside .well-known directory checking the configuration for the advanced experience I opened a case: 102233443873, and added a bunch of videos and screenshot showcasing the issue, but I have not yet received a reply
12
1
1.1k
Apr ’24
Deep Linking in iOS - Navigate to Apple Store if app not installed
I followed the steps in this https://docs.flutter.dev/cookbook/navigation/set-up-universal-links to implement universal links and created a link that I published to the App Store. However, when I click on the deep link, I receive a 404 error in the browser saying the page can't be found. When the app is installed, all the redirections with the deep link work correctly. My problem is navigating to the App Store to the app's page. What should I check, and how can I determine if the problem is in the apple-app-site-association file or in some setting in the app? I try to add * like prefix on url in app setting but this don't help.
0
0
846
Feb ’24
Universal Link Not working for Netflix
I am trying to Execute Universal Link of Netflix show from My App in tvOS 17.2 When I Call the open(_:options:completionHandler:) to execute the Link it does open the Netflix App but open the landing page of Title. I have tried different alternative links but all has same behaviour. The same Link works in iOS ans iPad OS. Here the links that I have tried and the code that handles the universal Link. http://www.netflix.com/title/81731618 nflx://www.netflix.com/title/81731618 // Handle remote notification here // For example, extract deep link and perform appropriate action if let deepLink = userInfo["deep_link_key"] as? String { // Handle the deep link here print("Received Deep Link: \(deepLink)") if let url = URL(string: deepLink) { UIApplication.shared.open(url) } } }
0
0
531
Feb ’24
Universal Deep Linking with redirects stopped working from iOS 17
Hello Everyone, we've encountered an issue with our iOS mobile application, particularly affecting users on iOS version 17. It appears that our universal deep links coming from redirects have ceased to function properly. We've got quite a few marketing campaigns that send out promotional emails through an emailing system, which wraps our site's links inside their own. Obviously tapping these links does not open our app, instead directs the user to web mobile. Older phones like iPhone X with iOS 16 still work properly. We have checked domain association, and also when tapping direct deep link everything works properly. However, the issue arises specifically when users interact with marketing tracking links that redirect to a deep link. In this scenario, both Safari and Chrome fail to redirect outside of the browser environment. Instead, they execute an HTTP 301 redirection within the browser itself. Is this something be expected from iOS version 17, is there a way to avoid this behaviour and still continue using marketing links with redirection?
0
0
898
Feb ’24
Universal Links not opening the app
Hi. We have 2 apps in the store with universal links working fine, and we are readying the launch of a new version, essentially the same codebase but with different branding and into a different territory. however with this one universal links are not currently working. When the app is installed, swcutil shows the following: App ID: [REDACTED] App Version: 331.0 App PI: <LSPersistentIdentifier 0x5ccc0ee20> { v = 0, t = 0x8, u = 0x6b8, db = E038B2E7-CA87-4BA2-A129-C25394D0F72F, {length = 8, bytes = 0xb806000000000000} } Domain: [REDACTED] User Approval: unspecified Site/Fmwk Approval: denied Flags: Last Checked: 2024-02-16 12:06:39 +0000 Next Check: 2024-02-21 11:08:37 +0000 suggesting the CDN was denied access, but if I query the CDN using https://app-site-association.cdn-apple.com/a/v1/DOMAIN I get the correct app-association contents back. with the previous apps, they were well established before we introduced universal links, but this one is not yet available on the store. the debug build pointing at production seems to work (not using mode=developer) but the TestFlight build does not. we are confident in the contents of the app-association file as it mirrors the other apps. It's been suggested that this could be because the app is not yet available in the store. Is this the case?
2
0
445
Feb ’24
Universal links not consistent on release app
Hi, I setup universal links (aka goto my website and it opens/adds-header-to-open my application). While in debug and testflight this worked flawlessly, in release I inconsistently have the header addon to open in app in safari. I don't understand why. When I goto developer tools and test the link, it returns it should open my app, and shows a green checkmark like everything is okay. But right after if I goto Safari, it does not show the open in app header. I've restarted my device several times and reinstalled the app with no luck in the open in app header in safari reliably being present. I had this same problem with another app, and it wasn't working for the first day and randomly showed up for a while, and then stopped again. Idk what's wrong? The only thing I can think of is we were messing with the MDM server and set it to None I believe at one point and it showed up (I think) - but perhaps that has nothing to do with it showing up. Does MDM server management of devices prevent universal links? Weirdly before setting MDM server to none, it worked flawless in debug and testflight. As of now the MDM server is restored to original our business set. So, I don't quite know what to do to debug this. The developer tools say it's fine, and debug/testflight work fine. Any suggestions/options? Does MDM server affect universal links? Thanks, user: ASDF123456
0
0
320
Feb ’24
Universal link not passed to SceneDelegate when app runs in the background
I have a SwiftUI app which supports a launch from a configured universal link. I'm following this documentation. When the app is not running and I tap a universal link, app launches. This proves the association of the website and the app. Now, when the app is already running in the background, and then I tap a universal link, things don't work as expected. Quoting from the documentation If your app has opted into Scenes, and your app is not running, the system delivers the universal link to the scene(:willConnectTo:options:) delegate method after launch, and to scene(:continue:) when the universal link is tapped while your app is running or suspended in memory. I've implemented scene(_:continue:) in my SceneDelegate but it never gets invoked. I'm pasting some relevant logs AppDelegate.application(_:willFinishLaunchingWithOptions:) AppDelegate.application(_:didFinishLaunchingWithOptions:) AppDelegate.application(_:configurationForConnecting:options:) SceneDelegate.scene(_:willConnectTo:options:) SceneDelegate.sceneWillEnterForeground(_:) NSNotificationName(_rawValue: UIApplicationWillEnterForegroundNotification) SceneDelegate.sceneDidBecomeActive(_:) NSNotificationName(_rawValue: UIApplicationDidBecomeActiveNotification) Now, I background the app... SceneDelegate.sceneWillResignActive(_:) NSNotificationName(_rawValue: UIApplicationWillResignActiveNotification) SceneDelegate.sceneDidEnterBackground(_:) NSNotificationName(_rawValue: UIApplicationDidEnterBackgroundNotification) App runs in the background... Now, I tap a Universal link SceneDelegate.sceneWillEnterForeground(_:) NSNotificationName(_rawValue: UIApplicationWillEnterForegroundNotification) SceneDelegate.sceneDidBecomeActive(_:) NSNotificationName(_rawValue: UIApplicationDidBecomeActiveNotification) As shown in the logs above, there is no trace of scene(_:continue:). func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { Log("SceneDelegate.scene(_:continue:)") guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let universalLink = userActivity.webpageURL else { Log("Not launched via universal links!") return } Log(String(format: "userActivities = %@", String(describing: userActivity))) Log(String(format: "universalLink = %@", universalLink.absoluteString)) StaticContext.dataFromMainApp = universalLink.absoluteString StaticContext.viewController.updateLabelWithLink() } What am I missing here?
1
1
683
Feb ’24
Default Browser Link
I've noticed on Android devices the use of deep linking, which also permits the inclusion of a backup URL that opens in the user's default browser. This feature has been incredibly useful for me in exiting in-app browsers, as many of them break sites by not allowing for downloads. I'm reaching out to request guidance on creating a reliable link for web developers, ensuring users can seamlessly redirect to the full-featured view of our websites.
0
0
322
Feb ’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.
1
0
608
Apr ’24
Support for 'Deferred deeplink' in an Enterprise App
Hi All, I would like to know if the 'deferred deep link' feature is compatible with the apps hosted in the Enterprise App Store. A 'deferred deep link' is intended to direct the user to the App Store page, where they can download the app. During the initial startup, SFSafariViewController is expected to provide the URL parameters passed as part of the deep link. I would appreciate your assistance in confirming whether the 'deferred deep link' functionality will work seamlessly if we use Enterprise Appstore for distribution. Thanks and regards, Sujith Joseph
0
1
721
Feb ’24
Sending universal links through email with Brevo (sendinBlue) leaves a 404 page behind in safari
I have set up universal links which work - after clicking on link I see my website for like a second and then im being redirected to my app. When I open safari afterwards, I should see my website, but I see a 404 page/im sending the link via email using 'sendinBlue' and the 404 page shows a sendinblue email error. error shown: build-verify URL: build UrlParms: build-verify URL: cleanURL: invalid URL: host missing Does anyone use brevo as well and could tell em why this is happening? Thanks!!!
0
0
304
Jan ’24
Trouble deving universal links, only error is enterprise managed device
iOS 16.4 and 17.2.1 Hello, I've been developing the universal link for my mobile application and I can't actually get the app to open when the link is tapped. I went through some trial and error.. but here's my current status: testing my url in settings -> developer -> associated domains shows that my link should open an installed application sysdiagnose logs show that everything looks good there: Service: applinks App ID: 1234abcd.com.example Domain: example.com User Approval: unspecified Site/Fmwk Approval: approved Last Checked: 2023-08-24 10:09:00 +0000 Next Check: 2023-08-18 21:00:19 +0000 The only thing that indicates an error of some kind is the console logs during install.. when filtering on swcd it shows an error for Error getting enterprise-managed associated domains data. If this device is not enterprise-managed, this is normal: Error Domain=SWCErrorDomain Code=1701 UserInfo={Line=231, Function=<private>} I'm not sure if this is a managed device - my understanding is that managed devices allow enterprise businesses to operate the device remotely essentially (send files, run commands, etc). To my knowledge, this isn't enterprise managed device. It is listed in the devices page in my company's developer account, but we are a smaller shop, definitely not enterprise. I added the associated domain/app link via xcode, and it generated the entitlements file for me. <key>com.apple.developer.associated-domains.mdm-managed</key> <true/> switching that to false breaks the build: Provisioning profile "iOS Team Provisioning Profile: <mydomain>.<myapp>.dev" doesn't match the entitlements file's value for the com.apple.developer.associated-domains.mdm-managed entitlement. Profile qualification is using entitlement definitions that may be out of date. Connect to network to update. Removing it all together builds fine but doesn't allow me to open the app with a link. The other thing that looks off is an output in the logs filtered on swcd for Developer mode enabled: No but clearly I've enabled developer mode on the phone. I've pasted my link into my notes app and am attempting to open it from there If anyone can help me figure out what the disconnect is here, it would be greatly appreciated!
0
0
416
Jan ’24
Universal links issue in case of automatic redirection
Team, we have recently enabled universal links for our app. And our customers started facing one issue during the login flow. For login we generally open a web view inside the app with /login url Our login process can be configured with different IDPs, which takes care of authentication and once the authentication is done, IDP gives a callback to our server /callback. Once the callback succeeds, web view closes and we receive a token using deeplink of our app. (app://code) But for some IDPs the callback made to our domain /callback is received by the app and the login process stops in between. It doesn't happen for all the IDPs, so I am not sure what is going wrong. From what I know, in case of universal link redirection calls shouldn't open the app and should have been continued in browser then why we are receiving the automatic redirection calls to the app. Is there any response header in the redirection call that decides whether to open the url in web or app?
0
0
326
Jan ’24