I am using iOS 9.3.3 and have the latest version of Facebook installed.
I have my app installed under the Ad Hoc provision. I have tested my URI scheme with plain links in safari and my app opens perfect and deep links how I want.
However when I try a link in the Facebook App it never opens my App, just loads the page in the Facebook webView. I have double checked my meta tags via https://developers.facebook.com/tools/debug/og/object/ I can see all the needed meta tags are there e.g. al:ios:url, al:ios:app_store_id, al:ios:app_name and correct URI scheme supplied.
I have tried setting the web fallback option to false:
<meta property="al:web:should_fallback" content="false" />
Now when I click the link inside the Facebook app I get an install app prompt even though I have the app installed (under Ad Hoc). Which begins to make me think Facebook thinks it's not installed as it's an Ad Hoc install and not from the app store?
If I go to the App Store it also says install, not open etc.
Can we test with Ad Hoc installs? I am going a bit mad with trial and error debugging, but obviously want to check if it should or should not work with an Ad Hoc install before I just chance it and publish to the App Store.
Has anyone had experience with this? Or is something majorly wrong perhaps.
Just to note, I have it fully working with the Android version of my App.
Welcome to the world of Facebook :). You've got it exactly right: Facebook has completely broken their own AppLinks standard on iOS, and there have been multiple open bugs about it for many months. It still works on Android currently, but that's about the only place.
The best workaround currently is to open the webview (as you are doing) and then allow the user to trigger the app deep link from within there. At Branch.io, this is one of the primary usecases for our Deepviews feature.
Related
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 have added my URL scheme to my .plist.
I have manually tested the scheme in Safari and confirmed that it launches my app just fine.
I have generated a hosted app links link that uses the scheme.
Nothing except my own URL was entered when creating the hosted app link.
When I tap the link on my phone (with my app installed) it takes me to a page with the text You have reached an implementation detail. It's pretty obvious that Facebook didn't even try to use the URL that I had provided when creating this hosted app link.
I should add that I have successfully created other hosted app links moments before that managed to redirect to webpages and to appstore, so there's nothing wrong with mobile Safari.
Where to go from here?
Edit: My app is, of course, in development.
I was having the same issue until i updated my app settings in the facebook developer site.
In the image for #1 you enter the prefix (even though it says suffix...) for your url scheme (ex: if you use myapp://testing/here, then enter "myapp" into the field)
make sure #2 is flipped to yes
Facebook iOS Settings
This is an old thread, but after spending some time on this I realized that the https://fb.me/... links only open from within the Facebook app on the device. They will not (and are not intended) to open from a web browser. After posting the link in a Facebook group I was able to successfully open my app with it.
I am developing an ios app and trying to allow the user to connect to their LinkedIn account.
I am using the steps found in
https://developer.linkedin.com/docs/ios-sdk-auth
where I
Registered my app with LinkedIn to get the application id.
Updated my info.plist with the *li{application id}* entries for URL Schemes
Called LISDKSessionManager.createSessionWithAuth() to start the login process.
However, this only opens up the LinkedIn app on my iPad, but does not show me which permission I had requested nor redirect me back to my app. I am at a loss to if this is the intended behaviour or am I missing a step.
Note that the sampleapp provided by linkedin also does not show me the page with a list of permissions requested or redirect me back to my own app.
It appears that the LinkedIn app has an iPad-specific bug that prevents it from returning to other apps after createSessionWithAuth: is called, even when all credentials are correct.
(I had to wait for the delivery of a physical iPhone to test my hypothesis, as there is no way to log in like this on a simulator).
Update
My answer was with regard to the 1.0.2 sdk, which also had problems with all iOS 9 devices. The iOS 9 problems were fixed with the 1.0.4 sdk, but the iPad problems remain.
Found the solution. For me, it was about setting our bundles right:
On https://www.linkedin.com/developer/apps/xxxxxx/mobile, make sure that your 'iOS Bundle Identifiers' is the same on your app. Plus, click on Update! I just added and 'forgot' to save them.
I was implementing optimized integration for Facebook Messenger Platform for my iOS app using the SDK and am facing a few issues. When I share content from my app to Facebook Messenger, I always see the "Install" link alongside my app link, even though the app is installed. Also, I never see the "Reply" button on the content shared from my app, just Install.
Both the sender and receiver have Admin access to the corresponding Facebook app. (The FB integration features are currently in dev, even though the app is live).
Followed all the sequence of steps mentioned in the documentation - https://developers.facebook.com/docs/messenger/ios
FBSDKMessengerURLHandler callbacks are implemented for FBSDKMessengerURLHandlerReplyContext and FBSDKMessengerURLHandlerOpenFromComposerContext as well.
Not sure how to proceed to test the features. Anybody else faced the same problem? Any help would be much appreciated.
I had the same issue. Find any valid iOS App Store ID and fill it in on the developers.facebook.com page (near where you enter the Bundle ID info).
Relaunching Messenger made the Reply button start to show up on new messages.
The developer community at Facebook is pretty awful.
I'm trying to follow the convention described in this answer to manage both an app store and enterprise version of the same app but am seeing some really interesting behavior.
As described in the linked answer I've created a new scheme, defined a new 'Enterprise' build configuration and set up the enterprise scheme to use a separate and new bundle id. Both schemes point to the same target which relies on the new build config to toggle behavior. I am successfully able to generate an enterprise build and distribute it over-the-air, however, when I install both versions of the same app on the same simulator or phone the enterprise version actually runs the app store version of the app. Any changes that I make that are enterprise specific do not get reflected. Even when I close the app - the iOS7 animation back to the home screen animates back to the app store icon - not the enterprise one.
Obviously I want to be able to maintain these as separate versions that run independently. I feel like I must be fundamentally misunderstanding targets and schemes to get this kind of behavior. Any help would be greatly appreciated.
Pretty interesting bug.
What was happening was:
We were using facebook login to authenticate with our own services on the enterprise version.
The FB SDK would take over and kick out to a web/view or the fb app, depending on it's own logic. Critically - we were using the same facebook "app" configured on their developer site.
When fb returned it would call the url scheme denoted by fb{app_id}
iOS decided (consistently) to open the app that was first-installed that would respond to that URL scheme. In most cases this was the app-store version NOT the enterprise version.
The solution for this - maybe obviously at this point - is to use two different facebook apps so that iOS can route the returning OAuth response to the proper app. In keeping with the answer that I was originally working off this is best done by...
Creating a new user defined build setting entitled FACEBOOK_ID
Use your production app id for Debug and Release, while using the new id for Enterprise.
In your info.plist, change the value of your FacebookAppID to be ${FACEBOOK_ID}
In your URL Types, change the facebook scheme to be fb${FACEBOOK_ID}
This should successfully route your facebook login.
Keep in mind this is a general potential bug for ALL deep links - not just facebook login.
It is easier to use URL Scheme Suffix instead of separate Facebook apps. With URL Scheme Suffix you can add suffixes to the bundle id, for example: com.example.App.live and com.example.App.beta. That way the Facebook url scheme knows which app to open after authentication.
See the documentation on Facebook's developer site for more into: https://developers.facebook.com/docs/ios/troubleshooting#sharedappid