Opening deep content links in native apps from mobile web - ios

My company has an app (iOS and Android), to which the following scenarios applies. I'm trying to help point my engineers and product team in the right direction.
When one of our users clicks on a content link from one of our emails, or Tweets or Facebook posts, and they're on their mobile device, we prompt the user with a link to download our app. This is similar to what many apps do, including LinkedIn (see i.stack.imgur.com/glSgJ.png).
I imagine this is mildly effective of driving awareness and downloads of a native app, for new users who came in from social media and various web sources. However, it is not helpful at all for a user like me who already has the app!
1) clicking "No Thanks" keeps me on the mobile web (when I want to be in the native app), and
2) clicking "Download the App" takes me to iTunes App Store page for an app I already own.
SUPER ANNOYING. As a result, I have to manually open the app, and search for the content in question. I'm guessing most users don't do this. More importantly, depending on the UI/UX of the app, I may never get there!
Again, I know we are handling mobile web visits in the same way many other companies (including LinkedIn) do, but it seems we are leaving a lot of potential native app use on the table. I want our engineers to build that elusive 3rd option, "Open In App".
Spotify and Rdio have solved this very nicely. Here are deep content links (in the case of these companies, to a specific song) for the two apps respectively:
http://open.spotify.com/track/2SldBUTJSK6xz43i8DZ5r2
http://rd.io/x/QF3NK0JKWmk
If you have a moment, first grab the free version of Rdio or Spotify apps. Then, if you open those links above from an iOS device, you will see how nice the experience is, for existing native app users: Rdio has a nice "Tap to open in Rdio" link (http://i.stack.imgur.com/B7PuE.png), and Spotify's link is even more clear, "I have Spotify" (http://i.stack.imgur.com/Q3IV6.png). Both apps also include a link to download the app, for new app users. More importantly, both apps cookie the user: future visits to links (whether from email, Twitter, Facebook, etc) on mobile web automatically open the app, instead of prompting you to choose each time. SUPER CONVENIENT.
Questions:
1) How do they accomplish this? I'm initially only concerned about iOS (on which I tested this), but this same situation should apply to Android.
2) Why aren't more apps doing this? It doesn't seem like rocket science, so am I missing a key reason why this might be a bad idea? Half of my problem is convincing the use case.
3) Why don't I see discussions about this technique? I've searched a ton for an iOS solution. I come up with a lot of discussion about URL registrations (mainly app-to-app), but no one actually referring to the type of scenario I describe (mobile web prompt to open native app).
It seems that with minimal engineering, app developers could dramatically increase native app use, converting from mobile web. :)

Android supports deep linking. Please refer to
http://developer.android.com/training/app-indexing/deep-linking.html

Tapstream's deferred deep links can send users to specific views within apps (iOS only), even when the app isn't yet installed on their device.

Related

Is it possible to use Facebook App Links with email and pass through App Store install?

I am planning to use app link from FBSDK to invite using my iOS app via email.
I know if my iOS app was installed on the device it will be opened when I select the link and handle invite token in URL.
But how about if my app was not installed?
After user install it from App Store can I handle invite token also?
Hope anyone used to work with this scenario can help me.
There are a lot of reasons why what you're trying to do won't come out the way you want it to. Let's dive in...
App Links don't work anymore
Facebook created App Links in 2014 as an open standard to solve the limitations of URI scheme deep links. App Links have two main components:
A set of meta tags to add to the web page destination of a standard http:// link. These tags specify the custom URI scheme location of corresponding content inside the native app, and the behavior that should occur if the app is not installed.
A routing engine for use inside apps that support opening links. This engine checks the destination URL for App Links tags before opening it, and then launches the corresponding app or executes the specified fallback behavior.
App Links were supposed to be an open-source standard to change the world, making app-to-app deep linking simple and universal. Unfortunately Facebook has decided they actually don't want that world (it's much better for them to keep users inside the Facebook app — see Instant Articles if you don't believe me), meaning the App Links standard is essentially dead. It's no longer supported on the iOS Facebook app, and Applinks.org isn't even a separate website now.
App Links were not designed to work with email (or essentially any app except Facebook)
Even if it were still supported by Facebook, the App Links standard has a critical flaw: it requires work by both the origin and destination apps. While the meta tags component saw wide adoption, the only major implementations of the routing engine were in the core Facebook and Messenger apps.
To function as you want, where deep linking can occur from links in emails, the routing engine component would need to be implemented in any email app where your link could possibly be clicked. This was never going to happen for apps like the default iOS Mail app from Apple, or the Gmail app, for example.
App Links had no meaningful support for deferred deep linking
Deferred Deep Linking (Deep Linking refers to using a link to open your app directly to a specific piece of content, and Deferred means that it works even if the app isn't installed first) requires a remote server to close the loop. You can build this yourself, but you really shouldn't for a lot of reasons, not the least of which being you have more important things to do. You'll notice that neither of the two App Links components included a remove server to retain link data through install, so deferred deep linking was never properly supported in the core App Links standard. Facebook ads make use of the partial support for deferred deep linking offered by the FBSDK in conjunction with App Links, but this only works when the link/ad is clicked within a Facebook app and the receiving app has the FBSDK integrated.
Deferred deep linking is tough anyway
Moving on from App Links, deferred deep linking is still complicated. URL schemes don't work, because they always fail with an error if the app isn't installed. Apple's newer Universal Links in iOS 9+ get closer in that they at least don't trigger an error if the app isn't installed, but you'd still have to handle redirecting the user from your website to the App Store. You can't pass context through to the app after install with Universal Links, so you wouldn't be able to send the user to the correct item, and they actually aren't supported in a lot of places.
Deep linking out of email on iOS is very hard
Almost all email links involve some sort of click tracking, which is always implemented as a link wrapping redirect. This isn't technically a problem if the user doesn't have your app installed, but if they do, Universal Links don't work with wrapped links. If you're building it yourself, you'll either need to completely disable click tracking in your emails, or accept that deep links won't work there.
Bottom Line
App Links were never the solution you needed. A free service like Branch.io (full disclosure: they're so awesome I work with them) or Firebase Dynamic Links is what you need. Both services support deferred deep linking, out of Facebook or almost any email app. Branch is more powerful and offers far more features, and works with major email senders to offer a solution for deep linked email (the only one on the market today).

Branch.io link opens the installed app from twitter shared link only.It used to work with facebook and email,but no more

I have deep link generated using branch.io shared to twitter, email and Facebook.But clicking on the links in respective social networks works only in twitter, which opens the installed application.Facebook and email are not opening my application installed.Please help.
I'm adding a note here for any who may coming across this ticket while researching similar issues.
Branch links are intended to open their associated apps when the app is installed on a device - or to redirect the user to the app's page on the App or Play Store if the app is not installed. Unfortunately, there are certain applications that prevent Branch links from functioning as intended. Generally speaking, these tend to be apps employ captive webviews. Some apps, Slack for example, allow users to turn off captive webviews and use Chrome or Safari - which solves this issue. Other apps, like Facebook, do not have such a workaround.
Branch's current recommendation for partners using Branch links in Facebook posts is to leverage iOS Deepviews. When iOS Deepviews are enabled, clicking on a Branch link in the Facebook feed will open the Facebook webview with the Deepview. The CTA button in such Deepviews works properly as a Universal Link, opening the app or leading users to the App Store as appropriate. Link information from the original Branch link will be available to the app when opened in this fashion, and Branch attribution and analytics will also work properly. This is the most robust app linking experience that can currently be achieved from the Facebook feed. Although not ideal because of the introduction of an additional Deepview, every other option involves some type of tradeoff.
Branch Deepviews can be enabled at the app level (i.e. for all of the app's links), at the link level, or specifically for Facebook and/or Twitter. Note that enabling this last option (always showing Deepviews only when links are clicked from Facebook and/or Twitter) does require assistance from Branch - partners can reach out to them at: support#branch.io.
On iOS, problems with an app's Universal Linking configuration can also lead to issues like the one reported here and are extremely common. Branch has made a Universal Linking Validtor tool available to help identify and resolve issues with Universal Linking. This tool can be found here: https://dev.branch.io/getting-started/universal-linking-validator/guide/. A troubleshooting guide is also available, here: https://support.branch.io/solution/articles/6000153326-ios-universal-links-troubleshooting-guide.
As a general recommendation, test Branch links and ensure they are working properly from a standard app (like Notes on iOS) before testing in social media posts.

Using Facebook's SHARE button pre-populated texts

I've read on Facebook's policies that in your SHARE button the messenger's can't be pre-populated at all. No matter if it's a little message or a URL. It must be 100% user generated. Which sucks for the iOS and Android developers because the SHARE button is one of the best ways to market your app. However, in the App store i see a lot of big gaming companies and developers using the Facebook share button with pre-populated texts and URLS. Some of these games are in the top 20 downloaded apps. I can't believe Facebook doesn't see that. Maybe they don't care?
Even though it's against Facebook policy, does Facebook penalize developers for posting pre-populated texts even though those texts can be edited before being posted? Any developer have an experience with this?

Cordova ios back button issue

We have developed a mobile application in cordova, after undergoing the application on Apple store 20 days again later, we received a communication in which Apple refuses to submit our application for the following reasons:
Reasons :
10.6: Apple and our customers place a high value on simple, refined, creative, well thought through interfaces. They take more work but are worth it. Apple sets a high bar. If your user interface is complex or less than very good, it may be rejected
----- 10.6 -----
We found the following issues with the user interface of your app:
Specifically, there were no back buttons on social media web views displayed in the app. In order to return to the main app from a community page, such as Facebook or Twitter, the app had to be closed and re-launched.
These examples identify types of issues discovered in your app but may not represent all such issues. It would be appropriate to thoroughly evaluate your app to address these types of issues.
In fact we use links to our pages on social networks, it works well on Android, because it simply click the back button to return the phone. Thing that is not obvious on an iPhone.
Is there a method to solve this? A webview? a popup with a close button ? an HTML5 iframe ?
THANK YOU !
You can use official InAppBrowser plugin (it should have a close button x), or just open these links externally in browser (safari).
In addition, IMHO, you are risking to lose your precious users by opening social links on top of your (or inside) your own app. People can get distracted and just browse away.

How does the Facebook app for iPhone work?

I will soon be writing a native iPhone app for my web site. The web site is already mobile optimised so could potentially just sit in a UIWebView. How does the Facebook app work? Does it do something similar?
If I did use a UIWebView then how would I store user credentials so they don't have to log in every time and how would they upload photos? These are my two main requirements.
The facebook app is going to be a native app. It is different from the mobile website.
There are two things you can do here. If you're going to make your native app just a UIWebView then don't bother! You can have an apple icon embedded in your website which will show if a user bookmarks your website on their home screen. To use this use the <link rel="apple-itouch-icon" href="/apple-touch-icon.png" /> code to do it.
The second is make a fully native app. I know the benefits of a UIWebView app, but the negatives are plain to see. UIWebView apps are tacky, nonfunctional and terrible to use. A mobile website is not an app (unless done very well). You will have links to click, pinch and zoom, awful bounce effects on the web view, links that may possibly allow users to navigate away from your mobile website but within your app. Again, unless done cleverly, you will have to provide browser controls on your app which will make it look like a tacky web browser.
My suggestion would be either stick with your website, optimise it for touch based input, make it a really good mobile website, or create a fully functional native application. Remember not all websites need to have an app to go with it. If your app isn't necessary then its merely counter productive to make an app for it. I don't know about anyone else, but I spend more time in my web browser than I do in apps.
With regards to uploading and auth then a) auth should be done already in your website. A UIWebView is just an instance of safari working within your app, so it will be able to get and store cookies and all sorts. I believe these degrade at the end of the app session, however its easy to pass to the objective c and store in an stored preference. b) uploads not going to work even if you put your site in a web view. You will have to (at some point) hand off to an upload screen in your app which is running natively.
I would suggest that you start off with a simple native app. Let the users log in, upload stuff and do other basic stuff - whatever they can't currently do on your mobile website. Then move on to other things as people ask for them, or as you have the time to make them. You don't have to launch your app with a fully functioning version of you website (in fact this would be silly because the only thing they cannot do on your mobile website on their phone is upload stuff). I'm sure people will request features as your product evolves.
I would take a look at PhoneGap, you can get access to native device features through javascript http://phonegap.com/

Resources