Opening iOS App from Custom URL in QRCode - ios

I want to open my app from a URL from QRScan , which is common when your custom URL looks like this "myappname://productid". my problem is that I want my app to open from a Website type URL which is something like this "https://myappname.com/productid"
How can i achieve this ?

This can be achieve by using universal links. For simplicity and high level implementation I will recommend you to use Firebase's dynamic link product. It is very well documented and more over its free to use.
Before you began I think you might need apple developer account.
Steps
Create a project and an app on the firebase console.
From the left menu under the Grow section select dynamic links.
Create a domain as per your preferences e.g. https://yourapp.page.link
Now goto apple developer portal and edit your app id and enable associated domains for it.
Now open and select your xcode project under the project navigator section on the left side.
Then goto signing and capabilities section and click on add capability
Add the associated domains in you capabilities.
Then Add your created domain in it like this: applinks:yourapp.page.link
Make sure to add your team id and app id in the firebase console.
Now depending on your requirement you can create fixed dynamic link through firebase console or alternatively you can use their api to create links. in case your link is user specific or you want to add unique info in each link.
Now when someone click on the link depending on the platform the link behave accordingly as per the parameters provided during the link creation process.
These are just high level steps for detailed implementation and available options you can always refer to the dynamic link documentation

Related

Firebase Dynamic Link isn't handled in ios app

I am using Firebase Dynamic Links to handle deep linking into my ios app (from external links) and this works fine.
My issue is when I try to handle a dynamic link that has been launched from inside the app. In particular, I am using Firebase in-app messaging with a dynamic link as the action on the card button.
I have added the capabilities and URL scheme to Xcode. The documentation states that I use the Firebase app bundle as the URL scheme value. The only thing that isn't clear is whether this means the Firebase project id or the dynamic link domain which is the one set in the capabilities tab as the applinks: value.
When I tap on the button to launch the dynamic link it does recognise it as a dynamic link (because it doesn't just open my hosting domain in the browser), but it redirects to the browser first and asks me if I want to open the app (that I just came from).
Does anybody know how to configure this behaviour so the links don't ask you first? Would this then immediately handle the link in the app?
UPDATE
I was able to get the app to handle the dynamic link immediately in the app by skipping the preview page. You do this by manually constructing the link and setting the efr=1 parameter. This article explains it all: https://firebase.google.com/docs/dynamic-links/create-manually
BUT - although my app was handling the deep-link, it STILL redirected to the browser where it attempted to load the web.app domain from hosting.
I feel this could be something to do with the URL types setting in Xcode which if set properly should prevent it from trying to handle links in the browser.
UPDATE UPDATE
For some reason, this just stopped redirecting to the browser and I have no idea why. I watched a Firebase video and the guy did mention something about iOS being weird, and that Safari can break dynamic links and he recommended always testing them from the notes app. Weird. I wonder if something got pwned somewhere. I will write up an answer. đź‘Ť
Not entirely sure why, but this just started to behave. The dynamic link I am using in the in-app messaging campaign is the long-form URL with the efr=1 parameter to skip the preview page in the browser.

How to configure deep-linking in iOS with Firebase Dynamic Links?

I'm trying to configure Firebase Dynamic Links into my iOS project and I'm having trouble interpreting the documentation here and how it needs to be adapted to my specific scenario.
In particular, when creating a deep link manually, I don't know what I should put instead of your_deep_link in the following example:
https://your_subdomain.page.link/?link=your_deep_link&apn=package_name[&amv=minimum_version][&afl=fallback_link]
They say it should be http or https, so I used a generic https website URL for the marketing page of my app. But then in XCode, in this doc there they say:
In the Info tab of your app's Xcode project, create a new URL type to
be used for Dynamic Links. Set the Identifier field to a unique value
and the URL scheme field to be your bundle identifier, which is the
default URL scheme used by Dynamic Links.
So nowhere do I specify that my app should be open instead of the marketing website when loading on a device where the app is already installed. And I think that's why when I try to open this link in my iPhone's browser, it just loads the page there in the browser:
https://debugapproofreferences.page.link/?link=https%3A%2F%2Fapproof.derbigum.com%2Freferences%2Fleads%2F5b98ca7a-18f7-4ffa-8dbe-aed51b94f18b&apn=com.derbigum.approofreferences&ibi=com.derbigum.ApproofReferences&isi=1321450315
Note that I have 3 variants of the same app depending on the environment (Debug, Beta, Prod), so associated domain is set to applinks:$(DEEP_LINKS_DOMAIN), and DEEP_LINKS_DOMAIN is a user-defined setting depending on the environment, and for the Debug environment I'm working on right now, DEEP_LINKS_DOMAIN=debugapproofreferences.page.link.
Obviously I'm missing something here, and it's the first time I ever try to configure deep links so I'm a little lost.

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.

Branch.io Generate the link at web end and then retrieve in app

Looking to integrate the branch.io in such a way that the admin gets the deep link at web end where he adds the content. And then he manually post the link to some social media say Twitter,Facebook etc. then user clicks on that link and it will take the user to app or app store.
Is it possible, please guide how to handle this. I am quite confused about branch.io. As far i understood branch.io creates the link send via sms and user clicks and gets redirected to app or app store. Is my requirement valid? How to achieve this please guide. Already spent more than a half day on it.
(Full disclosure: I am on the Branch.io team)
This is actually a very common Branch use case, so it's fairly straight forward to implement.
1. Sign up for Branch
Easy step!
2. Integrate the SDK into your app
This is a fairly simple process that should take less than half an hour, and the latest step-by-step docs for doing this are always at the link above. I won't include the full instructions in this answer because Apple creates new roadblocks fairly regularly, and we often have to make small tweaks to the guide.
After you complete this step, any time a user opens a Branch link associated with your app, either your app will launch (if installed) or that user will be sent to the App Store page to download it.
3. Create your marketing link
The link above takes you to the Branch dashboard. From that page, you can create a new Marketing Link, and use the Deep Link Data section to specify a key/value pair. For example, you can set a key of content and assign it the value mycustomvalue:
When your app launches after a user opens this link, the content : mycustomvalue pair will be magically returned to you.
4. Configure Deep Link Routing and Universal Links.
These methods are what actually call back to the Branch API every time your app opens, returning the content : mycustomvalue pair that you encoded in the link. You can do whatever you like with these values, but here are two common approaches:
Route the user to the content that you specify corresponds to mycustomvalue.
Use the values directly to display something customized (for example, if you encoded content : You've been sent a special invitation!
5. Share the link wherever you like!
The link you created can be put anywhere. Email, Twitter, Facebook, paid Google Ads, etc.

Google Analytics showing message: Bad Event Tracking Code

Google Analytics is showing message "Bad Event Tracking Code" for several my projects. Even for mobile app profile too.
"The message: "The Landing Pages report has a (not set) entry. Verify that tracking code for property (my app name) sends a _trackPageview hit and that it does this before sending any events."
Has somebody got similar issue?
and how to solve this issue because I read about this and can't figure out what is wrong.
I think an issue with you tracking code that have to generate with you google analytics account Here it is step by step description about how to Setting Up Google analytics for Your App
step:1
Go to www.google.com/analytics. The homepage should appear like so:
step:2:
If you do not have a Google account, you will need to create one now by selecting Create an Account on the top-right side of the page.
or sign in in this page.
Once you have logged in, you simply need to click the Access Google Analytics button on the top right.
Step:3
The first screen you see lists all of your accounts.
If you have clients, typically you will have one account set up for each.
If you are new to Google Analytics you will only have the first account you set up.
step:4
Select the Admin view on the top right.
To see the main dashboard area for managing your Accounts, Properties, and Views.
step:5
Select the Property drop-down and click on the Create new property item, like so:
step:6
Google then asks you to submit the details for the app you want to track.
Make sure to choose Mobile app at the top and enter the information as required.
In the Setting up your property section, enter "Cloud App" for the App Name.
step:7
After accepting the terms of service, the website takes you to a page with your tracking ID and the download link for the SDK.
Before you do anything else, write down your app’s Tracking ID, which will be of the form ID UA-XXXXXXXX-Y.
Keep the ID handy, because you will need it soon. For full of description please visit raywenderlich blog
I have received similar errors. However, after testing and checking all the tags, all seem to be in order. I read on PBS that these are false positive alerts, where the errors in fact in correct.
http://spiblog.pbs.org/2014/08/the-art-of-analytics-google-analytics.html

Resources