How to handle URLs from Facebook Open Graph actions in iOS app - ios

I'm building an iOS app that has Facebook open graph actions, and when I post an action on Facebook, on mobile app, I'm getting a link to my mobile app's ID on the App Store, which is not available yet. As a placeholder (otherwise Facebook doesn't save my settings), I've put an ID of another app that I have. Whenever I tap an Open Graph story on Facebook from my new app in Facebook iOS app, An App Store page of my previous app opens. I need the functionality to handle open graph action taps from Facebook iOS app before I submit my app to App Store. How can I test URL handling functionality in a such scenario?
Here is how my Facebook Native iOS App dashboard looks like:
Bundle ID matches my app's ID in my app exactly. iPhone/iPad App Store ID links to one of my previous apps, else Facebook doesn't accept my settings when I click Save button, complaining about app not yet being available on App Store. Facebook login and deep linking are both enabled, and URL schemes are registered the same way (the one starting with fb continues with my Facebook app ID) in the app bundle too. But still, my app doesn't launch when I tap a story on Facebook mobile app. Instead, a popup to install the app with the ID that I've specified launches (though, weird enough, I have that app installed too).

Facebook documents this here: https://developers.facebook.com/docs/ios/link-to-your-native-app-ios-sdk/
Just look under How to handle deep links to provide a more relevant user experience

Related

How to call action sheet from Facebook iOS app

When I tap on some Sound Cloud content on FB timeline, FB iPhone app shows Action Sheet with these options:
Open Web page
Install Sound Cloud app
How do I call action sheet on Facebook content in a Facebook iOS app? Was that a special feature FB gave Sound Cloud?
You may check Facebook developer documentation :
One of the most interesting aspects of sharing to Facebook from your
app is that when people engage with the news feed stories posted from
your app, those stories can send people to your app or your app's App
Store page, driving traffic and app installs. You can implement this
behavior using App Links.
When you set up App Links, you can control what happens when someone
taps on one of the links shared through your app or on the story
attribution (name of your app) in one of the Open Graph stories shared
through your app. If your app has web content, people will be
redirected to a web view of that content. If your app is installed
there may be an open button that launches your iOS app. if your app
isn't installed, there will be an install option to direct people to
your app's App Store page. If your app is mobile-only (no web content)
then tapping the shared link will either direct people to your app (if
it's installed) or to your app's App Store page (if your app isn't
installed)
App Links on iOS
Sharing on iOS

AppLinks in iOs app How to pass data to a freshly installed app

If I have a iOs app that has multiple content that a user can access, can I do the following:
Allow a user that is currently consuming a content (stream radio/some streamed video) to post from the app to his Facebook page "I am currently viewing X using APP".(this is clearly doable)
Another user that has the app installed can click the link will be redirected from the Facebook app to my app (o app links seem to be the solution in this case). If the user that clicks the link does not have the app installed Facebook will ask him to install the required app. I understand that all this is possible using Facebook iOs SDK and App Links.
My question is after the user installs the app how will I direct him to the original content in the link (X)? Is this handled automatically by Apple/Facebook? Or will I need a backend server which will track what the user tapped on before downloading the app?
Can the same be done from the native iOs twitter app?

How does facebook call the native iOS app?

I want to know how does facebook native app call my native iOS app.
Facebook requires App bundle id, app store id, and url sufix (optional). What I want to know is: how facebook process these information and open my native app?
It uses custom URL schemes.
What you basically do is define a "url" for your app so you can access it from anywhere in the OS (using that URL). What FB does, when it opens Safari to authenticate you for example, is specify YOUR app's custom url as a callback URL, so when it finishes, it calls that url and that redirects it back to your app.
You can test this by setting a custom URL for your app, firing up Safari, and typing that url. It will jump straight to your app.
You can read more about it here.
You don't need to set any of that to have the Facebook app send you back to your own app. The SDK does that automatically.
Setting the app bundle ID in your Facebook app (in the Facebook developer center) allows the Facebook app to send the user immediately back to your app if they've already given permission to your app before. It's just a nice feature, but it's not necessary for everything to work.

Facebook App Requests aren't shown on iOS devices?

I've sent an app invitation from an iPad app to a test Facebook account via Facebook's API. When I login to the test account on my PC, the app request is there.
When I login to the test account on my iPad (either via Safari or via the Facebook App), I can see the number "1" next to the App Centre tab, but when I click it and go to the App Centre, there's no request. In fact, I can't see any App Centre areas dedicated to requests on Facebook for iOS - there's only Social Picks and Top Apps. Any explanation for this?
This is caused by an incorrect configuration on the Facebook app setting page. When you are setting up the app, you need to make sure the following is set correctly.
Go to developers.facebook.com then select "Apps". Edit your app and fill in the following..
iOS App Bundle (dont think it's essential but fill it in, this the bundle id from Xcode (com.companyname.appname))
iPhone/iPad App Store ID - This is ESSENTIAL, one of these must be filled in with a valid app store ID. You get this when you create an app with iTunes Connect. If you create an app, and fill in the details right up to the point where it asks you to submit the binary, it will generate what Apple refers to as an Apple ID (or iTunes Id?). It's just a long integer value. It doesn't have to be for the corresponding app, if you already have apps in the app store just log in to iTunes connect and use an existing one for testing.
Configured for iOS SSO - Enabled
Configured for Deep Linking - Enabled
The only functionality you get from Facebook when a user clicks an app notification on iOS is the user being redirected to the app, if installed, or to the App Store if not. Also if you want your app notifications to show up on desktop, you'll need a Canvas URL under the "App On Facebook" section.
In my tests I had to have a canvas URL to get iOS notifications working, but I'm not sure if this is a bug with Facebook or intended behaviour, so if it doesn't work with just iOS enabled, enable app on Facebook too and stick in a random url if you don't have one.
I just figured there can be another reason for this symptom: if your app has location restriction (only available in certain countries), the user who receives the request has to be in that country (e.g. I had to connect with mine via GeoEdge).

How to prevent auto-launching of our iOS app from links in FB iOS app?

We have an iOS app that publishes certain activity to Facebook that contains links to pages on our domain. Our intention is for friends to click on those links and view them as webpages.
However, when you click on links in these published stories in the FB iOS app, it's auto launching our app instead of going to an embedded Web View or kicking out to safari.
Note: We still want to have single sign on (SSO), so just want to change the behavior of clicking links in published stories.
To clarify, this is what I'm talking about:
My app is able to publishes http://foo.com/123 into the FB newsfeed for a particular user that opts in.
That person's friends see the link, but when they click it, it just goes to http://foo.com/123 in the browser instead of launching my FOO app. This is because my app doesn't yet handle incoming context from FB iOS app.
I still want FB SSO to work from my FOO app. That is, when clicking on FB sign in in my FOO app, it jumps out to the FB iOS app (if installed) and does a single sign on and redirects back to my app. IOW, I don't want to break this authentication scenario that currently works.
What setting in the FB developers App Settings controls this? It's not clear from the documentation. I see sections for Native iOS app and Website which I currently have set but it's unclear which sub-setting affects the behavior in question. Also, it's not clear even if I was to find the setting, can I affect it without affecting SSO.
The setting you want in the Facebook App dialog is under the iOS Native section (see the screenshot below) - set both the highlighted sections to Disabled.
This won't affect Facebook login/SSO in the app, so you'll still be able to do the OAuth dances.

Resources