Post not yet marked as solved
When a domain has onboarded to Universal Links, and you navigate to that website in Safari (in the URL bar), it will not automatically open up the app. You can browse the site in Safari without risk of it ever opening the app; there is some special logic to handle this in either Safari or in iOS.However, if that same user then begins browsing that same website in the Chrome iOS App, they will be deeplinked into the App whenever they hit a page in the apple-app-site-association file. Chrome is not treated the same way as Safari.Has anyone else run into this issue? Are there any workarounds you found?
Post not yet marked as solved
We are developing the iOS application which supports Universal Links and testing now.In the future, we will gradually update apple-app-site-association file to add paths.Does iOS fetch the apple-app-site-association files when the app is updated (not first install)?[Our investigation using Testflight]Version:iOS 9+Procedure:1. Upload the apple-app-site-association file to our server, and upload our iOS application (v1) to Testflight server(not AppStore).2. Download the iOS application(v1) from the Testflight server. ->iOS fetched apple-app-site-association file and Universal Links worked successfully.3. Upload the “new” apple-app-site-association file added paths to our server. and upload the our iOS application(v2) to TestFlight server.4. Update the iOS application(v2) from the Testflight server. -> iOS did not fetch apple-app-site-association file and Universal Links did not work for new added paths.
Post not yet marked as solved
Hi,we are currently trying to test universal links also on our development server which is behind a VPN. From my understanding, correct if I am wrong, I thought it is enough that during app installation, the corresponding device (iPhone) is also connected via VPN so that iOS is able to download the AASA file?But at the moment I am not able to test this successfully. So my question is, is that possible in general to put the file on a server which is only reachable via VPN, and if yes, what could be the error?Best regardsChris
Post not yet marked as solved
Hi there,I'm developing an app and having a problem with Universal links not working.I've confirmed my AASA is valid: https://placetime.spatialfirst.com/apple-app-site-associationI've also added an associated domain entitlement (applinks:placetime.spatialfirst.com) to the app in xCode, which results in the Universal Links box being ticked in the AppConnect developer console for the entry with the matching bundleId.However, the validation tool https://search.developer.apple.com/appsearch-validation-tool shows "Error no apps associated with url". Is this a red herring because we aren't distributing a public app yet?Note that the AASA validation at https://branch.io/resources/aasa-validator/ shows everything as set up correctly.Can anyone suggest more troubleshooting advice? Please advise!Also, how can I examine the archive xCode creates to determine if the entitlement is set up correctly?Note that I am using:Unity 2019.3.9f1OS X 10.14.5Xcode 10.2.1 (10E1001)iOS 12.3.1
Post not yet marked as solved
I have an app where we create a UAT build and PROD enterprise build internally. We have apple-app-site-association on two different servers. One for UAT and one for PROD. Apple Site Validator says both are good. Both apple-app-site-association are at the app root (not .well-known).On IOS 11.2.1, both UAT and PROD build work fine. Universal links work perfectly.On IOS 13.1 (or any 13+) UAT works. PROD does not work. This is the confusing part because both are using the same TEAM, profile and cert. Only difference is bundleID. Both bundleID's are all lowercase, except the team name. Both are all UPPERCASE. I verified what is in the app bundle as ID and what is in the apple-app-site-association file. Identical.Only difference I see is in the response from the server. PROD one returns cookie as part of response. This doesn't seem to bother ios 11 or 12. It might not bother ios 13. But just an observation.UAT Response Header : apple-app-site-associationHTTP/1.1 200 OKX-Backside-Transport: OK OK,FAIL FAILContent-Type: application/jsonX-Global-Transaction-ID: 2e9c5f725e55844c0f93157dX-Akamai-CSITE: RFDCContent-Length: 588Date: Tue, 25 Feb 2020 20:32:12 GMTConnection: keep-alivePROD Response Header : apple-app-site-associationHTTP/1.1 200 OKX-Backside-Transport: OK OK,FAIL FAILContent-Type: application/jsonX-Global-Transaction-ID: 47b14c8d5e5583f001fc330dX-Akamai-CSITE: 390GContent-Length: 516Date: Tue, 25 Feb 2020 20:30:40 GMTConnection: keep-aliveSet-Cookie: C_SITE=390g; path=/; domain=.mydomain.com; secure; HttpOnlyOn a side note, I also have a PROD build that is an ad-hoc build. Non-enterprise. The team, profiles, bundle ID, etc all differ. My associate file has that info in it as well. It behaves the same way as the Enterprise one does. Works on ios 11 and 12, but not 13.I checked console logs for working and non-working. IOS 11 has nice logs that say it’s downloading json file and then how it’s adding entries. IOS 13 is not very verbose in either case. Both IOS 11 and 13 mention this however:JSON file for ap….ci….com had no entriesAnd I only see that for the PROD server. Never mentions that for the UAT server. I’m not quite sure what that means. It could not get/read the file? Or it can read the file but my entries don’t match what is expected somehow.Can anyone give insight into what I should check? I checked certs, mobile provisions, the ones actually embedded in the .ipas. Everything looks good.
Post not yet marked as solved
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?
Post not yet marked as solved
hello, which one should I use in the apple-app-site-association file,Appid prefix or Teamid?
e.g. , ‘abcd’ is my ‘A’ app's App ID Prefix . And '678ade' is my account TeamId in membership information.
Q1:
In the file 'apple-app-site-association', which one should I use to fill "appID" Value? "abcd.com.A.a" or "678ade.com.A.a" or any one is OK?
The value of the appID key is the team ID or app ID prefix, followed by the bundle ID.
said in this page : (https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW1) eg. apple-app-site-association
{
"applinks": {
"apps": [],
"details": [
{
"appID": "abcd.com.A.a",
"paths": [ "/","*" ]
},
{
"appID": "cdef.com.B.b",
"paths": [ "/","*" ]
}
]
}
}
Post not yet marked as solved
On iOS 14 you can pick another default browser than Safari. If you use another browser, that browser will ask the user to change their default browser.
I have installed quite a few browsers (Chrome, Firefox, Edge, Opera, Brave...) and have set each of them as my default one.
Problem comes when I try to open a Universal Link (which was working just fine when Safari was the default browser), which seems to just not work. With Safari as default browser, the Universal Link would work, and the corresponding native app was getting opened. However, with any other browser different from Safari set as default, the feature is broken and the Universal Link doesn't open the native app.
Has anyone experienced anything similar?
Why might this happen and how might this be solved?
Any help is very much welcomed
Post not yet marked as solved
I have been trying for about two weeks to get Universal links to work in my app VineCrawl. For some reason it always tells me
that it cannot parse the association file. However, other tools for testing the association file have no problem. I didn’t sign it since I am targeting iOS 11 and later. A long time ago, I read somewhere that it could be the https cipher that I use, but now I can’t find anything on that. My file is vinecrawl.com/.well-known/apple-app-site-association
Our users faced the problem with App Clips usage, and some of them can't use this experience due to the next problem:
There is a billing problem with a Previous Purchase
View and correct the problem in your billing info. If you cancel , you may not be able to buy until this billing issue has been resolved.
When some of our users tried to open App Clips card, they were getting billing problem popup, but at the same time they could download app from App Store without any problem.
This popup blocks any possibilities for further actions with App Clips.
Moreover, all information are correct and right.
What we discover in one iPhone, is that it has pending payment for iCloud storage, but don't charge.
But any possibilities to fix this user don't have.
How can we fix it?
Ask you for help :(
Post not yet marked as solved
I have an application that implements the universal link. If I put the url in the notes or messenger app and click on it, open my app. (This is expected behavior).
But if I use the safari, putting the url in the browser, does not open my application, opens the website. (Not what I expected)
I did all the AASA validation tests and everything is fine
Post not yet marked as solved
Hi Team,
We had upload the new AASA, and once we tested with Pilot App in Prod, the Universal Link doesn't works.
We understand that the AASA will be cached by Apple CDN.
Some questions: How to validate if Apple has been cached our new AASA, this has been updated more than 1 week,
How to request apple to retrieve from our web to update their cached version of AASA?
If the AASAhas been updated, do anyone know what else worth to check in order for our Universal links to be works? Kind help and documentation is much appreciated.
Thank you!
Post not yet marked as solved
We utilize universal links for our auth flows through Safari. What we are seeing is when the user selects the "username and password" stored in the keychain, the form gets autofilled and sometimes autosubmitted. When this occurs the method application:continueUserActivity:restorationHandler in the application's AppDelegate does not get triggered, leaving the user stuck on Safari.
Post not yet marked as solved
Hello, I am having an issue related to provisioning profiles and I am seeking advice on how to resolve it.
This is the error message I am getting:
[06:03:44]: ▸ ❌ error: Provisioning profile "iOS Team Provisioning Profile: com.binnys.universal" doesn't support the Associated Domains capability. (in target 'Runner' from project 'Runner')
[06:03:44]: ▸ ❌ error: Provisioning profile "iOS Team Provisioning Profile: com.binnys.universal" doesn't include the com.apple.developer.associated-domains entitlement. (in target 'Runner' from project 'Runner')
For context, I am building an app using the Flutter framework with an Azure DevOps pipeline for Continuous Integration, and running a fastlane script to build the app. This is my fastlane script below:
default_platform(:ios)
platform :ios do
desc "Build for iOS"
lane :prod do
update_app_identifier(
xcodeproj: "Runner.xcodeproj",
plist_path: "Runner/Info.plist",
app_identifier: "com.binnys.universal",
)
update_project_team(
path: "Runner.xcodeproj",
teamid: "L3B96G5S7X",
)
cert
sigh(
force: true,
app_identifier: "com.binnys.universal",
filename: "InHouse_com.binnys.universal.mobileprovision",
)
build_app(
scheme: "Prod",
output_name: "Binder-Prod.ipa",
export_method: "enterprise",
export_xcargs: "-allowProvisioningUpdates",
export_options: {
compileBitcode: false,
}
)
end
lane :dev do
update_app_identifier(
xcodeproj: "Runner.xcodeproj",
plist_path: "Runner/Info.plist",
app_identifier: "com.binnys.universal.dev",
)
update_project_team(
path: "Runner.xcodeproj",
teamid: "L3B96G5S7X",
)
cert
sigh(
force: true,
app_identifier: "com.binnys.universal.dev",
filename: "InHouse_com.binnys.universal.dev.mobileprovision",
)
build_app(
scheme: "Dev",
output_name: "Binder-Dev.ipa",
export_method: "enterprise",
export_xcargs: "-allowProvisioningUpdates",
export_options: {
compileBitcode: false,
}
)
end
end
And this is the relevant part of the build pipeline in Azure DevOps
- job: iOS_Prod
pool:
name: Mobile
steps:
- task: FlutterInstall@0
inputs:
channel: $(flutterchannel)
version: $(flutterversion)
- task: InstallAppleCertificate@2
inputs:
certSecureFile: $(p12FileName)
certPwd: $(p12Password)
keychain: 'temp'
- script: |
flutter clean
cd ios
pod repo update
cd ..
displayName: 'Clean'
workingDirectory: './binder'
- task: FlutterBuild@0
inputs:
target: 'ios'
projectDirectory: './binder'
buildFlavour: 'Prod'
entryPoint: './lib/main.dart'
iosCodesign: false
- script: fastlane prod
displayName: 'Fastlane'
workingDirectory: './binder/ios'
- task: PublishPipelineArtifact@1
inputs:
targetPath: './binder/ios/Binder-Prod.ipa'
artifact: 'iOS_Prod'
publishLocation: 'pipeline'
When I run the fastlane script locally on my MacBook Pro, I get no errors and the app compiles successfully.
The build agent that we are running the pipeline on is a Mac Mini that our company owns. When I run the fastlane script directly on the Mac Mini, the app also compiles without error. However when running the DevOps pipeline on the same computer (the Mac Mini), using the same fastlane script, it fails with the error above, and I don't understand what could be the difference that causes it to fail.
We have been using this build process for a while, but it is failing now that we have added a feature requiring Associated Domains capability, but again it is only failing when run through the Azure DevOps pipeline.
I don't think that the provisioning profile itself is the issue, because the fastlane script is downloading the latest provisioning profile for the app and it appears to be the correct provisioning profile.
Also the app id has the associated domains capability checked:
And the app has a Runner.entitlements file with the following:
<?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>aps-environment</key>
<string>development</string>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:binnys.page.link</string>
</array>
</dict>
</plist>
If you have any ideas whatsoever on what might be causing this, I would appreciate the help.
Post not yet marked as solved
According to the docs, you can register a few URLs for Advanced App Clip Experiences and the one with the most specific URL prefix will get triggered.
However, I can't get this to work as only the exact URLs trigger the App Clip Cards - meaning the app launches without parameters rendering this feature useless.
Oddly enough though, once the clip is cached, the prefix matching works but only on some devices, making this a nightmare to figure out.
Has anyone had this problem and solved it?
Post not yet marked as solved
Hello,
We do not have explicitly set it our website, but still Smart Banner appears since we have universal link setup. (current URL matches the universal link patterns set in your apple-app-site-associations file ). Also, I understand it appears only for users having our app installed.
We do not want to show this banner in any case. is there any way to choose not to show the app banner? either setting additional meta or any other way would work.
regards,
Hussain
Post not yet marked as solved
Universal link not working and not returning to the app on some devices with same iOS version.
Added LSApplicationQueriesSchemes names like below but nothing is changed.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>https</string>
<string>googlechrome</string>
<string>googlechromes</string>
<string>firefox</string>
<string>opera</string>
<string>opera-http</string>
<string>opera-https</string>
</array>
How can I force url to open with only Safari? Any configuration with UIApplication.OpenExternalURLOptionsKey?
or
Can urls be opened with safari's url scheme like safari://<domain>?
or
Is my AASA file is suitable for universal link from default browser except safari?
{
"applinks":{
"apps":[
"WS5XXXXXX9.<bundle-identifier>"
],
"details":[
{
"appID":"WS5XXXXXX9.<bundle-identifier>",
"paths":[
"/m/*"
]
}
]
}
}
Post not yet marked as solved
Hello
Are there any tools that help developers with the implementation/maintenance of universal links?
I'm struggling with making sure which pattern is matching and makes the app open and caching the AASA files on apple CDN servers.
The documentation itself lacks information about refreshing that file and any debug information.
Post not yet marked as solved
Hi
If i put
"paths": ["*"]
any link to my site opens the app.
However, i only want link like the following to open the app
https://www.domain.com/Product/63868/48
So i changed to
"paths": ["/Product/*"]
but now no link opens the app.
Any ideas what I'm doing wrong?
Post not yet marked as solved
Hi,
I'm having a problem about defining universal link.
I have a link like: host/en/booking/#serviceApp/resetPassword.
I added in AASA file bellow:
"applinks": {
"apps": [],
"details": [
{
"appID": "myAppId",
"components": [
{
"/": "/*/booking/*/resetPassword",
"#": "serviceApp"
}
]
},
]
}
}
Is it correct? Because I tried to test but it did not work
Thanks!