The deep link is basically an URI object with the following elements:
Scheme/protocol: syrius://
Authority/host: the action to be performed e.g. stake, deploy pillar, etc.
Query Parameters: the query params that are required to perform the action e.g. amount, duration, etc.
For example, a deep link for staking would look like this:
syrius://stake?amount=100&duration=3
In Syrius we can parse this information accordingly and redirect/display a dialog to the user.
We can even add tracking by adding relevant information e.g. &utm_source=attributeme&utm_medium=website&utm_campaign=znnmarketing, but I wouldn’t add this functionality into Syrius.
We can avoid this by listening for staking events that match the query params (100 ZNN and 3 months) after the user clicks on the deep link. If no event is registered within a time interval, you can assume no conversion was made.
Yes this would require some telemetry within syrius, which we’re trying to avoid.
Zenon.Org landing pages will be able to track deeplink clicks with GA events within its funnels, so we’ll be able to determine the success of a funnel using such methods. No need to add telemetry within syrius.
I know that the syrius scheme is in use with walletconnect, but should a generalized approach be considered for these other functionalities. Instead of syrius, it could be zenon, to allow any client application to implement support.
My point is that if another wallet wants to react to the deep links, it will have to register a protocol handler for the syrius scheme. Naming could be more generic
I had some issues with the deep linking actions integration, but we’ll have a complete implementation in 1-2 days.
// Deep link query parameters
String queryAddress = '';
String queryAmount = ''; // with decimals
int queryDuration = 0; // in months, for staking
String queryZTS = ''; // ZNN and QSR are defaults
String queryPillarName = ''; // for delegation
Token? token;
Parameter names are listed below. You can combine them in any order to create a valid deep link.
'amount' // the address with decimals
'zts' // the ZTS to transfer custom tokens; default ZNN/znn/QSR/qsr
'address'
'duration' // the duration in months, required for staking
'pillar' // the Pillar's name required for delegation