Universal Links - disable top right link - ios

I currently complement my web application by using URL Schemes to launch my native application. Starting with iOS 9 my users now get challenged with a popup that says "Open in app name". I have figured how to eliminate this by using Universal Links using a different domain then the app I'm launching from but have encountered an issue.
Key points
App is distributed outside of the app store as an Enterprise Distribution. So if I understand correctly smart app banners do not apply.
In case my app is not installed, my universal link web location hosts a page on how to install it.
If a user launches the app but does not have it installed they properly get my install page
Once in the app if the user presses the domain link at the top right they will not be able to launch the app again
The problem Im encountering is that if a user ever presses on the link/bread crumb at top right the app will not launch anymore. It will always direct the user to the install page. I know if I pull down on this page there is an open button that will take me to the app, or if I long press on my link I can also have it launch my app. However, I will not be able to get my users to understand this.
Is there a way to turn off the link on the top right?

Related

How to not remember app selection using universal links

I am using universal links to open an app. In the apple-app-site-association file I have 2 apps credentials saved to be opened with this universal link. I have both apps installed in my device. When I tap the link, a system dialog appears asking me which of the 2 apps I want to open. All is working fine. But the problem is that after selecting to open in one app, the system remembers my selection and don't ask anymore. Is it possible to don't remember that selection? Or to remove it?

Is there a way to check universal link registration from Safari?

iOS has a universal link capability (https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html).
However, it looks like there are couple of ways to "disassociate" a link from the application:
Press and hold on a link and choose "Open in Safari"
There was a tiny link in the top right corner of the app, which was shown right after opening universal link (it looks like it's gone in iOS 11).
As soon as you did one of these actions then universal link will be opened in Safari (until you reassociate it back to the app).
The issue is that if a user end up in this state, it's not clear what he/she should do. I want to provide an explanation on the web page which will be opened in Safari.
However, I want to distinguish two cases:
A link is clicked on a device without the app: Tell a user to download the app
A link is clicked on a device where the app is installed and it's disassociated. Tell a user how to associate it back.
Is there a way to check whether universal link is registered from a page opened in Safari?
Yes, you are correct that iOS 11 took away the upper-right hand corner button to re-enable universal links. They have kept the banner that shows up when you scroll the page up slightly.
This banner acts will also re-enable Universal Links for the user.
Unfortunately, there is no perfect solution to determining if a user has the app installed, but there are a few ways to attempt to deduce whether the user has the app installed already. Branch has ways of deducing whether the user has the app installed and attempting to open it with a URI scheme. You can read about the $uri_redirect_mode in the docs.
It would be very difficult to build this deducing method on your own and I'm not entirely sure how it's done, so I recommend using Branch's solution.

when my app is not intalled, iOS universal link in UIWebView will launch Safari?

From Apple's guide in Support Universal Links:
When you support universal links, iOS 9 users can tap a link to your website and get seamlessly redirected to your installed app without going through Safari. If your app isn’t installed, tapping a link to your website opens your website in Safari.
But i'm confused that if my app is not installed,and I tap a universal link of my app in another app's UIWebView,will the system launch Safari app to load my website,or still load it in the UIWebView?
I test some app's universal links when the app is not installed,and they never launch Safari to load the next page ,they still load it in the UIWebView.
I want to konw if it's possible to launch Safari,but not stay in UIWebView.Do I need any configuration in apple-app-site-association file?
Actually I want to trace where my app was installed from by using cookie.I can store a cookie in Safari with informations of the download page,and get the cookie with SFSafariViewController when my app is installed and opened,and present different views according to the cookie.
What you are trying to build is called 'deferred deep linking'. This (plus a lot more) is exactly what we provide at Branch.io. If you want to avoid the headache of configuring it all yourself, give this a look. Apps like Pinterest, Airbnb, and Tinder all use us for this reason.
Apple's documentation is referring to the default behavior with the standalone Safari browser. Handling links inside an app with UIWebView supersedes this, and there is no way to automatically bounce out of the origin app into the main Safari app.
The workaround is to store data on your own backend. As you've discovered, relying on a cookie pass-through on the device itself won't work in many cases.

Branch.io Deeplink not working in safari in ios 9, But it works in chrome

Deeplinks working perfectly when using chrome iOS app. But in safari it stopped working and it always redirect to the appstore page even the app is installed or sometimes pop a alert saying "safari cannot open the page because the address is invalid". Everything works perfect few days back. so my guess is this happens after the ios 9.2 update. Any solution for this?
UPDATE
I have tried using a new phone(Which app not installed before) and installed the app.
Deep links works for both browsers (Safari and Chrome).
If you push the bnc.lt forward button it opens App Store for both Safari and Chrome.
Next time you open a link deep link:
Safari: It asks if you want to open the link in app store
Chrome: It asks if you want to open app and at the same time redirects to app store. If you click open in app next time you click a deep link it will open in app.
So in other words you can still open the app from Chrome after clicking the bnc.lt forward link in staus bar. This is because Chrome asks for opening the app and not app store.
For Safari i end up in an irreversible state where the deep link always open app store and not the app.
Alex from Branch here: this is the expected behavior. Unfortunately our fallback options are rather limited at the moment, due to the changes to Universal Links in iOS 9.2.
TL;DR: it's a bit of an edge case that most users wouldn't encounter, but you can easily work around it by making use of our Deepviews functionality.
Basically, here's the logic behind what you're seeing:
When you open the link on a device without the app installed, you end up on our bnc.lt server, and we redirect you to the App Store so you can get the app. This is good.
When you open the link on a device with the app installed for the first time, your device detects the Universal Link and opens the app immediately. All this happens locally on your device, and you never even get to our bnc.lt server. This is also good.
When you push the bnc.lt forward button, you're telling your device 'I don't want you to immediately open the app...show me the web content for this link instead'. In the case of a Branch link, this 'web content' is simply a redirect to the App Store. At this point, Branch has no way to know whether you the app is installed or not, so we have to assume it isn't and you get the same treatment as 1. above. This is not so good, but right now we don't have any better options due to the way Apple has designed the system.
The next time you open a link, your device remembers that you pushed the bnc.lt button in the past and just takes you straight to the web content. I'm not sure why Safari does it this way, because I can't imagine many situations where this would be desirable and it is leading to a lot of confusion for users.
The real problem here is that when you press bnc.lt to bypass the app, your device remembers this preference and executes it every time it sees a bnc.lt link in future. Chrome still 'works' because it is proactively confirming the preference each time in 4., whereas Safari just plows forward. There are a few options for what happens next:
In Apple's ideal world, you'd end up on a normal webpage where you could simply scroll up and use the Open in app button to reverse this preference. But since Branch is immediately redirecting you to the App Store, this isn't an option. You could consider using our Deepviews feature, since this does provide some real web content in place of the immediate App Store redirect you're seeing right now.
In most situations, you can still long-press on the link and select Open in app, but this doesn't help users who don't know the option is there.
In the worst-case scenario, you end up on the App Store page and just press the Open button (instead of Install). Thanks to Branch's magic, you'll still end up in the right place!
Now from iOS 9.2, Apple no longer supports URI schemes for deep
linking, developers must implement Universal Links in order to deep
link properly on iOS.
Universal links let you replace custom URL schemes with standard HTTP or HTTPS links. Universal links work for all users: If users have your app installed, the link takes them directly into your app; if they don’t have your app installed, the link opens your website in Safari.
To learn all about universal links, see
How to support Universal Links in iOS App and setup server for it?
Example
https://github.com/vineetchoudhary/iOS-Universal-Links
UPDATE [1]
How Branch links work (Branch.io)
If you take a lock at fundamentals of Branch's contextual deep links. You found Branch.io also using traditional deep-linking
1. Creating links
When you’ve integrated the Mobile SDK, you can create a Branch link every time a user clicks to share or invite another user from within your app. Your app makes a call to Branch.io, and Branch.io return a Branch link.
2. Tying data to links
3. Clicking links
4. Using data
Check the Clicking links step, Branch.io just map your website URL with your app URI scheme but URI schemeno longer supported by Safari. So, move to Universal Links is only the option in order to deep linking in iOS 9.2 or you can wait for some solution by Branch.io. Thanks.

Users getting redirected to ios app when deep linking is turned off

Deep linking is turned off for our app
But when ios users click a link we posted on our facebook page to our page app (https://apps.facebook.com/nakedwines/), they are redirected to the ios app instead of our competition page.
If an ios user enters the link manually into their browser, this works.
Is this a bug or is there something not set up right?
Your issue is that when mobile users try to access your app they're brought to the app store (when the app isn't installed) ? That's expected, if the app was installed it would be opened directly.
If you don't have an IOS app, remove the IOS details from the app settings and they'll be brought to your mobile web URL instead.
The Deep linking setting allows users who click posts from your app to be brought into the app with sufficient context to allow your app to display a specific piece of content.
i.e links to your app's content are passed through to the native app with the full URL, and your app can open that content directly.
For example, clicking a link to a spotify song on iOS opens the spotify app and plays that song, without deep linking it just opens spotify with no context.
I ended up creating a completely new facebook app for the competition page. This got round all of the issues. Facebook doesn't seem to play well if you have both a page app and ios/android apps under the same application.

Resources