IOTA deep linking: A proposal for standard deep links to increase IOTA wallet UX
The full article was originally published by Eric Hop on Medium. Read the full article here.
This article explores how exactly we can use deeply linking to invoke specific functionality in the IOTA wallets in a standardized way.
What are deep links?
Deep hyperlinks are only urls that allow you to go directly to a particular page by simply clicking them. Just like the one you used to access this page. You probably didn’t go to medium.com very first, before browsing to my content. Rather you clicked on a web link that delivered you as of this page straight.
Of course many people are so used to the when browsing the web they don’t also call it strong link any longer. It’s only a link. But things aren’t so straight forward if you are utilizing an app, as an IOTA wallet, and desire to use a deep connect to invoke a specific efficiency of the app.
Initially I began defining an url scheme particular for IOTA. I believed it will be really cool in order to make use of an iota: url scheme to invoke particular wallet functionality, by just specifying iota://cheque, or iota://donate for instance. But when doing proof concept on Android and iOS I rapidly encountered some hurdles that produced this iota: scheme infeasible to state the minimum.
I am not likely to rehash each and every problem here. There’s an excellent article that provides an overview of all problems and differences between techniques and also OS versions. Suffice to state that the biggest hurdle may be the fact that most apps, actually browsers and email apps, gained’t recognize the iota: urls as hyperlinks, so they received’t highlight them as clickable. Properly dang!
Universal Hyperlinks to the rescue!
Luckily I furthermore found workarounds, although less sophisticated. Since normal http: and https: urls are acknowledged by most apps (yes, also by browsers and e-mail apps), I made a decision to us the idea of Universal Hyperlinks. A universal hyperlink is merely a normal internet url that, when clicked, will undoubtedly be intercepted by the operating-system and approved to the app that authorized the universal link rather than the browser. Furthermore, Apple company in its infinite wisdom made a decision to implement a far more secure version of General Links, requiring the assistance of the host of a preexisting web domain.
Therefore now instead of utilizing an iota:// prefix I am using http://iotalias.link/ as prefix. That will turn the good examples from the previous paragraph in to the following: http://iotalias.link/cheque and http://iotalias.link/donate. It’s just a slight modification nonetheless it makes an environment of difference in simple implementation. In fact it is still very readable. And yes, I acquired to join up the iotalias.link domain in order to make it work upon iOS.
Standardizing the hyperlink format
Now that people have a way that is proven to work it’s time to specify the particular format. Having a typical makes it easier for various wallet implementations to respond properly to exactly the same deep links. We are able to identify a variety of actions, that are powered by action-particular targets, and can have different types of optional parameters.
That implies that an IOTA deep hyperlink has the subsequent format:
An action is normally denoted by way of a verb. It should provide a very clear indication of what the motion is meant to do. Actions might have synonyms that perform the same action, but give a much better indication to the readers of its intended purpose. Types of this kind of synonyms are ‘spend’ and ‘donate’. Needless to say a donation is really a payment as well, however the intention behind it really is much clearer in this manner:
A target may be the main object mixed up in context of the actions. In the action illustrations above the target is actually an IOTA alias. But additional target examples could possibly be: a 90-tryte IOTA tackle (which includes 9-tryte checksum), or an 88-tryte IOTA subseed (which includes a 7-tryte checksum), or a contact address. It totally depends upon the context of the activity of course. However it is a good notion to standardize targets so that different target varieties are often distinguishable and/or parsable:
– An IOTA alias:
– An IOTA deal with:
The parameter is any (optional) information that could be worth focusing on or interest to the motion that is taken on the prospective. Parameters are even more influenced by the context, because they will not only be action-specific, but additionally specific to the mark type. For a few cases consider the examples above. Much like action names and target forms, you want to standardize the parameter brands and types in order that it becomes an easy task to predict what name to utilize for what purpose. Parameters could be optional, in which particular case a default worth is assumed. Parameters may also be non-regular, and the wallet will try to store and display most of these as properly.
Take note that the wallet will most likely show a dialog requesting any missing data or even for confirmation by an individual. This is good practice as the deep links that an individual clicks might have been generated by way of a malicious entity. Which means default action of this type of dialog should always become to cancel the action.
Any actions that results within the transfer of money from the user’s wallet ought to be subsequently accompanied by a confirmation dialog that asks an individual to enter his PIN before continuing. Needless to say here the default action ought to be to cancel the dialog as well.
There may of course be certain activities that don’t require further user interaction. A good example of such an action is usually redeeming an IOTA donation cheque (any funds to arrive will gladly be used :-).
Standardized focus on sorts
We will identify numerous target types that people will encounter regularly and repair their format and identifying functions. All target varieties are made of lowercase letters (a-z), digits (0–9), dash ( – ), dot ( . ), underscore ( _ ), at-indication ( @ ) and dollar-indication ( $ ). Any uppercase letters will undoubtedly be converted to lowercase before more processing.
A good IOTA alias comprising maximal 27 personas that identify the alias title, followed by a period, accompanied by minimum 8 beginning tryte figures of the hash value of the alias. The latter can make the alias special and unforgeable. More hash character types make the alias better but less an easy task to remember. See my IOTΛlias article for additional information.
Private aliases use the complete 27 alias name heroes and so are completely random tryte personas. They are generated and utilized between wallets and usually not for human consumption. Open public aliases work with a human-readable string as high as 27 figures.
An alias name may contain the target type character types, but remember that any non-alphabetic characters will undoubtedly be ultimately be replaced by 9’s, to create them a tryte value. Illustrations:
Private alias: rlhdvdtqjotx9dvogislpwxpibz.iwois9wh
Public alias: donations.medium.com.katshvbs
Public alias: eric.hop.klab9nxa
An IOTA address, encoded because the 81-tryte hash this is the actual address and also a 9-tryte checksum hash. An tackle can therefore be uniquely recognized by the fact that it is usually 90 tryte characters. Illustration:
An IOTA subseed, encoded because the 81-tryte hash this is the actual subseed and also a 7-tryte checksum hash. A subseed can as a result be uniquely determined by the fact that it will always be 88 tryte characters. Instance:
A regular email. The email address could be uniquely identified by the truth that it always includes a single at-sign ( @ ) not to mention otherwise obeys the guidelines for valid email addresses. Illustration:
We will show several predefined actions with achievable synonyms and define what target types and parameters may be used with them.
Setting up IOTA serious hyperlinks
Here’s how to create IOTA deep links on cellular devices.
Android deeply hyperlinks
Select the activity you intend to end up being activated by IOTA heavy hyperlinks. In the manifest for the app add the next to the <action> tag:
<intent-filter> <information android:scheme="http"/> <data android:web host="iotalias.hyperlink"/> <information android:pathPattern=".*"/> <action android:title="android.intent.action.Watch"/>
Within the onCreate approach to your activity add the next code to get the deep hyperlink url:
last Intent intent = getIntent(); if ("android.intent.action.See".equals(intent.getAction()))
final Uri uri= intent.getData();
final String url = intent.getDataString;
// parse either uri or url depending on your preferences
// to process the IOTA deep link
That’s all there’s to it on Android! Make sure to have the experience that handles the deep hyperlink do the same type of initializations your landing exercise would ordinarily perform. You can even make your landing action do dual duty and also have it procedure the IOTA deep hyperlinks.
iOS strong hyperlinks
To avoid doubling this short article in size I’ll simply make reference to this excellent article that explains exactly the same hoops I had to jump to obtain it to focus on iOS. It also includes a step by step guideline on how best to implement the deep hyperlinks on iOS.
Don’t forget to displace his sample domains with iotalias.link. Not to mention you will need your personal app id and everything. Additionally, you will need to get in touch with me to include your app to the hosted json document on http//iotalias.hyperlink. The latter is really a drag. I experienced hoped to create this a regular and fully decentralized, but Apple company forced my hands in this.
By defining a typical for IOTA deep hyperlinks I hope to improve user acceptance of IOTA by giving a way to click on a web link to invoke IOTA-particular app functionality.
IOTA deep linking: A proposal for standard deep links to improve IOTA wallet UX was originally released in IOTA Demystified on Medium, where folks are ongoing the conversation by highlighting and giving an answer to this story.
The development of supporting IOTA Tokens on the Ledger Nano Hardware Wallets has progressed very far and IOTA will be able to be stored and managed on the IOTA Hardware Wallet.