Not sure if here is the right place to ask this, sorry if not.
Today I've set up my iPhone to use Fiddler as proxy and then saw that it makes requests to /.well-known/apple-site-association for applications.
I know it's for a purpose but the weird thing is it keeps sending same request for lots of apps (and for every country domain for apps like Tripadvisor) and like in an infinite loop. Again and again for same app and domains and doesn’t stop doing that. I saw that once before too. When I restart the phone it stops.
What can be the reason for this?
Thank you very much.
iPhone sends these requests to download files from each domain which tells the iphone which apps support which universal links.
If you look at the description from the following URL you can see that this company has two apps which supports the following URL's which can be directly opened inside the app instead of being re-directing to web pages.
So if you encounter anywhere on your phone the link "www.ixigo.com/flights" (lets say in a message in whatsapp)it iOS will straight away open the app as the app supports these url.
Similarly if an APP supports multiple domains, iOS will make multiple hits and download all the urls which the app supports.
https://www.ixigo.com/apple-app-site-association
{
"applinks": {
"apps": [],
"details": [
{
"appID": "6WCD67RXUP.com.ixigo.travel",
"paths": [
"/flights",
"/hotels",
"/holiday-tour-packages",
"/holiday-tour-packages",
"/restaurants",
"/ixigoer",
"/near-me",
"/send-enquiry",
"/ixigomoney"
]
},
{
"appID": "6WCD67RXUP.com.ixigo.trains",
"paths" : [
"/trains",
"/search/result/train/*"
]
}
]
}
}
This is related to Web Browser–to–Native App Handoff.
User activities can be shared among apps that are signed with the same developer team identifier and supporting a given activity type. If an app is document-based, it can opt to support Handoff automatically
Read More Here
Related
I have previously used deeplinks to open in multiple apps depending on what the user has installed. I have now upgraded to dynamic links and can't figure out how to get this to work.
Currently it only opens in com.myapp
I have multiple apps (4 apps for both iOS and Android) that I want to be able to open a dynamic link in.
If one of the apps is installed then use that otherwise go to the appropriate store for the first app in the list.
It looks like you can only put one apn or ibi in the dynamic link.
Is this possible or will I have to revert back to using deeplinks for this purpose?
Long Dynamic link:
https://go.myapp.com/?link=https://member.myapp.com/register&apn=com.myapp&isi=appid&ibi=com.myapp
My AASA currently looks like this:
{
"applinks": {
"webcredentials": {
"apps": [ "appid.com.myapp" ]
},
"details": [
{
"appID": "appid4.com.myapp4",
"paths": ["appname4/*"]
},
{
"appID": "appid3.com.myapp3",
"paths": ["appname3/*"]
},
{
"appID": "appid2.com.myapp2",
"paths": ["appname2/*"]
},
{
"appID": "appid.com.myapp",
"paths": ["*"]
}
]
}
}
EDIT:
Same issue in github:
https://github.com/firebase/firebase-ios-sdk/issues/9542
EDIT 2:
From Firebase support:
To give an overview, FDL can only support one app (iOS / Android /
Web) per Firebase project. This is because the paths in the
apple-app-site-association (AASA) file are /*, so the Dynamic Link
will try to open the first app it sees in that list, and we don't have
a way to guarantee how they are presented in the association. With
that, the multiple apps associated with your Firebase project will
cause reliability on navigating your Firebase Dynamic Links.
For now, aside from using deeplinks, you can use a different project
for the other apps so that you won’t experience opening behavior
issues. You can also try the workarounds mentioned in this related
Stack Overflow post.
Lastly, we are aware that many developers, such as yourself, would
like for FDL to support multiple apps. Please note that our team is
exploring potential solutions to make this happen, and we have an
internal feature request for this. As an action, I’ve linked your
support ticket to let our engineering team know the increasing
interest to have this type of feature implemented, though, I can't
give any details or timeline as to when it will be available. For now,
I suggest keeping an eye out on our official blog and release notes
from time to time for any updates.
Same issue with some suggested workarounds which I have yet to try.
Firebase Dynamic-Links is not working for different target in same project in iOS
I have implemented BranchI to handle universal links, I have been through the documentation and as far as I can everything should work.
The behaviour I get is that when I long press and select open with 'myApp' from the menu all is fine and works as expected.
However if I simply click the link, the app will open as expected but the Branch Universal object does not have the data that the the link should be passing through. I have emailed Branch support but they have not replied for days.
Would appreciate help from anyone who has also experienced this issue.
I am running an app deployed to iOS14 using SwiftUI , but I do have an appdelegate, where I am calling the Branch Universal object in UIApplicationDidFinishWithOptions.
Many thanks
In your app under Signing & Capabilities you have to add the domain you want to open in your app as Associated Domain. So you add the Associated Domain capability and add your domain as applinks (eg "applinks:casperzandbergen.nl").
This lets iOS know your app wants to handle those links. But iOS also asks the server if an app is allowed to handle that domain so no one else could make an app to hijack traffic to my domain.
To let iOS know an app is allowed to open urls from your domain you have to host an entitlements file on your server with details of what apps can open exactly which paths.
Specifically you host your entitlement json at https://<the domain in your capabilities>/.well-known/apple-app-site-association
For example I have this hosted:
{
"applinks":{
"apps":[],
"details":[
{
"appID":"<app id including team id>",
"paths":["/*"]
}
]
}
}
And this works but the new syntax described by apple is different:
https://developer.apple.com/documentation/xcode/supporting-associated-domains
Please make sure that you added Associated Domain capability In your app under Signing & Capabilities you have to add the domain you want to open in your app as Associated Domain.
For Example
applinks:www.amazon.com
This is enough from client side app. But some apps will try to steal traffic of may websites by this dynamic links, so apple required to add apple-app-site-association to verify the server.
Associated domains establish a secure association between domains and your app so you can share credentials or provide features in your app from your website.
Host your apple domain entitlement json at https://yourdomine.com/apple-app-site-association
The following JSON code represents the contents of a simple association file.
{
"applinks": {
"details": [{
"appIDs": ["ABCDE12345.com.example.app", "ABCDE12345.com.example.app2"],
"components": [{
"/": "/buy/*",
"comment": "Matches any URL whose path starts with /buy/"
}
]
}]
},
"webcredentials": {
"apps": ["ABCDE12345.com.example.app"]
},
"appclips": {
"apps": ["ABCED12345.com.example.MyApp.Clip"]
}
}
You can see apple-app-site-association in Netflix and Youtube Here.
Apple documentation for associated domains Click Here
You will get a call in func scene(_ scene: UIScene, continue userActivity: NSUserActivity){} in or in AppDelegate corresponding method once you successfully integrated it.
I'm working on building my first App Clip and am hoping to get thoughts on an issue I'm facing. The App Clip is meant to allow me to sell items from my own little personal shop without people having to download my full app first.
When I try to upload my App Clip to the App Store, I'm getting a Domain URL Status error of "Unexpected Error"
My App has what I believe to be an appropriate Apple App Site Association file at the domain I've provided (I've checked it a number of times and the invocation works correctly in my developer local experience) so I don't see where that problem is coming from. This is what the JSON looks like on the website and also code below (with the identifying information changed to their generalized labels):
{
"appclips": {
"apps": [
"TeamIDNumber.com.AppName.AppBundleID.Clip"
]
},
"applinks": {
"apps": [],
"details": [
{
"appID": "TeamIDNumber.com.AppName.AppBundleID.MarqetAppTest",
"paths": [
"*"
]
}
]
}
}
In addition, when I try to create an Advanced App Clip Experience so that I can use QR code and NFC invocations, I get an error that "This URL is not contained in your app's associated domains".
However, when I go into the build metadata, it clearly shows my website as an associated domain so I don't know whats causing that error.
The consequence of all this is that when I use an NFC tag (or scan the QR code using the iPhone QR reader) with my phone, I get taken to my website on Safari rather than the App Clip invocation coming up.
I submitted a ticket to Apple nearly 3 weeks ago and am being told they have no updates so checking if anyone here has thoughts. Any input appreciated, thank you!
This has been resolved with the help of Apple! A bit embarrassing to say, but the error was that in the associated domains I had included an unnecessary space after the colon. So the associated domain was written as "appclips: marqetapp.com" when it should have been "appclips:marqetapp.com". Apple informed me that they are working to update their error messaging to make these kinds of issues clearer in the future.
I am working on price comparison application, in which I have products of ebay, in addition to many other vendors. I have web url of an ebay product, and I want to open that product page in ebay iOS app(If installed).
Other applications like amazon and walmart automatically open themselves when I open this web url in my app like
UIApplication.shared.open(urlToOpen, options: [:], completionHandler: nil)
if it is a walmart or amazon or newegg product, above line opens the product in respective app. but ebay app does not do this.
I have searched on internet. Found this SO Answer . But this is very old (Jul 4 '15). And it is not working
I have also read this ebay community thread. This is also very old thread (Oct 15, 2015). According to this thread,
The ability to open the app directly from an email link hasn't been
added in yet, but it's a great suggestion. We're definitely working on
this for a future update, but we don't have any specific details that
we can share yet
So I am wondering if I can accomplish this task now?
Sample web url that I have
https://www.ebay.com/itm/Google-Pixel-32GB-Factory-Unlocked-5-0-12-3MP-4GB-RAM-Android-Smartphone/142444471228?_trkparms=5079%3A5000006423
If you look at ebay.com/apple-app-site-association you'll see that they have this AASA file being hosted for their Universal Links:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "T4JAZKL6NS.com.ebay.iphone",
"paths": ["/notapath12345"]
},
{
"appID": "658FM9ZWKC.com.ebayent.iphone",
"paths": [
"NOT /itm/like/*",
"NOT /sch/*/*/bn_*",
"/itm/*",
"/sch/*"
]
}
]
}
}
From this, it looks like the ebay app with bundle id 658FM9ZWKC.com.ebayent.iphone should open (if it is installed) when a link is clicked on that has a path https://ebay.com/itm/* where * is a wildcard character. The Universal Links only open from certain apps. I recommend testing your links by pasting them into the notes app and tapping on them. It looks like the T4JAZKL6NS.com.ebay.iphone does not have any paths set up.
Deeplinks are first configured on server side with some JSON config file stored in the root directory of Web Server. The JSON config file have data about which links can open the app.
If eBay has setup Deeplinks on server, you need to ensure the followings on App:
Associated domain added correctly in App Capabilities.
Sometimes the links don't work in safari, save the link in your notes app and try to open from Notes.
Debug Deeplinks related AppDelegate functions.
We have multiple flavors of our app which is pointing to the exactly same server; We can’t differentiate different apps from looking into the domain urls and their paths.
For Example, from any of the app, if we request Forgot your Password then the link received for Reset Password in email will be same for both the apps. So, if we tap on the link, it will open any of the app instead of asking user which app should be open by showing menu with all available apps. Actually its opening the first app which Bundle ID matches in apple-app-site-association file placed on server.
Domain Registration in App Associated Domains section: applinks:example.com
Content in apple-app-site-association file placed at server:
{
"applinks": {
"apps": [
],
"details": [{
"appID": "XXXXXXXXXX.com.example.FirstApp",
"paths": [
"NOT /sample/activate/*",
"*"
]
},
{
"appID": "XXXXXXXXXX.com.example.SecondApp",
"paths": [
"NOT /sample/activate/*",
"*"
]
}
]
}
}
Actual Behavior:
If both apps installed on device, by taping on link in browser, it will open FirstApp OR SecondApp
Expected Behavior:
If both apps installed on device, then by taping on link, iOS should give choice to user, which app he/she wants to open.
Any way to achieve expected behavior with above explained scenario?
According to Apple's documentation on AASA files, the device will always register the first app with a matching URL.
The value of the details key is an array of dictionaries, one dictionary per app that your website supports. The order of the dictionaries in the array determines the order the system follows when looking for a match, so you can specify an app to handle a particular part of your website.
Unfortunately, there does not seem to be a work around since this occurs at the OS level of the device. Your best bet is to distinguish the URLs somehow. Sorry, I know that's probably not the answer you wanted to hear.