I have an app already on App Store that has a custom URL scheme registered.
I implemented Firebase Dynamic Links for the new version of the app.
When testing the new links, when I open a FDL with the old App installed on iOS 10, I get redirected to the App Store to update the app.
When I open a FDL with the old App installed on iOS 8, the old app is opened because openUrl for my URL scheme is triggered. My app crashes because of this, because the old app is unable to handle such link.
I expected that on iOS 8 it would also redirect me to the App Store to update the App as it does on iOS 10.
Even sending imv=min_app_version (as described here) as a part of the FDL does not help.
Why is this behavior different between iOS 8 and 10? Is there any way how to stop this happening on iOS 8?
Thank you.
iOS 8 does support custom URL schemes pretty well, also iOS 8 does not supports Universal Links. Because of these reasons Firebase Dynamic Links will use custom URL scheme to detect that your App is installed/not-installed on iOS 8 (and open the App).
iOS 9 and above do not have nice support for custom URL schemes and these OS's have Universal Links. Firebase Dynamic Links will use Universal links there.
About imv: we do provide imv parameter, but contrary to Android, we do not know version of the installed iOS App. We expect App to handle imv. For example if App that opened the link have lover version number than specified in imv, App should show message to the user and redirect to AppStore for upgrade.
One way how you can resolve this situation is to create new custom URL scheme that does not exists in your already released App versions. In this way older Apps, that crashing, will not be opened by Firebase Dynamic Links.
Related
Every iOS application has its App Store link, which should redirect you to the App Store on iOS devices.
The link looks as follows:
https://itunes.apple.com/us/app/APP_NAME/APP_ID?mt=8
My application link (https://itunes.apple.com/us/app/storyvine/id929186649?mt=8) works on desktop browser, but gives me an error on iOS device:
iOS Update Required
To view this story, you must update to the latest version of iOS.
However, my iOS version is already the latest one (currently 10.3.3).
The application's name and therefore, the URL starts with the name "Story".
As a side effect of this, the soon-to-be-updated App Store thinks that it's referring to an App Store application story (which is only included in iOS 11 and above) and not an actual App Store app. You should remove the application's name from the link, so it becomes:
http://itunes.apple.com/us/app/id929186649?mt=8
I have an app with MagicLink authentication implemented using universal links. The app and the server are configured to handle universal links following Apple’s documentation (https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html).
The link successfully launches the app from Apple Mail + Safari. However when I try to open it from GoogleMail + Chrome, it redirect to the AppStore.
It is important to notice that the app isn’t on the AppStore yet and I’m trying to sort out the issue before publishing it.
I can reproduce the issue on the iPhone 6s with iOS 10
This is a known issue with a number of apps. Universal Links do not work in many situations, with the Gmail app being one of them. See a more detailed list here.
To work around this limitation, your Universal Link URL needs to lead to a page with a button/link on it the user can activate. At Branch.io, we offer a Deepviews feature for this purpose. You'll need to build something similar.
I tested the dynamic links Firebase. Configured everything in the project, the implementation did exactly like the Google documentation and created links on the console. When I test in Safari it does not open the application.
Thank you
iOS 9+
Due to the limitations on the iOS platform, Firebase Dynamic Links must rely on Apple's Universal Link system to open the app directly from a link when it is installed. One of the constraints placed on Universal Links is that the app-open behavior is only triggered from a user's click and not by a redirect or copy/paste into Safari.
We have found it very challenging to test Universal Links in the simulator and pretty much always use a real device for this type of thing. Basic steps: install app > SMS link to your test device > click link > observe app open.
iOS 8 and prior
iOS versions prior to 9 handle opening the app from a Dynamic Link through Safari, so if the app is not opening when you copy/paste the link into Safari then some setup is incomplete. Please review your Firebase project for information and confirm that your bundle IDs/custom schemes match on the project page, in your link, and in your app; be sure that the bundle ID is listed in URL Types in your Xcode project setup along with any custom scheme you wish to use.
Other Info
Here is a link to a prior answer that may be helpful as well.
Firebase dynamic link not opening the app iOS
I am working on adding Google App Invites deep linking to an iOS app and I followed all the steps for Adding App invites to iOS but the deep link just opens the app store to my app page even if the app is installed.
To recap, I...
Installed the Cocoapod
Generated and added the config file using the appropriate app store ID and bundle ID
Included the code for application:openURL:... and didFinishLaunchingWithOptions:
Added the URL Scheme for google and inputted the REVERSED_CLIENT_ID
I'm not sure how to debug this considering I did all that Google told me to do. Their only help link on the Google Developers site was to Stack Overflow. Has anyone tried implementing these deep links on iOS and succeeded?
EDIT: This was done using iOS 8.x. #Caio pointed out the problem still persists on iOS 9 but not on iOS 7.x.
We need to set the value "applinks:{your_app_link}.app.goo.gl" to Associated Domains on Capabilities tab of Xcode.
If 2 other app register same url scheme, how iOS handle this?
The iOS Documentation reads:
Note: If more than one third-party app registers to handle the same URL scheme, there is currently no process for determining which app will be given that scheme.
The OSs behaviour is undefined if there are two apps registered for an URL scheme, therefore you should try to define a handler that is specific for your app to avoid this situation (e.g. awesomeMapsApp:// instead of maps://).
Actually it can be really problematic. For example, til' March 2016, an app called Grabb handles PayPal schemes so that if your app tries to open PayPal (with all the security nonce etc. within the call) it launches Grabb instead, and you can do nothing about it. Even with the openURL alertView added in iOS 9, it can still be a big security issue.
Here is what I have tested:
iOS 5: the first installed app will be chosen. If you delete first installed app, then the others will not launch unless you install again.
iOS 6: the lastest installed app will be chosen. If you delete the lastest installed app, then the previous installed app will be chosen.
It will present an UIActionSheet view allowing the user to choose which app to launch (good example are apps that handle .doc files). That's where the icon you specify is used - on the action sheet buttons when it's shown to the user