Submitting actions for unreleased iOS app? - ios

The Open Graph "Submit for Approval" documentation page says that the team evaluating the Actions will follow our instructions to trigger them. Our iOS app uploads a document to our backend server, and then posts the action with the unique url that was just generated.
What's the best way to get our actions approved by Facebook, given that they can only be triggered from an iOS app that's not available in the app store yet?

The procedure is simple as stated on the comments.
Create a web app that simulates the same behavior used by the iOS
App to post to Open Graph.
Give that link to Facebook and explain them your case.
In my case a previous version of the app (that didn't use Open Graph API) was already published so I sent them a link to that App explaining that this is an additional feature.
I suggest in your case sending a video of the app if you don't have a previous version already published.

Related

Firebase dynamic link does not navigate to ios app/ appstore from facebook post in iOS

I have to implement navigation from facebook post to my native iOS app or app store if the app is not installed. For that, I have tried Facebook APP Link feature but it did not work. Then I created Firebase Dynamic link and post it on facebook app directly. After tapping on posted link, it shows one pop up saying "Leave Facebook? This webpage is trying to open an app outside of Facebook. Are you sure you want to open it?"
After tapping on Yes, it does nothing. I have cross verified the created link with https://app_id.app.goo.gl/apple-app-site-association It shows associated bundle id, team id, app store id.
Can anyone please suggest me the proper pathway to implement deep linking with facebook post to the app?
Also, can we test deep linking with the app which is not on the App Store?
Thanks in advance.
Facebook doesn't like users to leave their app. They stopped supporting App Links in their iOS app almost a year ago, and have never supported Universal Links (which is what Firebase Dynamic Links uses).
The only workaround is to send users to a landing page with a CTA button, and put another deep link behind that button (on a different domain than the one on which you're hosting this landing page). It's an extra step for the user, but currently the only option. Branch.io (full disclosure: I'm on the Branch team) does this via the Deepviews feature. Dynamic Links currently doesn't have an equivalent, so you'd need to build something yourself.

How to shorten a Firebase Dynamic Link using my own domain name

I'm trying to implement Firebase Dynamic Links in an iOS app. The goal is to have a clean URL for marketing purposes so folks can share links on social media. The idea is folks will share the clean URL that starts with my domain name.
When the app is installed following a click on that link, we want to be able to track who referred the app install by looking at the payload delivered by Firebase. I think this goal is similar to Firebase's use case to convert web users to mobile app users.
An example link I would like to provide for sharing on social media is: http://example.com/my-payload-here
I've tried several cases but I'm not able to get the behavior I'm looking for in any case. Has anyone implemented this successfully before?
Here is my test procedure:
Uninstall the app
Send the link to be tested in an iMessage to myself
Tap the link on my iOS device (not using a simulator)
Install the app from the App Store
Launch the app after download completes by tapping "Open" button in the App Store
Below are my findings:
Short link generated from the Firebase Console (https://xyz.app.goo.gl/ABCD) - Link opens in App Store. I install the app. When I launch the app after installing, the payload is not delivered. If I quit out of the app, go back to the link in iMessage, and launch a second time, the payload is delivered.
Long link identical to the "Long Dynamic Link" from the Firebase console for the link generated in #1 (https://xyz.app.goo.gl/?link=http://example.com/my-payload-here&isi=12345&ibi=com.example.MyApp) - behavior is identical to #1
Short link using my domain (http://example.com/redirect/my-payload-here, configured to 301 redirect to URL in #2) - Opens in App Store. I install. When I launch the app after installing, the payload is not delivered. If I quit out of the app, go back to the link in iMessage, and launch a second time, the link still goes to the App Store.
Some questions I have:
Why isn't the payload delivered on the first launch for cases 1 and 2?
How can we make this launch the app and deliver the payload instead of going to the App Store?
I've also consulted the Firebase flowchart for the deep link in case 2.
Google Firebase team added support for custom subdomains to Dynamic Links.
You can now specify up to five custom page.link subdomains for your Dynamic Links. Short links using these new custom subdomains look like the following example: https://example.page.link/abcXYZ
Firebase Dynamic Link domains assigned on projects couldn't be deleted at this time.( firebase team is working on it.)
You can now whitelist the URL patterns that can be used as a Dynamic Link's deep link (link) or fallback link (ifl, ipfl, afl, ofl). If you define a whitelist, Dynamic Links won't redirect to URLs that don't match a whitelisted pattern.
You can try both of these features in the Firebase console.
This is not currently possible with Firebase. If you need whitelabeled URLs, you either need to build it yourself or use a more powerful link platform like Branch.io (full disclosure: I'm on the Branch team).
To answer your questions specifically:
I have implemented Firebase Dynamic Links in a testbed app and can confirm that linking through installation the first time does work for both long and short URL variants. There is likely something wrong with your AppDelegate config, so we can take a look at that if you want to share code.
Firebase does not support custom domains at this time. In theory (if you can solve the first issue above) you could get this working for first install by using a redirect like you have tried. However, you'll never be able to get it to launch the app with Firebase link data once the app is installed. This is because Universal Links work based on the domain of the link, and don't even request the web destination. Even if you enable Universal Links manually on your own domain, the app will open immediately without ever calling Firebase and the link data will never be set.

IOS Deeplinking- Pass msg from email to your app

Existing user of the app will send email to other user.
Other user may have app installed or not installed on their device.
The email will contain some token. Now I want to pass that token to my app. I have read that by deep-linking, its possible. But how will I handle the case when other user have not installed my app yet in their IOS device.
Any help is appreciated.
What you're describing is called Deferred Deep Linking (Deep Linking refers to using a link to open your app, even directly to a specific piece of content, and Deferred means that it works even if the app isn't installed first).
Unfortunately there's no native way to accomplish this yet on either iOS or Android. URL schemes don't work, because they always fail if the app isn't installed. Apple's new Universal Links in iOS 9 get closer, but you'd still have to handle redirecting the user from your website to the App Store
A free service like Branch.io (full disclosure: they're so awesome I work with them) can handle all of this for you though. Here's the docs page covering exactly how to create email links like you described: https://docs.branch.io/pages/emails/email-partners-list/

iOS: How to get install referrer source

I want to find out how the user installed the app using what source (attribution).
For Android, it's possible to get the referrer's URL, but I haven't found an obvious way for iOS. There are external services such as AppsFlyer (http://support.appsflyer.com/entries/69796693-Accessing-AppsFlyer-Attribution-Conversion-Data-from-the-SDK-Deferred-Deep-linking-) that let's you do this.
I noticed that starting iOS 8, developers could append the publisher id and the campaign id to the App Store URL for iTunes Connect Analytics (http://www.applift.com/blog/new-era-attribution-analytics.html). Is it possible to get the campaign id and the publisher id inside the app? I couldn't find any API changes or resources on this.
Any help would be appreciated. Thanks.
This has to be solved/implemented by Apple. If another company is coming out and saying they can solve this (Branch, etc.), they aren't being completely truthful.
The issue is that iTunes doesn't pass a referrer into the app, so without passing them the iOS IDFA on the click (redirect or out-of-bounds) every tracking method has to rely on Fingerprinting which drops off in attribution accuracy significantly past 24 hours.
This feature isn´t available in iTunesConnect as of yet (there´s no option for 'Analytics'). The only possibility I know is to sign up for the Affiliate Program (https://www.apple.com/itunes/affiliates/) and use the links generated there.
But maybe it will be available in iTC when iOS8 goes live...who knows!
And your second question: no, you can´t get the App Store URL via the iOS SDK. Apple suggests to copy it over from the AppStore in iTunes (via 'copy link'), e.g. https://itunes.apple.com/us/app/youtube/id544007664?mt=8. When you open this link via
[[UIApplication sharedApplication] openURL:]
iOS will automatically open the AppStore.

Submitting Open Graph Actions for an iOS app?

For an iOS app that doesn't exist yet in the App Store, what I should write for "Steps to Reproduce Your Action" when I am submitting the actions for the Facebook Open Graph Api ?
You can submit screenshots of the flow of your app as an acceptable alternative when you have a native mobile app such as this. Specifically, the screenshots should show how the action is triggered within the app and then what the story looks like on a user's Timeline.
Upload the screenshots to some URL and then explain and include the URL with your submission.
Source: spoke to team in Facebook responsible for approving actions.

Resources