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?
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
83 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
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
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?
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.
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.
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
When I open a link using chrome, it doesnt work. Do I need to have any additional setup to make it work?
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!!!
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!
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?
Implemented deep linking using Universal link by hosting a AASA file in the .well-known/ folder and at first it was working as expected. But later the content type of the file unexpectedly changed to binary/octet-stream and then it stopped working. So the content-type of the file is changed back to application/json. Still it is not working when the link is clicked it is opening the different browser options instead of redirecting to the app.
Check with the curl -v link url, 200 ok response, content-type : application/json. Click on hitting the link in browser is downloading the JSON file without any redirection.
Please help me.
Hey Apple team (and eskimo 🙏),
Our FinTech app uses iCloud Keychain shared web credentials to store a secure encryption password in iCloud Keychain.
Some of our new users seem to run into an issue where the app fails to successfully create a shared web credential.
All users are required to have the following two settings enabled:
Settings --> Passwords --> Password Options --> Autofill from iCloud Passwords & Keychain
Settings --> Apple D - -> iCloud - -> Passwords and Keychain --> 'Sync this iPhone'
The issue appears to resolve itself when the user restarts their iPhone. We've had this bug 3 times now and would like to understand the root cause.
We have a couple hypotheses:
iOS is failing to verify that the domain for the shared web credential is valid via <domain>/.well-known/apple-app-site-association (and then restarting triggers reverification)
Users were on a version of iOS where it was bugged (and then restarting finally completed an update to a new version). We've verified that the bug happened on 17.0.2 with one user (until they updated and it fixed itself)
Hi, there. I hope I can find a solution here.
I'm making a sms filtering app which apple provides us in a template.
And I'm going to use a the server for filtering.
So, as mentioned in the link, https://developer.apple.com/documentation/sms_and_call_reporting/sms_and_mms_message_filtering/creating_a_message_filter_app_extension
I did all those required, but as I tested the app I found that it was not working and found out that there wasn't any request from the app to the server.
So I check the sysdiagnose - swutil_show.txt file, and this is what I got,
Service: messagefilter
App ID:
App Version: 1.0
App PI: <LSPersistentIdentifier 0xd5681a0e0> { v = 0, t = 0x8, u = 0x840, db = 91BDA97A-5780-4A70-B971-BC7C7DAA63B8, {length = 8, bytes = 0x4008000000000000} }
Domain:
User Approval: unspecified
Site/Fmwk Approval: denied
Flags: developer
Last Checked: 2024-01-06 08:06:47 +0000
Next Check: 2024-01-11 07:41:14 +0000
As you can see, I got denied in Site/Fmwk Approval.
I think that means, they got the aasa file right, but the content was inappropriate. That's what I guess right now.
This is my aasa file
{
"messagefilter": {
"apps": ["(TEAMID).(APP BUNDLE ID)",
"(TEAMID).(EXTENSION BUNDLE ID"]
}
}
I think there is nothing wrong.
I tried the search and use GPT but, there is no solution left so I posted here.
I also tried "sudo swcutil verify" on terminal and the result was "pattern matched".
If you have any tips or insights, please help this poor guy.
Thanks.
I have a mac application that is configured to have a universal link. Clicking the universal link launches my application. The documentation says that the link is received in the application(_:continue:restorationHandler:) delegate method which is invoked very late in the application lifecycle after applicationDidBecomeActive.
I have the initialisation code of my app in applicationWillFinishLaunching method. Is there any way the Universal link can be received early, so that I can show the appropriate application window based on the universal link parameters? Is there any other delegate that receives the universal link?
Hi!
I have an iOS app which I want to publish to the App Store. Within my app, users can scan physical item bar codes in grocery stores and earn points for their scans. They are then re-directed to a marketplace on the web, where they can spend these points on physical items (e.g. clothes).
Does App Store block such external linking to marketplace?
Thank you in advance!
The notification parameter in DidFinishLaunching contains a key LaunchIsDefaultLaunchKey which according to Apple documentation is:
The value for this key is an NSNumber containing a Boolean value. The value is false if the app was launched to open or print a file, to perform a Service action, if the app had saved state that will be restored, or if the app launch was in some other sense not a default launch. Otherwise its value will be true.
I m not able to understand the exact usecase for this parameter, like where can we make use of this parameter.
Can I use this key to identify If my application was launched using a universal link?
Universal Links was not working fine on my phone.But I build and run on simulator is fine.
I wrote Associated Domains Settings in Xcode
applinks:example.com.tw?mode=developer
applinks:example.com.tw
the association file in the following URL https://example.com.tw/.well-known/apple-app-site-association
{
"applinks": {
"apps": [],
"details": [
{
"appIDs": ["AAA.example"],
"components": [{
"/": "/app/*"
}
]
}
]
}
}
I used the simulator on Xcode to test the URL and successfully saw the text "Open in the "AAA" App". However, when I published the APP on Testflight and let the mobile phone download and test it, it was invalid. of.
I tried using Settings > Developer > Universal Link Diagnosis > on my Iphone and entering [https://example.com.tw/app]
and I will see "The URL is a Universal Link for the app" with identifier "BBB.example"" This TeamID setting is different from the file I put on the website.
I have never wrote this TeamID setting.
May I ask if I have made any wrong settings?
Thank you,
Jane
I have created a universal link which I m using for two different applications in macOS. Below is the apple-app-site-association file for the same:
{
"applinks":{
"apps":[],
"details":[
{
"appID":"E5R4JF6D5K.com.demo.App1",
"paths":[
"/app1/*"
]
},
{
"appID":"E5R4JF6D5K.world.demo.App2",
"paths":[
"/app2/*"
]
}
]
}
}
After creating this file in my server and providing the same Url in my associated domain capability for both my application, when I try to launch my applications using the link then only the first application is getting launched everytime. The second application is never launched.
for Url with http://custom.com/app1/... it redirects to first app.
for Url with http://custom.com/app2/... it redirects to browser.
I tried uninstalling the first app, but then it always directs in browser.
I tried a separate url for both apps, and it works fine.
I m not able to figure out the problem. The apple documentation says that it is possible to have two application linked to a common domain. Any help?
We have our apple-app-site-association file hosted on our website. It passes AASO verification, we can pull it successful as application/json via curl, and it also shows up as expected with a https://app-site-association.cdn-apple.com/a/v1/ourdomain.com link - however only in Europe.
The apple CDN link works in: Czech, Finland, UK, and Spain, however it does not work in U.S., Phillipines, or Canada. In those cases, the CDN page shows "not found".
It's quite strange that it only works in Europe. The file we are hosting doesn't have any IP restrictions that we are aware of, and we can access the file URL hosted on our website directly from the U.S. and Canada. So it seems that only Apple's CDN cache is failing to retrieve/store it for some reason, in certain locations.
Has anyone seen something like this?
Problems
I would like to know the max limit registrations of Universal Links.
There is no information about the limit in the latest documents, how many links we can register.
Background
Now we consider introducing UniversalLinks to our application and one of the requirements is registering multiple domains. In the system's specifications, there is no upper limit.
References
Supporting associated domains
https://developer.apple.com/documentation/xcode/supporting-associated-domains
Associated Domains Entitlement
https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_associated-domains
Support Universal Links(Documentation Archive)
https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html
Archived documents say as follows but I don't know this is a reliable resource.
In your com.apple.developer.associated-domains entitlement, include a list of the domains that your app wants to handle as universal links. To do this in Xcode, open the Associated Domains section in the Capabilities tab and add an entry for each domain that your app supports, prefixed with applinks:, such as applinks:hogehoge. Limit this list to no more than about 20 to 30 domains.