I have an Android application already set up for deep linking via Facebook. Deep links, in particular, work fine when sharing by the Facebook SDK, when the Facebook Android app is not installed on the device. However, deep links are broken when sharing happens through the Facebook Android app: in particular, the Intent that is fired when clicking on a deep linked post from within the Facebook app carries an URL that has http as its scheme instead of the custom scheme that is used in the al:android:url meta property of the web page that can be downloaded at the shared URL.
I am using Facebook app version 37.0.0.48.234 and Facebook SDK 3.21.1.
Of course, everything worked fine... some weeks - or maybe months - ago. Yes, I know I am using an old SDK version. But, instead of blindly updating the library, only to discover that it still does not work, I would like to make a slightly more informed decision about it. So, I'm asking the following:
does a specific, documented, or at least advertised incompatibility exist between the SDK version I'm using and the latest Facebook Android app? It almost seems that the URL set by ShareDialogBuilder.setLink is not correctly processed or recognized by the Facebook app, and therefore used as it is, instead of triggering deep linking by means of the al:android:url meta property which the page at that URL contains.
Does a specific, documented bug exist that prevents the latest Facebook Android app to process deep links as they used to be set up some time ago, that will hopefully be fixed in the future, so that application developers do not have to jump here and there trying to work around the problem?
Does a workaround for this problem exist? And, if the workaround involves updating the Facebook SDK, which specific mechanism (a name of an attribute that the Facebook application expects to receive, or what else?) has unexpectedly changed (such as that attribute being renamed, e.g. from link to contentUrl, or whatever) in the last weeks/months?
Could it be the same issue on iOS SDK?
Look at this sad answer from FB:
https://stackoverflow.com/a/30617527/2707000
I had the same problem but using a different iOS device where open the link on FB app from the one that share the link lets it works!
ps: sometimes I needed to relaunch the FB app, probably in this way the app will re-pull the posts from the servers avoiding some sort of cache.
Cheers.
Related
So I'm trying to figure out if it's possible to deep link a user who does not have the app currently installed. Here's what I'm trying to do:
1) User clicks deep link on website in mobile browser.
2) User is taken to the app store to install the app
3) Once installed, the user is taken to the deep link to specific content within the app.
The closest thing I've found so far is with Android App Install Banners, but that's not exactly what I'm looking for. Is this even possible?
Here's a link with the Android App Install Banners near the bottom of the page: https://medium.com/#ageitgey/everything-you-need-to-know-about-implementing-ios-and-android-mobile-deep-linking-f4348b265b49#.evsxzudwj
What you are trying to accomplish is known as deferred deep linking.
Vanilla iOS does not support deferred deep linking at all. Android can do it with the Android Google Play referrer, but it is unreliable and doesn't work at all from Chrome (the most popular Android browser by far).
To do this, you'll likely want to investigate a (free) third-party service like Branch.io (full disclosure: I am on the Branch team) or Firebase Dynamic Links. The Branch platform abstracts all the technical details and edge cases away, so all you need to worry about is defining a set of key/value parameters (for example: articleID: story123) when you create a link. Branch makes sure those parameters are returned to you inside the app the first time it launches after the user clicks the link, whether or not the app was installed when the link was clicked. You can then use the values to route/customize however you wish.
For a full explanation of what is involved in building this yourself, try this blog post.
I have a link that when clicked loads a dynamic webpage (which performs some operations on the server), and then redirect the user to an installed app. So far, opening the link in the following apps/browsers works fine:
Android's default browser;
Chrome - several versions
Twitter app
Something similar is also being done on iOS, and works fine.
The following does not work, no matter what I try:
Sharing the link on Facebook, and opening it from the Facebook App with Facebook's builtin browser on Android (on iOS this works fine). I get an error saying "Page can't be loaded".
What has been done/tried:
The app has the needed content filters and intent setup correctly, and the filters were set to handle both a custom protocol scheme ("example://") and HTTP ("http", "example.com") - one at a time and both at the same time.
Using App Links tags or Open Graph tags (as suggested by some FB literature) did not solve the problem.
Redirecting the user with an HTTP redirect, javascript or meta refresh tag does not work.
Using an HTML link and taping it does not work.
All of those methods work everywhere except when using the Android Facebook App's builtin browser.
(this was tested with several Android versions, 2.3, 4.4 and 5.0)
Is there any special syntax for this kind of links to work?
Thanks,
Jean
Have you tried changing your site's redirect implementation?
https://developer.chrome.com/multidevice/android/intents
The functionality has changed slightly in Chrome for Android, versions
25 and later. It is no longer possible to launch an Android app by
setting an iframe's src attribute. For example, navigating an iframe
to a URI with a custom scheme such as paulsawesomeapp:// will not work
even if the user has the appropriate app installed. Instead, you
should implement a user gesture to launch the app via a custom scheme,
or use the “intent:” syntax described in this article.
I am still new to custom URLs and deep linking, but I have not been able to find answers to what I'm looking for on other stackoverflow Q/As.
The context of my question is Android and iOS. My app is HTML5 in Sencha Touch, and uses plugins for native calls. So I need to figure this out for Android and iOS.
Here's the problem. Say I have a a document ID for an Evernote note, and I want my app to launch the Evernote app (assuming it's installed) and have that document open up, then how do I go about doing that? Specifically, how do I know what parameters and parameter names I need to pass to Evernote? Is there a way to "inspect" the Evernote app or do I need to get some official documentation from Evernote about what parameter names/values I can provide?
In my example above, we can replace that with something else as well. Say I have a file "doc.xls" that is in Google Drive. Assuming I have Google Drive app installed, how can I open the Google Drive app with "doc.xls" opened? How do I determine what parameters I need to (or can) pass while opening a native app?
I understand the idea of opening and launching other native apps; I have seen examples for Android and iOS but I cannot figure out how to determine the parameters - which is what my question is about.
Is there some general reading I should do on some particular topic to figure this out? Let me know if I can clarify anything about my question.
Thanks in advance for the help.
Mohammad
San Jose, CA
try this tutorial by sencha team
On the use of Custom Scheme URLs to launch App
http://docs.sencha.com/touch/2.1.1/#!/api/Ext.device.Device
you may also try the phonegap version.
https://github.com/EddyVerbruggen/Custom-URL-scheme
all the best Hope this is not too late..
I updated iOS and Android apps to use deep linking from Facebook posts as described here:
https://developers.facebook.com/docs/ios/app-links/
https://developers.facebook.com/docs/android/link-to-your-native-app/
Everything works fine for the new app. My problem is that many people will have the older version of the app that does not handle deep linking. Since I was using Facebook SDK login, the url schemes, etc were already set up.
The only solution I can think of is to wait for a month to give most people the opportunity to upgrade then enable deep linking in the app settings. This is far from ideal.
Has anyone else faced this problem and found a better solution?
Have you tested with old versions of your app, and does it crash?
For iOS, if you don't already have url handling logic setup (in your openURL method in the AppDelegate), it should just open your app, and do nothing else.
On Android, if your deeplink handling class is a new class (and does not exist in your old app), then the FB app won't deeplink if it cannot find that class on the device.
BackGround:
There are Facebook APIs(and SDKs) available to develop applications for other Mobile devices like iPhone, BlackBerry etc, but it seems there are no official ones for Android(?).
People have ported Java APIs to work on Android and have written FaceBook Client applications(FaceBook dev: Wiki Page). Apparently, there is also a light weight FaceBook SDK in alpha release for Android(a la FBRocket). But it is not avised to be used in Production.
Since these FaceBook functionalities have been exposed as REST based service, most of work would invove sending requests in desired format over Http. So, writing a FaceBook client app for Android certainly is doable.There are similar applications already in market e.g.: Bloo.
Questions:
When asked to write a FaceBook client application what approach should one undertake? Should we choose the SDK or invoke the services over Http?
If there is already a Web application that integrates with FaceBook, can we just browse to that Application from inside a WebView and be done with this?
Thanks!
I would use the Java APIs. You mention they were "ported" but were they? You develop Android apps in Java, you can often just include .jar files and use them in your Android app without any sort of "porting". REST access to FaceBook would also work fine too.
Are you talking about a custom application that you've built on top of FaceBook? If you already have a webapp that works fine in the Android browser then it would be fine to just have your users go to that site by giving them the URL. If the WebApp is only part of your application then you could pop open the browser with that page open, or you could load that page in a WebView as part of your larger application. However if this is all your application is doing, then it's not really an application, it's just a glorified browser bookmark and I would strongly recommend against releasing an app like that to the Android Market unless you like getting horrible ratings.